cuDDL
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Enumerations | Functions | Variables
reference_database.cuh File Reference
#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.