|
cuDDL
|
Non-owning view of one batch-search tile's results. More...
Public Member Functions | |
| __host__ __device__ constexpr uint32_t | words_per_query () const noexcept |
| __host__ __device__ uint64_t | slot_count () const noexcept |
| Slots of the tile's layout, filled or not. | |
| __host__ __device__ bool | passed (uint32_t query_id, uint32_t reference_id) const noexcept |
| Whether the pair has a result in this tile, in either order for all-to-all tiles. | |
| __host__ __device__ cuda::std::optional< batch_search_result > | find (uint32_t query_id, uint32_t reference_id) const noexcept |
| The pair's result, or nothing when it did not pass. | |
| __host__ __device__ uint32_t | match_count (uint32_t query_id, uint32_t reference_id) const noexcept |
| The pair's index match count, in either order for all-to-all tiles; the pair must pass and counts must be present. | |
| template<typename F > | |
| __host__ __device__ void | for_each_passing (F &&f) const |
Calls f with every passing result, query-major and in reference order. | |
| template<typename F > | |
| __host__ __device__ void | for_each_passing (uint32_t begin, uint32_t end, F &&f) const |
Calls f with the passing results of the tile's query rows [begin, end), in the order of the whole-tile visit. | |
| __host__ __device__ uint64_t | passing_before (uint32_t query) const noexcept |
Number of passing results in the tile's query rows before row query, which may be query_count. | |
| __host__ __device__ uint64_t | count () const noexcept |
| Number of passing results. | |
Public Attributes | |
| packed_pairwise_counts const * | results {} |
| uint32_t const * | match_counts {} |
| Index match counts parallel to results, when requested; otherwise null. | |
| uint32_t const * | pass_bits {} |
| Passing pairs, when the tile applied a threshold; null when every slot is filled. | |
| uint32_t const * | word_offsets {} |
| For packed results: the number of passing results before each pass-bit word. | |
| uint32_t | first_query_id {} |
| uint32_t | query_count {} |
| uint32_t | reference_count {} |
| uint32_t | bucket_count {} |
| Buckets per sketch, from which both-empty counts are recovered. | |
| bool | upper_triangle {} |
Non-owning view of one batch-search tile's results.
Results are stored as packed_pairwise_counts; a result's position identifies its pair, so the accessors return full batch_search_result values. On the device, results sit at fixed slots: one row of reference_count slots per query, or for all-to-all tiles the packed strict upper triangle of pairs with query_id < reference_id. Exhaustive tiles fill every slot. Threshold (indexed) tiles fill only the passing pairs' slots and mark them in pass_bits, one bit per reference in rows of (reference_count + 31) / 32 words per query. Host copies (download) hold only the passing results, packed in order, and locate them through word_offsets.
All-to-all tiles store each pair once, in the row of its smaller ID. The lookups take the pair in either order: asked for (a, b) with b < a, they answer from the stored (b, a), with lower and higher swapped, as pairwise_counts::mirrored gives. The pair is then in the tile whose queries include b.
Definition at line 147 of file reference_database.cuh.
|
inlinenoexcept |
Number of passing results.
Definition at line 264 of file reference_database.cuh.
|
inlinenoexcept |
The pair's result, or nothing when it did not pass.
All-to-all tiles answer in either order, with the counts seen from query_id.
Definition at line 195 of file reference_database.cuh.
|
inline |
Calls f with every passing result, query-major and in reference order.
Definition at line 216 of file reference_database.cuh.
|
inline |
Calls f with the passing results of the tile's query rows [begin, end), in the order of the whole-tile visit.
Disjoint row ranges can be visited concurrently; the first result of row begin is passing result passing_before(begin) of the tile.
Definition at line 224 of file reference_database.cuh.
|
inlinenoexcept |
The pair's index match count, in either order for all-to-all tiles; the pair must pass and counts must be present.
Definition at line 207 of file reference_database.cuh.
|
inlinenoexcept |
Whether the pair has a result in this tile, in either order for all-to-all tiles.
Definition at line 180 of file reference_database.cuh.
|
inlinenoexcept |
Number of passing results in the tile's query rows before row query, which may be query_count.
Definition at line 252 of file reference_database.cuh.
|
inlinenoexcept |
Slots of the tile's layout, filled or not.
Definition at line 167 of file reference_database.cuh.
|
inlineconstexprnoexcept |
| uint32_t cuddl::batch_result_tile::bucket_count {} |
Buckets per sketch, from which both-empty counts are recovered.
Definition at line 159 of file reference_database.cuh.
| uint32_t cuddl::batch_result_tile::first_query_id {} |
Definition at line 155 of file reference_database.cuh.
| uint32_t const* cuddl::batch_result_tile::match_counts {} |
Index match counts parallel to results, when requested; otherwise null.
Definition at line 150 of file reference_database.cuh.
| uint32_t const* cuddl::batch_result_tile::pass_bits {} |
Passing pairs, when the tile applied a threshold; null when every slot is filled.
Definition at line 152 of file reference_database.cuh.
| uint32_t cuddl::batch_result_tile::query_count {} |
Definition at line 156 of file reference_database.cuh.
| uint32_t cuddl::batch_result_tile::reference_count {} |
Definition at line 157 of file reference_database.cuh.
| packed_pairwise_counts const* cuddl::batch_result_tile::results {} |
Definition at line 148 of file reference_database.cuh.
| bool cuddl::batch_result_tile::upper_triangle {} |
Definition at line 160 of file reference_database.cuh.
| uint32_t const* cuddl::batch_result_tile::word_offsets {} |
For packed results: the number of passing results before each pass-bit word.
Definition at line 154 of file reference_database.cuh.