|
cuDDL
|
#include <cuda_runtime.h>#include <cub/device/device_radix_sort.cuh>#include <cub/device/device_scan.cuh>#include <cub/device/device_segmented_sort.cuh>#include <cub/device/device_select.cuh>#include <cub/device/device_transform.cuh>#include <cuda/algorithm>#include <cuda/buffer>#include <cuda/iterator>#include <cuda/memory_pool>#include <cuda/std/cstdint>#include <cuda/std/functional>#include <cuda/std/optional>#include <cuda/std/utility>#include <cuda/stream>#include <algorithm>#include <array>#include <atomic>#include <bit>#include <cstddef>#include <functional>#include <limits>#include <map>#include <memory>#include <mutex>#include <optional>#include <span>#include <string>#include <type_traits>#include <utility>#include <vector>#include <cuddl/detail/hash.cuh>#include <cuddl/detail/kernels.cuh>#include <cuddl/detail/pinned_pool.cuh>#include <cuddl/detail/reference_deltas.cuh>#include <cuddl/detail/register.cuh>#include <cuddl/device_span.cuh>#include <cuddl/error.hpp>#include <cuddl/pairwise_counts.cuh>#include <cuddl/reference_index.cuh>Go to the source code of this file.
Classes | |
| struct | cuddl::score_compatibility |
| Construction parameters of compatible score rows. More... | |
| struct | cuddl::reference_database_metadata |
| Recorded metadata for an immutable reference database. More... | |
| struct | cuddl::reference_search_result |
| Stable reference ID and exact query-relative bucket comparison counts. More... | |
| struct | cuddl::batch_search_result |
| Stable query/reference IDs and their exact query-relative bucket comparison counts. More... | |
| struct | cuddl::batch_result_tile |
| Non-owning view of one batch-search tile's results. More... | |
| class | cuddl::host_batch_results |
| Host copy of a batch_result_tile holding only the passing results, packed in query-major, reference order, in pinned memory; tile views it. More... | |
| struct | cuddl::batch_search_requirements |
| Caller-owned storage requirements for one bounded query tile. More... | |
| struct | cuddl::search_options |
| Matching-bucket threshold, independent of whether an index accelerates the search. More... | |
| struct | cuddl::all_to_all_shard |
| Part cuDDL of count disjoint parts of an all-to-all search. More... | |
| struct | cuddl::detail::sparse_index_key |
| struct | cuddl::detail::sparse_reference_id |
| struct | cuddl::detail::sparse_segment_offset |
| class | cuddl::all_to_all_tile_queue |
| Thread-safe source of the all-to-all tiles one process searches. More... | |
| struct | cuddl::all_to_all_tile_queue::tile |
| class | cuddl::detail::reference_database_view< K, BucketCount, Layout > |
| Non-owning, trivially copyable view of one selected reference-row backing. More... | |
| class | cuddl::reference_database< K, BucketCount, Layout > |
| Move-only owner of one immutable contiguous reference database. More... | |
Namespaces | |
| namespace | cuddl |
| Batch operations over contiguous device rows. | |
| namespace | cuddl::detail |
Typedefs | |
| using | cuddl::detail::device_scope = ::cuda::__ensure_current_context |
Makes stream's device current for the enclosing scope and restores the previous context on exit. | |
Enumerations | |
| enum class | cuddl::index_storage { cuddl::automatic , cuddl::dense , cuddl::sparse } |
| Dense offsets favor query latency; sparse sorted keys reduce index memory and build time. More... | |
Functions | |
| Result< void > | cuddl::download (batch_result_tile const &tile, cuda::stream_ref stream, host_batch_results &host) |
Copies a device tile's passing results into host's pinned buffers, growing them only when needed, and synchronizes stream. | |
| Result< host_batch_results > | cuddl::download (batch_result_tile const &tile, cuda::stream_ref stream) |
| Copies a device tile's passing results to new pinned host memory; see the overload that downloads into reusable host_batch_results. | |
| template<typename F > | |
| Result< void > | cuddl::for_each_passing (batch_result_tile const &tile, cuda::stream_ref stream, F &&f) |
Calls f on the host with every passing result of a device tile, query-major and in reference order; synchronizes stream. | |
| template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout> | |
| Result< void > | cuddl::detail::validate_score_compatibility (score_compatibility const &compatibility) |
| template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout> | |
| Result< void > | cuddl::detail::validate_non_indexed_score_compatibility (score_compatibility const &compatibility) |
| template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout> | |
| Result< void > | cuddl::detail::validate_indexed_score_compatibility (score_compatibility const &compatibility) |
| constexpr uint64_t | cuddl::detail::indexed_cell_count (score_compatibility const &compatibility) noexcept |
| constexpr uint64_t | cuddl::detail::indexed_posting_count (uint32_t reference_count, score_compatibility const &compatibility) noexcept |
| constexpr index_storage | cuddl::detail::smaller_index_storage (uint32_t reference_count, score_compatibility const &compatibility) noexcept |
Storage needing fewer device bytes for reference_count references; dense on ties. | |
| uintptr_t | cuddl::detail::align_up (uintptr_t address, size_t alignment) noexcept |
| constexpr uint32_t | cuddl::detail::batch_query_tile_size (uint32_t reference_count, uint32_t query_count, uint32_t tile_limit=batch_query_tile_count) noexcept |
| constexpr uint32_t | cuddl::detail::all_to_all_tile_queries (uint32_t reference_count, uint32_t parts=1U) noexcept |
| Query rows one all-to-all tile compares: about 2^25 pairs, and at least batch_query_tile_count. | |
| uint32_t | cuddl::detail::external_batch_query_limit (uint32_t reference_count, cuda::device_ref device) |
Query rows one external batch tile may hold on device. | |
Variables | |
| constexpr double | cuddl::detail::index_pair_fraction_limit = 0.03 |
| Index pair fraction (reference_index::pair_fraction) above which batch search compares bit-planes for every pair instead of counting through the index. | |
| constexpr uint32_t | cuddl::detail::batch_query_tile_count = 128U |
| Minimum query rows per batch tile. | |