cuDDL
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
cuddl::reference_database< K, BucketCount, Layout > Class Template Reference

Move-only owner of one immutable contiguous reference database. More...

Public Types

using layout_type = Layout
 
using score_type = uint16_t
 
using result_type = reference_search_result
 
using batch_result_type = packed_pairwise_counts
 

Public Member Functions

 reference_database (reference_database const &)=delete
 
reference_database & operator= (reference_database const &)=delete
 
__host__ ~reference_database ()
 
 reference_database (reference_database &&other) noexcept
 
reference_database & operator= (reference_database &&other) noexcept
 
Result< void > copy_scores_async (device_span< score_type > scores, cuda::stream_ref stream) const
 Writes the reference scores, row-major in reference-ID order, to scores.
 
std::span< std::string const > names () const noexcept
 Reference labels in reference-ID order.
 
reference_database_metadata metadata () const noexcept
 Compatibility metadata and reference count.
 
uint32_t reference_count () const noexcept
 Reference count.
 
cuda::device_ref device () const noexcept
 Device holding the rows: the device of the stream that built them.
 
size_t persistent_row_bytes () const noexcept
 Bytes this database's own row store needs.
 
size_t single_query_workspace_bytes () const noexcept
 Caller-owned bytes for one exhaustive query on this database; always zero.
 
uint32_t single_query_result_count () const noexcept
 Results one exhaustive query writes: one per reference.
 
Result< void > search_async (device_span< score_type const > query, score_compatibility const &query_compatibility, device_span< uint8_t > workspace, device_span< result_type > results, cuda::stream_ref stream) const
 
template<typename OnTile >
Result< void > search_batch_async (device_span< score_type const > queries, score_compatibility const &query_compatibility, uint32_t query_id_offset, device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, cuda::stream_ref stream) const
 
template<typename OnTile >
Result< void > search_all_to_all_async (device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, cuda::stream_ref stream, all_to_all_shard shard={}) const
 
template<typename OnTile >
Result< void > search_all_to_all_async (device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, cuda::stream_ref stream, all_to_all_tile_queue &tiles) const
 Exhaustive search of the tiles claimed from tiles; see all_to_all_tile_queue.
 
Result< size_t > search_workspace_bytes (cuda::stream_ref stream, reference_index< K, BucketCount, Layout > const *index=nullptr) const
 
Result< cuddl::batch_search_requirements > batch_search_requirements (uint32_t query_count, cuda::stream_ref stream, reference_index< K, BucketCount, Layout > const *index=nullptr) const
 
Result< cuddl::batch_search_requirements > all_to_all_search_requirements (reference_index< K, BucketCount, Layout > const *index=nullptr) const
 
Result< void > search_async (device_span< score_type const > query, score_compatibility const &query_compatibility, device_span< uint8_t > workspace, device_span< result_type > results, device_span< uint32_t > result_count, search_options options, cuda::stream_ref stream, reference_index< K, BucketCount, Layout > const *index=nullptr) const
 
template<typename OnTile >
Result< void > search_batch_async (device_span< score_type const > queries, score_compatibility const &query_compatibility, uint32_t query_id_offset, device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, search_options options, cuda::stream_ref stream, reference_index< K, BucketCount, Layout > const *index=nullptr) const
 
template<typename OnTile >
Result< void > search_all_to_all_async (device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, search_options options, cuda::stream_ref stream, reference_index< K, BucketCount, Layout > const *index=nullptr, all_to_all_shard shard={}) const
 
template<typename OnTile >
Result< void > search_all_to_all_async (device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, search_options options, cuda::stream_ref stream, reference_index< K, BucketCount, Layout > const *index, all_to_all_tile_queue &tiles) const
 Indexed or threshold search of the tiles claimed from tiles; see all_to_all_tile_queue.
 

Static Public Member Functions

static Result< reference_database > build_async (device_span< score_type const > rows, score_compatibility compatibility, cuda::stream_ref stream)
 Builds a database from flat row-major scores on stream.
 
static constexpr size_t persistent_row_bytes (uint32_t reference_count) noexcept
 Bytes one compact row store needs for reference_count references.
 
static constexpr size_t single_query_workspace_bytes (uint32_t reference_count) noexcept
 
static constexpr uint32_t all_to_all_result_capacity (uint32_t reference_count) noexcept
 
static constexpr uint32_t single_query_result_count (uint32_t reference_count) noexcept
 

Friends

class reference_index_file
 
template<uint32_t , size_t , typename >
class reference_index
 
class reference_database_file
 

Detailed Description

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
class cuddl::reference_database< K, BucketCount, Layout >

Move-only owner of one immutable contiguous reference database.

Building enqueues row copies on the supplied stream. Inputs and the returned database must remain alive until that stream completes. The allocation stream must outlive the database. Complete work on other streams before destroying or move-assigning the database.

Definition at line 2919 of file reference_database.cuh.

Member Typedef Documentation

◆ batch_result_type

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
using cuddl::reference_database< K, BucketCount, Layout >::batch_result_type = packed_pairwise_counts

Definition at line 2932 of file reference_database.cuh.

◆ layout_type

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
using cuddl::reference_database< K, BucketCount, Layout >::layout_type = Layout

Definition at line 2929 of file reference_database.cuh.

◆ result_type

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
using cuddl::reference_database< K, BucketCount, Layout >::result_type = reference_search_result

Definition at line 2931 of file reference_database.cuh.

◆ score_type

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
using cuddl::reference_database< K, BucketCount, Layout >::score_type = uint16_t

Definition at line 2930 of file reference_database.cuh.

Constructor & Destructor Documentation

◆ reference_database() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
cuddl::reference_database< K, BucketCount, Layout >::reference_database ( reference_database< K, BucketCount, Layout > const &  )
delete

◆ ~reference_database()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
__host__ cuddl::reference_database< K, BucketCount, Layout >::~reference_database ( )
inline

Definition at line 2938 of file reference_database.cuh.

2938{} // NOLINT(modernize-use-equals-default)

◆ reference_database() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
cuddl::reference_database< K, BucketCount, Layout >::reference_database ( reference_database< K, BucketCount, Layout > &&  other)
inlinenoexcept

Definition at line 2940 of file reference_database.cuh.

2941 : planes_(std::move(other.planes_)),
2942 device_(other.device_),
2943 metadata_(std::exchange(other.metadata_, {})),
2944 names_(std::move(other.names_)),
2945 identity_(std::move(other.identity_)),
2946 deltas_(std::move(other.deltas_)) {}

Member Function Documentation

◆ all_to_all_result_capacity()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
static constexpr uint32_t cuddl::reference_database< K, BucketCount, Layout >::all_to_all_result_capacity ( uint32_t  reference_count)
inlinestaticconstexprnoexcept

Definition at line 3065 of file reference_database.cuh.

3067 {
3069 }
static constexpr uint32_t all_to_all_result_capacity(uint32_t reference_count) noexcept
uint32_t reference_count() const noexcept
Reference count.
Here is the call graph for this function:

◆ all_to_all_search_requirements()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
Result< cuddl::batch_search_requirements > cuddl::reference_database< K, BucketCount, Layout >::all_to_all_search_requirements ( reference_index< K, BucketCount, Layout > const *  index = nullptr) const
inline

Definition at line 3162 of file reference_database.cuh.

3164 {
3165 auto search_view = CUDDL_TRY(view(index));
3166 return search_view.indexed_all_to_all_search_requirements();
3167 }
#define CUDDL_TRY(expr)
Propagates a cuddl::Result failure from the enclosing function (GNU statement expression).
Definition error.hpp:225

◆ batch_search_requirements()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
Result< cuddl::batch_search_requirements > cuddl::reference_database< K, BucketCount, Layout >::batch_search_requirements ( uint32_t  query_count,
cuda::stream_ref  stream,
reference_index< K, BucketCount, Layout > const *  index = nullptr 
) const
inline

Definition at line 3153 of file reference_database.cuh.

3157 {
3158 auto search_view = CUDDL_TRY(view(index));
3159 return search_view.indexed_batch_search_requirements(query_count, stream);
3160 }

◆ build_async()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
static Result< reference_database > cuddl::reference_database< K, BucketCount, Layout >::build_async ( device_span< score_type const >  rows,
score_compatibility  compatibility,
cuda::stream_ref  stream 
)
inlinestatic

Builds a database from flat row-major scores on stream.

The database keeps each row only as bit-planes (detail::score_plane_index), the layout every search compares 32 buckets at a time; rows is not retained. Grouping near-duplicate rows (detail::reference_delta_view) waits for stream once.

Definition at line 2965 of file reference_database.cuh.

2969 {
2970 detail::device_scope const scope{stream};
2971 auto const reference_count = CUDDL_TRY(validate_rows(rows, compatibility));
2972 auto database = CUDDL_CUDA_TRY(reference_database(stream));
2973 database.metadata_ = {.compatibility = compatibility, .reference_count = reference_count};
2974 if (!rows.empty()) {
2975 database.planes_ = CUDDL_CUDA_TRY(
2976 cuda::make_device_buffer<uint32_t>(
2977 stream, stream.device(), rows.size() / 2U, cuda::no_init
2978 )
2979 );
2980 detail::build_score_planes_kernel<BucketCount>
2981 <<<detail::
2982 warp_grid_blocks(static_cast<size_t>(reference_count) * (BucketCount / 32U)),
2984 0,
2985 stream.get()>>>(rows.data(), reference_count, database.planes_.data());
2986 CUDDL_CUDA_TRY(cudaGetLastError());
2987 // Rows are compared as base references plus changed buckets; see
2988 // detail::reference_delta_view. Building it waits for the stream.
2989 if (!detail::ablated("deltas")) {
2990 database.deltas_ = CUDDL_TRY(
2991 detail::build_reference_deltas<BucketCount>(
2992 rows.data(), reference_count, stream
2993 )
2994 );
2995 }
2996 }
2997 return Result<reference_database>::ok(std::move(database));
2998 }
reference_database(reference_database const &)=delete
#define CUDDL_CUDA_TRY(...)
Propagates a CUDA error wrapped in cuddl::Result<void>.
Definition error.hpp:248
uint32_t warp_grid_blocks(size_t warps) noexcept
Blocks for a grid-stride launch covering warps warps of block_size threads.
Definition kernels.cuh:1524
constexpr uint32_t block_size
Threads per CTA for the single-pair and cardinality reduction kernels.
Definition kernels.cuh:28
::cuda::__ensure_current_context device_scope
Makes stream's device current for the enclosing scope and restores the previous context on exit.
constexpr bool ablated(std::string_view) noexcept
Always false: this build compiles the ablation switches out.
Definition ablation.hpp:82
__global__ size_t uint16_t * rows
Definition kernels.cuh:1499
static Result ok(T value)
Definition error.hpp:121
Here is the call graph for this function:

◆ copy_scores_async()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
Result< void > cuddl::reference_database< K, BucketCount, Layout >::copy_scores_async ( device_span< score_type >  scores,
cuda::stream_ref  stream 
) const
inline

Writes the reference scores, row-major in reference-ID order, to scores.

Definition at line 3002 of file reference_database.cuh.

3002 {
3003 detail::device_scope const scope{stream};
3004 auto const count = static_cast<size_t>(metadata_.reference_count) * BucketCount;
3005 if (scores.size() < count) {
3006 return Err(Error::resource("score destination is too small"));
3007 }
3008 if (count == 0U) {
3009 return Ok();
3010 }
3011 if (scores.data() == nullptr) {
3012 return Err(Error::invalid_argument("score destination must be device accessible"));
3013 }
3014 detail::decode_score_planes_kernel<BucketCount>
3016 static_cast<size_t>(metadata_.reference_count) * (BucketCount / 32U)
3017 ),
3019 0,
3020 stream.get()>>>(planes_.data(), metadata_.reference_count, scores.data());
3021 return cuda_try(cudaGetLastError());
3022 }
auto const count
Definition kernels.cuh:1031
Result< void > Ok() noexcept
Success return for Result<void>; same as return {}.
Definition error.hpp:181
cuda::std::unexpected< Error > Err(Error error)
Failure return; converts to any Result<T> via cuda::std::unexpected.
Definition error.hpp:176
Result< void > cuda_try(cudaError_t error, std::source_location location=std::source_location::current())
Checks a CUDA runtime call and returns an error on failure.
Definition error.hpp:187
static Error invalid_argument(std::string message)
Definition error.hpp:99
static Error resource(std::string message)
Definition error.hpp:103
Here is the call graph for this function:

◆ device()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
cuda::device_ref cuddl::reference_database< K, BucketCount, Layout >::device ( ) const
inlinenoexcept

Device holding the rows: the device of the stream that built them.

Definition at line 3040 of file reference_database.cuh.

3040 {
3041 return device_;
3042 }
Here is the caller graph for this function:

◆ metadata()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
reference_database_metadata cuddl::reference_database< K, BucketCount, Layout >::metadata ( ) const
inlinenoexcept

Compatibility metadata and reference count.

Definition at line 3030 of file reference_database.cuh.

3030 {
3031 return metadata_;
3032 }
Here is the caller graph for this function:

◆ names()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
std::span< std::string const > cuddl::reference_database< K, BucketCount, Layout >::names ( ) const
inlinenoexcept

Reference labels in reference-ID order.

Definition at line 3025 of file reference_database.cuh.

3025 {
3026 return names_;
3027 }

◆ operator=() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
reference_database & cuddl::reference_database< K, BucketCount, Layout >::operator= ( reference_database< K, BucketCount, Layout > &&  other)
inlinenoexcept

Definition at line 2948 of file reference_database.cuh.

2948 {
2949 if (this != &other) {
2950 planes_ = std::move(other.planes_);
2951 device_ = other.device_;
2952 metadata_ = std::exchange(other.metadata_, {});
2953 names_ = std::move(other.names_);
2954 identity_ = std::move(other.identity_);
2955 deltas_ = std::move(other.deltas_);
2956 }
2957 return *this;
2958 }

◆ operator=() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
reference_database & cuddl::reference_database< K, BucketCount, Layout >::operator= ( reference_database< K, BucketCount, Layout > const &  )
delete

◆ persistent_row_bytes() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
size_t cuddl::reference_database< K, BucketCount, Layout >::persistent_row_bytes ( ) const
inlinenoexcept

Bytes this database's own row store needs.

Definition at line 3050 of file reference_database.cuh.

3050 {
3051 return view().persistent_row_bytes();
3052 }
static constexpr size_t persistent_row_bytes(uint32_t reference_count) noexcept
Bytes one compact row store needs for reference_count references.
Here is the call graph for this function:

◆ persistent_row_bytes() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
static constexpr size_t cuddl::reference_database< K, BucketCount, Layout >::persistent_row_bytes ( uint32_t  reference_count)
inlinestaticconstexprnoexcept

Bytes one compact row store needs for reference_count references.

Definition at line 3045 of file reference_database.cuh.

3045 {
3047 }
constexpr size_t persistent_row_bytes() const noexcept
Bytes this view's own row store needs.
Here is the call graph for this function:

◆ reference_count()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
uint32_t cuddl::reference_database< K, BucketCount, Layout >::reference_count ( ) const
inlinenoexcept

Reference count.

Definition at line 3035 of file reference_database.cuh.

3035 {
3036 return metadata_.reference_count;
3037 }
Here is the caller graph for this function:

◆ search_all_to_all_async() [1/4]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<typename OnTile >
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_all_to_all_async ( device_span< uint8_t >  workspace,
device_span< batch_result_type >  results,
OnTile &&  on_tile,
device_span< uint32_t >  result_match_counts,
cuda::stream_ref  stream,
all_to_all_shard  shard = {} 
) const
inline

Definition at line 3116 of file reference_database.cuh.

3122 {}
3123 ) const {
3124 return view().search_all_to_all_async(
3125 workspace, results, std::forward<OnTile>(on_tile), result_match_counts, stream, shard
3126 );
3127 }
Result< void > search_all_to_all_async(device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, cuda::stream_ref stream, all_to_all_shard shard={}) const
Exhaustively searches every unique database-row pair using bounded storage.

◆ search_all_to_all_async() [2/4]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<typename OnTile >
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_all_to_all_async ( device_span< uint8_t >  workspace,
device_span< batch_result_type >  results,
OnTile &&  on_tile,
device_span< uint32_t >  result_match_counts,
cuda::stream_ref  stream,
all_to_all_tile_queue &  tiles 
) const
inline

Exhaustive search of the tiles claimed from tiles; see all_to_all_tile_queue.

Definition at line 3132 of file reference_database.cuh.

3139 {
3140 return view().search_all_to_all_async(
3141 workspace, results, std::forward<OnTile>(on_tile), result_match_counts, stream, tiles
3142 );
3143 }
Here is the call graph for this function:

◆ search_all_to_all_async() [3/4]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<typename OnTile >
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_all_to_all_async ( device_span< uint8_t >  workspace,
device_span< batch_result_type >  results,
OnTile &&  on_tile,
device_span< uint32_t >  result_match_counts,
search_options  options,
cuda::stream_ref  stream,
reference_index< K, BucketCount, Layout > const *  index,
all_to_all_tile_queue &  tiles 
) const
inline

Indexed or threshold search of the tiles claimed from tiles; see all_to_all_tile_queue.

Definition at line 3238 of file reference_database.cuh.

3247 {
3248 auto search_view = CUDDL_TRY(view(index));
3249 return search_view.search_all_to_all_indexed_async(
3250 workspace,
3251 results,
3252 std::forward<OnTile>(on_tile),
3253 result_match_counts,
3254 options,
3255 stream,
3256 tiles
3257 );
3258 }

◆ search_all_to_all_async() [4/4]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<typename OnTile >
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_all_to_all_async ( device_span< uint8_t >  workspace,
device_span< batch_result_type >  results,
OnTile &&  on_tile,
device_span< uint32_t >  result_match_counts,
search_options  options,
cuda::stream_ref  stream,
reference_index< K, BucketCount, Layout > const *  index = nullptr,
all_to_all_shard  shard = {} 
) const
inline

Definition at line 3213 of file reference_database.cuh.

3221 {}
3222 ) const {
3223 auto search_view = CUDDL_TRY(view(index));
3224 return search_view.search_all_to_all_indexed_async(
3225 workspace,
3226 results,
3227 std::forward<OnTile>(on_tile),
3228 result_match_counts,
3229 options,
3230 stream,
3231 shard
3232 );
3233 }

◆ search_async() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_async ( device_span< score_type const >  query,
score_compatibility const &  query_compatibility,
device_span< uint8_t >  workspace,
device_span< result_type >  results,
cuda::stream_ref  stream 
) const
inline

Definition at line 3082 of file reference_database.cuh.

3088 {
3089 return view().search_async(query, query_compatibility, workspace, results, stream);
3090 }
Result< void > search_async(device_span< score_type const > query, score_compatibility const &query_compatibility, device_span< uint8_t > workspace, device_span< result_type > results, cuda::stream_ref stream) const
Compares one compact query row with every reference row on stream.
Here is the call graph for this function:

◆ search_async() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_async ( device_span< score_type const >  query,
score_compatibility const &  query_compatibility,
device_span< uint8_t >  workspace,
device_span< result_type >  results,
device_span< uint32_t >  result_count,
search_options  options,
cuda::stream_ref  stream,
reference_index< K, BucketCount, Layout > const *  index = nullptr 
) const
inline

Definition at line 3169 of file reference_database.cuh.

3178 {
3179 auto search_view = CUDDL_TRY(view(index));
3180 return search_view.search_indexed_async(
3181 query, query_compatibility, workspace, results, result_count, options, stream
3182 );
3183 }

◆ search_batch_async() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<typename OnTile >
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_batch_async ( device_span< score_type const >  queries,
score_compatibility const &  query_compatibility,
uint32_t  query_id_offset,
device_span< uint8_t >  workspace,
device_span< batch_result_type >  results,
OnTile &&  on_tile,
device_span< uint32_t >  result_match_counts,
cuda::stream_ref  stream 
) const
inline

Definition at line 3093 of file reference_database.cuh.

3102 {
3103 return view().search_batch_async(
3104 queries,
3105 query_compatibility,
3106 query_id_offset,
3107 workspace,
3108 results,
3109 std::forward<OnTile>(on_tile),
3110 result_match_counts,
3111 stream
3112 );
3113 }
Result< void > search_batch_async(device_span< score_type const > queries, score_compatibility const &query_compatibility, uint32_t query_id_offset, device_span< uint8_t > workspace, device_span< batch_result_type > results, OnTile &&on_tile, device_span< uint32_t > result_match_counts, cuda::stream_ref stream) const
Exhaustively searches compact queries using bounded reusable storage.
Here is the call graph for this function:

◆ search_batch_async() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<typename OnTile >
Result< void > cuddl::reference_database< K, BucketCount, Layout >::search_batch_async ( device_span< score_type const >  queries,
score_compatibility const &  query_compatibility,
uint32_t  query_id_offset,
device_span< uint8_t >  workspace,
device_span< batch_result_type >  results,
OnTile &&  on_tile,
device_span< uint32_t >  result_match_counts,
search_options  options,
cuda::stream_ref  stream,
reference_index< K, BucketCount, Layout > const *  index = nullptr 
) const
inline

Definition at line 3186 of file reference_database.cuh.

3197 {
3198 auto search_view = CUDDL_TRY(view(index));
3199 return search_view.search_batch_indexed_async(
3200 queries,
3201 query_compatibility,
3202 query_id_offset,
3203 workspace,
3204 results,
3205 std::forward<OnTile>(on_tile),
3206 result_match_counts,
3207 options,
3208 stream
3209 );
3210 }

◆ search_workspace_bytes()

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
Result< size_t > cuddl::reference_database< K, BucketCount, Layout >::search_workspace_bytes ( cuda::stream_ref  stream,
reference_index< K, BucketCount, Layout > const *  index = nullptr 
) const
inline

Definition at line 3145 of file reference_database.cuh.

3148 {
3149 auto search_view = CUDDL_TRY(view(index));
3150 return search_view.indexed_single_query_workspace_bytes(stream);
3151 }

◆ single_query_result_count() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
uint32_t cuddl::reference_database< K, BucketCount, Layout >::single_query_result_count ( ) const
inlinenoexcept

Results one exhaustive query writes: one per reference.

Definition at line 3078 of file reference_database.cuh.

3078 {
3079 return view().single_query_result_count();
3080 }
static constexpr uint32_t single_query_result_count(uint32_t reference_count) noexcept
Here is the call graph for this function:

◆ single_query_result_count() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
static constexpr uint32_t cuddl::reference_database< K, BucketCount, Layout >::single_query_result_count ( uint32_t  reference_count)
inlinestaticconstexprnoexcept

Definition at line 3071 of file reference_database.cuh.

3073 {
3075 }
constexpr uint32_t single_query_result_count() const noexcept
Results one exhaustive query writes: one per reference.
Here is the call graph for this function:

◆ single_query_workspace_bytes() [1/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
size_t cuddl::reference_database< K, BucketCount, Layout >::single_query_workspace_bytes ( ) const
inlinenoexcept

Caller-owned bytes for one exhaustive query on this database; always zero.

Definition at line 3061 of file reference_database.cuh.

3061 {
3062 return view().single_query_workspace_bytes();
3063 }
static constexpr size_t single_query_workspace_bytes(uint32_t reference_count) noexcept
Caller-owned bytes for one exhaustive query: the query's bit-planes.
Here is the call graph for this function:

◆ single_query_workspace_bytes() [2/2]

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
static constexpr size_t cuddl::reference_database< K, BucketCount, Layout >::single_query_workspace_bytes ( uint32_t  reference_count)
inlinestaticconstexprnoexcept

Definition at line 3054 of file reference_database.cuh.

3056 {
3058 }
constexpr size_t single_query_workspace_bytes() const noexcept
Caller-owned bytes for one exhaustive query on this view.
Here is the call graph for this function:

Friends And Related Symbol Documentation

◆ reference_database_file

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
friend class reference_database_file
friend

Definition at line 2923 of file reference_database.cuh.

◆ reference_index

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
template<uint32_t , size_t , typename >
friend class reference_index
friend

Definition at line 2922 of file reference_database.cuh.

◆ reference_index_file

template<uint32_t K, size_t BucketCount, typename Layout = default_register_layout>
friend class reference_index_file
friend

Definition at line 2920 of file reference_database.cuh.


The documentation for this class was generated from the following file: