NCBI C++ ToolKit
|
Search Toolkit Book for bm::aggregator
Algorithms for fast aggregation of a group of bit-vectors. More...
#include <util/bitset/bmaggregator.h>
Classes | |
struct | arena |
Temporary operations vectors. More... | |
struct | arg_groups |
Aggregator arg groups. More... | |
class | pipeline |
Pipeline vector for running a group of aggregation operations on a family of vectors. More... | |
struct | pipeline_bcache |
Block cache for pipeline execution. More... | |
struct | run_options |
Aggregation options for runtime control. More... | |
struct | tb_arena |
Alllocated blocka of scratch memory. More... | |
Public Member Functions | |
Construction and setup | |
aggregator () | |
~aggregator () | |
void | set_optimization (typename bvector_type::optmode opt=bvector_type::opt_compress) noexcept |
set on-the-fly bit-block compression By default aggregator does not try to optimize result, but in some cases it can be quite a lot faster than calling bvector<>::optimize() later (because block data sits in CPU cache). More... | |
void | set_compute_count (bool count_mode) noexcept |
Methods to setup argument groups and run operations on groups | |
size_t | add (const bvector_type *bv, unsigned agr_group=0) |
Attach source bit-vector to a argument group (0 or 1). More... | |
void | reset () |
Reset aggregate groups, forget all attached vectors. More... | |
void | combine_or (bvector_type &bv_target) |
Aggregate added group of vectors using logical OR Operation does NOT perform an explicit reset of arg group(s) More... | |
void | combine_and (bvector_type &bv_target) |
Aggregate added group of vectors using logical AND Operation does NOT perform an explicit reset of arg group(s) More... | |
bool | combine_and_sub (bvector_type &bv_target) |
Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s) More... | |
template<class TPipe > | |
void | combine_and_sub (TPipe &pipe) |
Run AND-SUB: AND (groups1) AND NOT ( OR(group0)) for a pipeline. More... | |
bool | combine_and_sub (bvector_type &bv_target, bool any) |
Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s) Operation can terminate early if anything was found. More... | |
template<typename BII > | |
bool | combine_and_sub_bi (BII bi) |
Aggregate added group of vectors using fused logical AND-SUB. More... | |
bool | find_first_and_sub (size_type &idx) |
Aggregate added group of vectors using fused logical AND-SUB, find the first match. More... | |
void | combine_shift_right_and (bvector_type &bv_target) |
Aggregate added group of vectors using SHIFT-RIGHT and logical AND Operation does NOT perform an explicit reset of arg group(s) More... | |
bool | set_range_hint (size_type from, size_type to) noexcept |
Set search hint for the range, where results needs to be searched (experimental for internal use). More... | |
void | reset_range_hint () noexcept |
Reset range hint to false. More... | |
size_type | count () const |
Logical operations (C-style interface) | |
void | combine_or (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size) |
Aggregate group of vectors using logical OR. More... | |
void | combine_and (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size) |
Aggregate group of vectors using logical AND. More... | |
bool | combine_and_sub (bvector_type &bv_target, const bvector_type_const_ptr *bv_src_and, size_t src_and_size, const bvector_type_const_ptr *bv_src_sub, size_t src_sub_size, bool any) |
Fusion aggregate group of vectors using logical AND MINUS another set. More... | |
template<typename BII > | |
bool | combine_and_sub (BII bi, const bvector_type_const_ptr *bv_src_and, size_t src_and_size, const bvector_type_const_ptr *bv_src_sub, size_t src_sub_size) |
bool | find_first_and_sub (size_type &idx, const bvector_type_const_ptr *bv_src_and, size_t src_and_size, const bvector_type_const_ptr *bv_src_sub, size_t src_sub_size) |
bool | combine_shift_right_and (bvector_type &bv_target, const bvector_type_const_ptr *bv_src_and, size_t src_and_size, bool any) |
Fusion aggregate group of vectors using SHIFT right with AND. More... | |
Horizontal Logical operations used for tests (C-style interface) | |
void | combine_or_horizontal (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size) |
Horizontal OR aggregation (potentially slower) method. More... | |
void | combine_and_horizontal (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size) |
Horizontal AND aggregation (potentially slower) method. More... | |
void | combine_and_sub_horizontal (bvector_type &bv_target, const bvector_type_const_ptr *bv_src_and, size_t src_and_size, const bvector_type_const_ptr *bv_src_sub, size_t src_sub_size) |
Horizontal AND-SUB aggregation (potentially slower) method. More... | |
Pipeline operations | |
int | get_operation () const noexcept |
Get current operation code. More... | |
void | set_operation (int op_code) noexcept |
Set operation code for the aggregator. More... | |
void | stage (bm::word_t *temp_block) |
Prepare operation, create internal resources, analyse dependencies. More... | |
operation_status | run_step (unsigned i, unsigned j) |
Run a step of current arrgegation operation. More... | |
operation_status | get_operation_status () const |
const bvector_type * | get_target () const noexcept |
bm::word_t * | get_temp_block () noexcept |
Algorithms for fast aggregation of a group of bit-vectors.
Algorithms of this class use cache locality optimizations and efficient on cases, wehen we need to apply the same logical operation (aggregate) more than 2x vectors.
TARGET = BV1 or BV2 or BV3 or BV4 ...
Aggregator supports OR, AND and AND-MINUS (AND-SUB) operations
Definition at line 121 of file bmaggregator.h.
typedef bvector_type::allocator_type::allocator_pool_type bm::aggregator< BV >::allocator_pool_type |
Definition at line 130 of file bmaggregator.h.
typedef BV::allocator_type bm::aggregator< BV >::allocator_type |
Definition at line 126 of file bmaggregator.h.
typedef arg_groups* bm::aggregator< BV >::arg_groups_type_ptr |
Definition at line 181 of file bmaggregator.h.
typedef bm::heap_vector<arg_groups_type_ptr, allocator_type, true> bm::aggregator< BV >::arg_vector_type |
Definition at line 183 of file bmaggregator.h.
|
protected |
Definition at line 639 of file bmaggregator.h.
typedef bm::heap_vector<bm::pair<unsigned, unsigned>, allocator_type, true> bm::aggregator< BV >::block_ij_vector_type |
Definition at line 191 of file bmaggregator.h.
|
protected |
Definition at line 641 of file bmaggregator.h.
typedef bm::heap_vector<bm::word_t*, allocator_type, true> bm::aggregator< BV >::blockptr_vector_type |
Definition at line 189 of file bmaggregator.h.
|
protected |
Definition at line 638 of file bmaggregator.h.
typedef bm::heap_vector<size_type, allocator_type, true> bm::aggregator< BV >::bv_count_vector_type |
Definition at line 187 of file bmaggregator.h.
typedef bm::heap_vector<bvector_type_const_ptr, allocator_type, true> bm::aggregator< BV >::bv_vector_type |
Definition at line 132 of file bmaggregator.h.
typedef bm::heap_vector<bvector_type*, allocator_type, true> bm::aggregator< BV >::bvect_vector_type |
Definition at line 134 of file bmaggregator.h.
typedef BV bm::aggregator< BV >::bvector_type |
Definition at line 124 of file bmaggregator.h.
typedef const bvector_type* bm::aggregator< BV >::bvector_type_const_ptr |
Definition at line 127 of file bmaggregator.h.
typedef bm::heap_vector<unsigned, allocator_type, true> bm::aggregator< BV >::count_vector_type |
Definition at line 185 of file bmaggregator.h.
typedef bm::id64_t bm::aggregator< BV >::digest_type |
Definition at line 128 of file bmaggregator.h.
|
protected |
Definition at line 643 of file bmaggregator.h.
typedef bm::heap_vector<size_t, allocator_type, true> bm::aggregator< BV >::index_vector_type |
Definition at line 136 of file bmaggregator.h.
typedef BV::size_type bm::aggregator< BV >::size_type |
Definition at line 125 of file bmaggregator.h.
|
protected |
Definition at line 645 of file bmaggregator.h.
enum bm::aggregator::operation |
Codes for aggregation operations which can be pipelined for efficient execution.
Enumerator | |
---|---|
BM_NOT_DEFINED | |
BM_SHIFT_R_AND |
Definition at line 141 of file bmaggregator.h.
|
strong |
Enumerator | |
---|---|
op_undefined | |
op_prepared | |
op_in_progress | |
op_done |
Definition at line 147 of file bmaggregator.h.
bm::aggregator< BV >::aggregator |
Definition at line 916 of file bmaggregator.h.
References bm::aligned_new_malloc(), bm::aggregator< BV >::ar_, bm::aggregator< BV >::construct_arena(), and bm::aggregator< BV >::tb_ar_.
bm::aggregator< BV >::~aggregator |
Definition at line 928 of file bmaggregator.h.
References bm::aligned_free(), and BM_ASSERT.
|
privatedelete |
size_t bm::aggregator< BV >::add | ( | const bvector_type * | bv, |
unsigned | agr_group = 0 |
||
) |
Attach source bit-vector to a argument group (0 or 1).
Arg group 1 used for fused operations like (AND-SUB)
bv | - input bit-vector pointer to attach |
agr_group | - input argument group (0 - default, 1 - fused op) |
Definition at line 1013 of file bmaggregator.h.
Referenced by agg_shift_right_and(), AggregatorTest(), BvectorShiftTest(), and StressTestAggregatorShiftAND().
|
staticprotectednoexcept |
Definition at line 2683 of file bmaggregator.h.
References i.
|
protected |
Definition at line 2371 of file bmaggregator.h.
References bm::aligned_new_malloc(), BM_ASSERT, BMGAP_PTR, cnt, bm::pair< First, Second >::first, bm::gap_convert_to_bitset(), i, bm::pair< First, Second >::second, and bm::set_block_size.
|
protected |
Definition at line 1000 of file bmaggregator.h.
void bm::aggregator< BV >::combine_and | ( | bvector_type & | bv_target | ) |
Aggregate added group of vectors using logical AND Operation does NOT perform an explicit reset of arg group(s)
bv_target | - target vector (input is arg group 0) |
Definition at line 1030 of file bmaggregator.h.
References BM_ASSERT.
Referenced by AggregatorTest(), SerializationOperation(), and StressTestAggregatorAND().
void bm::aggregator< BV >::combine_and | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src, | ||
size_t | src_size | ||
) |
Aggregate group of vectors using logical AND.
bv_target | - target vector |
bv_src | - array of pointers on bit-vector aggregate arguments |
src_size | - size of bv_src (how many vectors to aggregate) |
Definition at line 1127 of file bmaggregator.h.
References BM_ASSERT, bm::combine_and(), and i.
|
protected |
Definition at line 1668 of file bmaggregator.h.
References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, FULL_BLOCK_REAL_ADDR, i, and bm::set_sub_array_size.
void bm::aggregator< BV >::combine_and_horizontal | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src, | ||
size_t | src_size | ||
) |
Horizontal AND aggregation (potentially slower) method.
bv_target | - target vector |
bv_src | - array of pointers on bit-vector aggregate arguments |
src_size | - size of bv_src (how many vectors to aggregate) |
Definition at line 2431 of file bmaggregator.h.
References BM_ASSERT, i, and bm::READWRITE.
Referenced by StressTestAggregatorAND().
bool bm::aggregator< BV >::combine_and_sub | ( | BII | bi, |
const bvector_type_const_ptr * | bv_src_and, | ||
size_t | src_and_size, | ||
const bvector_type_const_ptr * | bv_src_sub, | ||
size_t | src_sub_size | ||
) |
Definition at line 1225 of file bmaggregator.h.
References bm::bits_in_block, BM_ASSERT, bm::for_each_bit_blk(), i, r(), and bm::set_sub_array_size.
bool bm::aggregator< BV >::combine_and_sub | ( | bvector_type & | bv_target | ) |
Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s)
bv_target | - target vector (input is arg group 0(AND), 1(SUB) ) |
Definition at line 1044 of file bmaggregator.h.
References BM_ASSERT.
Referenced by AggregatorTest(), SerializationOperation(), StressTestAggregatorAND(), and StressTestAggregatorAND_SUB().
bool bm::aggregator< BV >::combine_and_sub | ( | bvector_type & | bv_target, |
bool | any | ||
) |
Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s) Operation can terminate early if anything was found.
bv_target | - target vector (input is arg group 0(AND), 1(SUB) ) |
any | - if true, search result will terminate of first found result |
Definition at line 1056 of file bmaggregator.h.
References BM_ASSERT.
bool bm::aggregator< BV >::combine_and_sub | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src_and, | ||
size_t | src_and_size, | ||
const bvector_type_const_ptr * | bv_src_sub, | ||
size_t | src_sub_size, | ||
bool | any | ||
) |
Fusion aggregate group of vectors using logical AND MINUS another set.
bv_target | - target vector |
bv_src_and | - array of pointers on bit-vectors for AND |
src_and_size | - size of AND group |
bv_src_sub | - array of pointers on bit-vectors for SUBstract |
src_sub_size | - size of SUB group |
any | - flag if caller needs any results asap (incomplete results) |
Definition at line 1162 of file bmaggregator.h.
References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, i, and bm::set_sub_array_size.
void bm::aggregator< BV >::combine_and_sub | ( | TPipe & | pipe | ) |
Run AND-SUB: AND (groups1) AND NOT ( OR(group0)) for a pipeline.
pipe | - pipeline to run (should be prepared, filled and complete |
Definition at line 1292 of file bmaggregator.h.
References bm::aggregator< BV >::arg_groups::arg_bv0, bm::aggregator< BV >::arg_groups::arg_bv1, bm::bit_block_count(), BM_ASSERT, bm::BM_GAP, bm::heap_vector< Val, BVAlloc, trivial_type >::data(), FULL_BLOCK_FAKE_ADDR, bm::gap_max_bits, bm::get_block_coord(), i, bm::set_block_shift, bm::set_sub_array_size, and bm::heap_vector< Val, BVAlloc, trivial_type >::size().
|
protected |
Definition at line 1720 of file bmaggregator.h.
References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, FULL_BLOCK_REAL_ADDR, bm::gap_test_unr(), i, and bm::word_bitcount64().
bool bm::aggregator< BV >::combine_and_sub_bi | ( | BII | bi | ) |
Aggregate added group of vectors using fused logical AND-SUB.
search traget is back_inserter
Definition at line 1068 of file bmaggregator.h.
void bm::aggregator< BV >::combine_and_sub_horizontal | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src_and, | ||
size_t | src_and_size, | ||
const bvector_type_const_ptr * | bv_src_sub, | ||
size_t | src_sub_size | ||
) |
Horizontal AND-SUB aggregation (potentially slower) method.
bv_target | - target vector |
bv_src_and | - array of pointers on bit-vector to AND aggregate |
src_and_size | - size of bv_src_and |
bv_src_sub | - array of pointers on bit-vector to SUB aggregate |
src_sub_size | - size of bv_src_sub |
Definition at line 2456 of file bmaggregator.h.
Referenced by SerializationOperation(), and StressTestAggregatorAND().
void bm::aggregator< BV >::combine_or | ( | bvector_type & | bv_target | ) |
Aggregate added group of vectors using logical OR Operation does NOT perform an explicit reset of arg group(s)
bv_target | - target vector (input is arg group 0) |
Definition at line 1021 of file bmaggregator.h.
References BM_ASSERT, and bm::combine_or().
Referenced by AggregatorTest(), SerializationOperation(), and StressTestAggregatorOR().
void bm::aggregator< BV >::combine_or | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src, | ||
size_t | src_size | ||
) |
Aggregate group of vectors using logical OR.
bv_target | - target vector |
bv_src | - array of pointers on bit-vector aggregate arguments |
src_size | - size of bv_src (how many vectors to aggregate) |
Definition at line 1101 of file bmaggregator.h.
References BM_ASSERT, bm::combine_or(), and i.
|
protected |
Definition at line 1626 of file bmaggregator.h.
References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, i, and bm::set_sub_array_size.
void bm::aggregator< BV >::combine_or_horizontal | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src, | ||
size_t | src_size | ||
) |
Horizontal OR aggregation (potentially slower) method.
bv_target | - target vector |
bv_src | - array of pointers on bit-vector aggregate arguments |
src_size | - size of bv_src (how many vectors to aggregate) |
Definition at line 2407 of file bmaggregator.h.
References BM_ASSERT, i, and bm::READWRITE.
Referenced by StressTestAggregatorOR().
void bm::aggregator< BV >::combine_shift_right_and | ( | bvector_type & | bv_target | ) |
Aggregate added group of vectors using SHIFT-RIGHT and logical AND Operation does NOT perform an explicit reset of arg group(s)
bv_target | - target vector (input is arg group 0) |
Definition at line 1089 of file bmaggregator.h.
References BM_ASSERT.
Referenced by agg_shift_right_and(), AggregatorTest(), BvectorShiftTest(), and StressTestAggregatorShiftAND().
bool bm::aggregator< BV >::combine_shift_right_and | ( | bvector_type & | bv_target, |
const bvector_type_const_ptr * | bv_src_and, | ||
size_t | src_and_size, | ||
bool | any | ||
) |
Fusion aggregate group of vectors using SHIFT right with AND.
bv_target | - target vector |
bv_src_and | - array of pointers on bit-vectors for AND masking |
src_and_size | - size of AND group |
any | - flag if caller needs any results asap (incomplete results) |
Definition at line 2493 of file bmaggregator.h.
References bool, i, bm::set_sub_array_size, and bm::set_top_array_size.
|
protected |
Definition at line 2533 of file bmaggregator.h.
References bm::bit_block_copy(), bm::bit_block_count(), bm::bit_block_set(), bm::bit_is_all_zero(), BM_ASSERT, BM_IS_GAP, BMGAP_PTR, cnt, bm::gap_add_to_bitset(), and i.
|
inlinestaticprotected |
Definition at line 784 of file bmaggregator.h.
Referenced by bm::aggregator< BV >::aggregator().
|
inlinestaticprotected |
Definition at line 796 of file bmaggregator.h.
|
inline |
Definition at line 488 of file bmaggregator.h.
Referenced by BvectorShiftTest(), and StressTestAggregatorShiftAND().
|
staticprotectednoexcept |
Definition at line 1557 of file bmaggregator.h.
References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, i, and bm::set_sub_array_size.
|
staticprotectednoexcept |
Definition at line 1605 of file bmaggregator.h.
References i.
bool bm::aggregator< BV >::find_first_and_sub | ( | size_type & | idx | ) |
Aggregate added group of vectors using fused logical AND-SUB, find the first match.
idx | - [out] index of the first occurence |
Definition at line 1079 of file bmaggregator.h.
bool bm::aggregator< BV >::find_first_and_sub | ( | size_type & | idx, |
const bvector_type_const_ptr * | bv_src_and, | ||
size_t | src_and_size, | ||
const bvector_type_const_ptr * | bv_src_sub, | ||
size_t | src_sub_size | ||
) |
Definition at line 1458 of file bmaggregator.h.
References bm::bit_find_first(), bm::block_to_global_index(), BM_ASSERT, i, bm::set_array_mask, bm::set_array_shift, bm::set_block_shift, and bm::set_sub_array_size.
|
inlinestaticprotectednoexcept |
Definition at line 789 of file bmaggregator.h.
|
inlinestaticprotected |
Definition at line 802 of file bmaggregator.h.
|
staticprotectednoexcept |
Definition at line 2673 of file bmaggregator.h.
References i.
|
inlinenoexcept |
Definition at line 634 of file bmaggregator.h.
Referenced by AggregatorTest().
|
inlinenoexcept |
Get current operation code.
Definition at line 606 of file bmaggregator.h.
|
inline |
Definition at line 622 of file bmaggregator.h.
|
inlinenoexcept |
Definition at line 624 of file bmaggregator.h.
|
inlinenoexcept |
Definition at line 626 of file bmaggregator.h.
|
staticprotectednoexcept |
Definition at line 2257 of file bmaggregator.h.
References i.
|
privatedelete |
|
protected |
Definition at line 2478 of file bmaggregator.h.
References i.
|
protected |
Definition at line 1994 of file bmaggregator.h.
References bm::bit_block_and(), bm::bit_block_and_2way(), bm::bit_block_and_3way(), bm::bit_block_and_5way(), bm::bit_block_copy(), bm::bit_block_init_and_2way(), bm::bit_find_first_if_1(), bm::block_init_digest0(), bm::calc_block_digest0(), bm::heap_vector< Val, BVAlloc, trivial_type >::data(), bm::digest_mask(), mask, bm::set_block_mask, bm::set_block_shift, bm::set_word_mask, bm::set_word_shift, bm::heap_vector< Val, BVAlloc, trivial_type >::size(), bm::aggregator< BV >::arena::v_arg_and_blk, and bm::word_bitcount64().
|
protected |
Definition at line 1924 of file bmaggregator.h.
References bm::bit_block_copy(), bm::bit_block_or(), bm::bit_block_or_3way(), bm::bit_block_or_5way(), bm::bit_block_set(), BM_ASSERT, FULL_BLOCK_FAKE_ADDR, i, bm::is_bits_one(), len, bm::heap_vector< Val, BVAlloc, trivial_type >::size(), and bm::aggregator< BV >::arena::v_arg_or_blk.
|
protected |
Definition at line 2125 of file bmaggregator.h.
References bm::bit_block_sub(), bm::bit_block_sub_3way(), bm::bit_block_sub_5way(), bm::bit_find_first_if_1(), bm::heap_vector< Val, BVAlloc, trivial_type >::data(), mask, bm::set_word_mask, bm::set_word_shift, bm::heap_vector< Val, BVAlloc, trivial_type >::size(), bm::aggregator< BV >::arena::v_arg_or_blk, and bm::word_bitcount64().
|
protected |
Definition at line 1820 of file bmaggregator.h.
References bm::bit_find_first_if_1(), bm::bit_is_all_zero(), BM_ASSERT, bm::gap_and_to_bitset(), bm::gap_test_unr(), bm::heap_vector< Val, BVAlloc, trivial_type >::size(), bm::aggregator< BV >::arena::v_arg_and_blk_gap, and bm::word_bitcount64().
|
protected |
Definition at line 1808 of file bmaggregator.h.
References bm::gap_add_to_bitset(), bm::heap_vector< Val, BVAlloc, trivial_type >::size(), and bm::aggregator< BV >::arena::v_arg_or_blk_gap.
|
protected |
Definition at line 1854 of file bmaggregator.h.
References bm::bit_find_first_if_1(), bm::bit_is_all_zero(), BM_ASSERT, bm::gap_sub_to_bitset(), bm::gap_test_unr(), bm::heap_vector< Val, BVAlloc, trivial_type >::size(), bm::aggregator< BV >::arena::v_arg_or_blk_gap, and bm::word_bitcount64().
|
staticprotectednoexcept |
Definition at line 2612 of file bmaggregator.h.
References bm::bit_block_set(), bm::bit_block_shift_r1_and_unr(), BM_ASSERT, BM_IS_GAP, BMGAP_PTR, bm::calc_block_digest0(), FULL_BLOCK_REAL_ADDR, bm::gap_and_to_bitset(), and bm::set_block_size.
void bm::aggregator< BV >::reset |
Reset aggregate groups, forget all attached vectors.
Definition at line 941 of file bmaggregator.h.
Referenced by agg_shift_right_and(), AggregatorTest(), and StressTestAggregatorShiftAND().
|
noexcept |
|
protected |
Definition at line 950 of file bmaggregator.h.
|
staticprotected |
Definition at line 2210 of file bmaggregator.h.
References BM_ASSERT, i, and ncbi::grid::netcache::search::fields::size.
aggregator< BV >::operation_status bm::aggregator< BV >::run_step | ( | unsigned | i, |
unsigned | j | ||
) |
Run a step of current arrgegation operation.
Definition at line 2720 of file bmaggregator.h.
References BM_ASSERT, i, and bm::set_sub_array_size.
|
inlinenoexcept |
Definition at line 363 of file bmaggregator.h.
Referenced by AggregatorTest(), BvectorShiftTest(), and StressTestAggregatorShiftAND().
|
inlinenoexcept |
Set operation code for the aggregator.
Definition at line 609 of file bmaggregator.h.
|
inlinenoexcept |
set on-the-fly bit-block compression By default aggregator does not try to optimize result, but in some cases it can be quite a lot faster than calling bvector<>::optimize() later (because block data sits in CPU cache).
opt | - optimization mode (full compression by default) |
Definition at line 359 of file bmaggregator.h.
Referenced by AggregatorTest(), SerializationOperation(), StressTestAggregatorAND(), StressTestAggregatorOR(), and StressTestAggregatorShiftAND().
|
noexcept |
Set search hint for the range, where results needs to be searched (experimental for internal use).
Definition at line 974 of file bmaggregator.h.
References bm::set_block_mask, and bm::set_block_shift.
|
protected |
Definition at line 2315 of file bmaggregator.h.
References BM_ASSERT, BM_IS_GAP, BMGAP_PTR, FULL_BLOCK_FAKE_ADDR, FULL_BLOCK_REAL_ADDR, and i.
|
protected |
Definition at line 2278 of file bmaggregator.h.
References BM_IS_GAP, BMGAP_PTR, FULL_BLOCK_FAKE_ADDR, and i.
void bm::aggregator< BV >::stage | ( | bm::word_t * | temp_block | ) |
Prepare operation, create internal resources, analyse dependencies.
Prerequisites are: that operation is set and all argument vectors are added
Definition at line 2696 of file bmaggregator.h.
References BM_ASSERT.
|
protected |
Definition at line 1895 of file bmaggregator.h.
References b, bm::gap_test_unr(), and i.
|
protected |
Definition at line 1907 of file bmaggregator.h.
References b, bm::gap_test_unr(), and i.
|
private |
aggregator argument groups
Definition at line 824 of file bmaggregator.h.
|
private |
data arena ptr
Definition at line 826 of file bmaggregator.h.
Referenced by bm::aggregator< BV >::aggregator().
|
private |
Definition at line 834 of file bmaggregator.h.
|
private |
target bit-vector
Definition at line 832 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::get_target().
|
private |
compute search result count
Definition at line 849 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::set_compute_count().
|
private |
search result count
Definition at line 850 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::count(), and bm::aggregator< bvector_type >::set_compute_count().
|
private |
Definition at line 853 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::get_cache_gap_hits().
|
private |
single bit flag
Definition at line 843 of file bmaggregator.h.
|
private |
operation code (default: not defined)
Definition at line 830 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::get_operation(), and bm::aggregator< bvector_type >::set_operation().
|
private |
Definition at line 831 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::get_operation_status().
|
private |
perform search result optimization
Definition at line 848 of file bmaggregator.h.
Referenced by bm::aggregator< bvector_type >::set_optimization().
|
private |
pool for operations with cyclic mem.use
Definition at line 827 of file bmaggregator.h.
|
private |
search from
Definition at line 838 of file bmaggregator.h.
|
private |
temp GAP range block
Definition at line 840 of file bmaggregator.h.
|
private |
|
private |
search to
Definition at line 839 of file bmaggregator.h.
|
private |
Definition at line 844 of file bmaggregator.h.
|
private |
data arena ptr (heap allocated)
Definition at line 825 of file bmaggregator.h.
Referenced by bm::aggregator< BV >::aggregator(), and bm::aggregator< bvector_type >::get_temp_block().
|
private |
external temp block ptr
Definition at line 829 of file bmaggregator.h.
|
private |
operation top block (i) size
Definition at line 833 of file bmaggregator.h.