BitMagic-C++
Data Structures | Public Types
bm::aggregator< BV > Class Template Reference

Algorithms for fast aggregation of a group of bit-vectors. More...

#include <bmaggregator.h>

Inheritance diagram for bm::aggregator< BV >:
Inheritance graph
[legend]

Data Structures

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...
 

Public Types

enum  operation { BM_NOT_DEFINED = 0 , BM_SHIFT_R_AND = 1 }
 Codes for aggregation operations which can be pipelined for efficient execution. More...
 
enum  operation_status { op_undefined = 0 , op_prepared , op_in_progress , op_done }
 
typedef BV bvector_type
 
typedef BV::size_type size_type
 
typedef BV::allocator_type allocator_type
 
typedef const bvector_typebvector_type_const_ptr
 
typedef bm::id64_t digest_type
 
typedef bvector_type::allocator_type::allocator_pool_type allocator_pool_type
 
typedef bm::heap_vector< bvector_type_const_ptr, allocator_type, true > bv_vector_type
 
typedef bm::heap_vector< bvector_type *, allocator_type, true > bvect_vector_type
 
typedef bm::heap_vector< size_t, allocator_type, true > index_vector_type
 
typedef arg_groupsarg_groups_type_ptr
 
typedef bm::heap_vector< arg_groups_type_ptr, allocator_type, true > arg_vector_type
 
typedef bm::heap_vector< unsigned, allocator_type, true > count_vector_type
 
typedef bm::heap_vector< size_type, allocator_type, true > bv_count_vector_type
 
typedef bm::heap_vector< bm::word_t *, allocator_type, true > blockptr_vector_type
 
typedef bm::heap_vector< bm::pair< unsigned, unsigned >, allocator_type, true > block_ij_vector_type
 

Public Member Functions

Construction and setup
 aggregator ()
  More...
 
 ~aggregator ()
  More...
 
void set_optimization (typename bvector_type::optmode opt=bvector_type::opt_compress) BMNOEXCEPT
 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) BMNOEXCEPT
 
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...
 
void set_range_hint (size_type from, size_type to) BMNOEXCEPT
 Set search hint for the range, where results needs to be searched (experimental for internal use). More...
 
void reset_range_hint () BMNOEXCEPT
 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)
  More...
 
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)
  More...
 
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 BMNOEXCEPT
 Get current operation code. More...
 
void set_operation (int op_code) BMNOEXCEPT
 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_typeget_target () const BMNOEXCEPT
  More...
 
bm::word_tget_temp_block () BMNOEXCEPT
 

Execition metrics and telemetry <br>

typedef bvector_type::blocks_manager_type blocks_manager_type
 
typedef BV::block_idx_type block_idx_type
 
typedef bm::heap_vector< const bm::word_t *, allocator_type, true > block_ptr_vector_type
 
typedef bm::heap_vector< const bm::gap_word_t *, allocator_type, true > gap_block_ptr_vector_type
 
typedef bm::heap_vector< unsigned char, allocator_type, true > uchar_vector_type
 
bm::id64_t get_cache_gap_hits () const BMNOEXCEPT
 
void reset_vars ()
 
void combine_or (unsigned i, unsigned j, bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size)
  More...
 
void combine_and (unsigned i, unsigned j, bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size)
  More...
 
digest_type combine_and_sub (unsigned i, unsigned j, const size_t *and_idx, const bvector_type_const_ptr *bv_src_and, size_t src_and_size, const size_t *sub_idx, const bvector_type_const_ptr *bv_src_sub, size_t src_sub_size, int *is_result_full)
  More...
 
void prepare_shift_right_and (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size)
 
bool combine_shift_right_and (unsigned i, unsigned j, bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size)
  More...
 
bm::word_tsort_input_blocks_or (const size_t *src_idx, const bvector_type_const_ptr *bv_src, size_t src_size, unsigned i, unsigned j)
  More...
 
bm::word_tsort_input_blocks_and (const size_t *src_idx, const bvector_type_const_ptr *bv_src, size_t src_size, unsigned i, unsigned j)
  More...
 
bm::word_tcache_gap_block (const bm::word_t *arg_blk, const size_t *src_idx, size_t k, unsigned i, unsigned j)
  More...
 
bool process_bit_blocks_or (blocks_manager_type &bman_target, unsigned i, unsigned j, const arena &ar)
  More...
 
void process_gap_blocks_or (const arena &ar)
  More...
 
digest_type process_bit_blocks_and (const arena &ar, digest_type digest)
  More...
 
digest_type process_gap_blocks_and (const arena &ar, digest_type digest)
  More...
 
bool test_gap_blocks_and (size_t block_count, unsigned bit_idx)
  More...
 
bool test_gap_blocks_sub (size_t block_count, unsigned bit_idx)
  More...
 
digest_type process_bit_blocks_sub (const arena &ar, digest_type digest)
  More...
 
digest_type process_gap_blocks_sub (const arena &ar, digest_type digest)
  More...
 
bvector_typecheck_create_target ()
 
static unsigned resize_target (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, size_t src_size, bool init_clear=true)
  More...
 
static unsigned max_top_blocks (const bvector_type_const_ptr *bv_src, size_t src_size) BMNOEXCEPT
 
static unsigned find_effective_sub_block_size (unsigned i, const bvector_type_const_ptr *bv_src, size_t src_size, bool top_null_as_zero) BMNOEXCEPT
  More...
 
static unsigned find_effective_sub_block_size (unsigned i, const bvector_type_const_ptr *bv_src1, size_t src_size1, const bvector_type_const_ptr *bv_src2, size_t src_size2) BMNOEXCEPT
 
static bool any_carry_overs (const unsigned char *carry_overs, size_t co_size) BMNOEXCEPT
 
static unsigned process_shift_right_and (bm::word_t *BMRESTRICT blk, const bm::word_t *BMRESTRICT arg_blk, digest_type &BMRESTRICT digest, unsigned carry_over) BMNOEXCEPT
  More...
 
static const bm::word_tget_arg_block (const bvector_type_const_ptr *bv_src, unsigned k, unsigned i, unsigned j) BMNOEXCEPT
 
static arenaconstruct_arena ()
  More...
 
static void free_arena (arena *ar) BMNOEXCEPT
  More...
 
static arg_groupsconstruct_arg_group ()
  More...
 
static void free_arg_group (arg_groups *arg)
  More...
 

Detailed Description

template<typename BV>
class bm::aggregator< BV >

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

Examples
bvsetalgebra.cpp, sample16.cpp, and xsample04.cpp.

Definition at line 121 of file bmaggregator.h.

Member Enumeration Documentation

◆ operation

template<typename BV >
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.

◆ operation_status

template<typename BV >
enum bm::aggregator::operation_status
Enumerator
op_undefined 
op_prepared 
op_in_progress 
op_done 

Definition at line 147 of file bmaggregator.h.

Member Function Documentation

◆ add()

template<typename BV >
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)

Parameters
bv- input bit-vector pointer to attach
agr_group- input argument group (0 - default, 1 - fused op)
Returns
current arg group size (0 if vector was not added (empty))
See also
reset
Examples
bvsetalgebra.cpp, and sample16.cpp.

Definition at line 986 of file bmaggregator.h.

Referenced by DemoAND(), DemoAND_OR(), DemoAND_SUB(), DemoOR(), DemoSUB(), DNA_FingerprintScanner::FindAggFused(), main(), and CSeqClusters::union_all_groups().

◆ cache_gap_block()

template<typename BV >
bm::word_t * bm::aggregator< BV >::cache_gap_block ( const bm::word_t arg_blk,
const size_t *  src_idx,
size_t  k,
unsigned  i,
unsigned  j 
)
protected

◆ combine_and() [1/3]

template<typename BV >
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)

Parameters
bv_target- target vector (input is arg group 0)
See also
add, reset
Examples
bvsetalgebra.cpp, and sample16.cpp.

Definition at line 1003 of file bmaggregator.h.

References BM_ASSERT.

Referenced by DemoAND(), and main().

◆ combine_and() [2/3]

template<typename BV >
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.

Parameters
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 1100 of file bmaggregator.h.

References BM_ASSERT, and bm::combine_and().

◆ combine_and() [3/3]

template<typename BV >
void bm::aggregator< BV >::combine_and ( unsigned  i,
unsigned  j,
bvector_type bv_target,
const bvector_type_const_ptr bv_src,
size_t  src_size 
)
protected

◆ combine_and_horizontal()

template<typename BV >
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.

Parameters
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 2341 of file bmaggregator.h.

References BM_ASSERT, and bm::READWRITE.

◆ combine_and_sub() [1/6]

template<typename BV >
template<typename BII >
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 
)

◆ combine_and_sub() [2/6]

template<typename BV >
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)

Parameters
bv_target- target vector (input is arg group 0(AND), 1(SUB) )
Returns
true if anything was found
See also
add, reset
Examples
bvsetalgebra.cpp, and sample16.cpp.

Definition at line 1017 of file bmaggregator.h.

References BM_ASSERT.

Referenced by DemoAND_OR(), DemoAND_SUB(), DemoSUB(), and main().

◆ combine_and_sub() [3/6]

template<typename BV >
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.

Parameters
bv_target- target vector (input is arg group 0(AND), 1(SUB) )
any- if true, search result will terminate of first found result
Returns
true if anything was found
See also
add, reset, find_first_and_sub

Definition at line 1029 of file bmaggregator.h.

References BM_ASSERT.

◆ combine_and_sub() [4/6]

template<typename BV >
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.

Parameters
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)
Returns
true when found

Definition at line 1135 of file bmaggregator.h.

References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, bm::bvector< Alloc >::opt_compress, and bm::set_sub_array_size.

◆ combine_and_sub() [5/6]

template<typename BV >
template<class TPipe >
void bm::aggregator< BV >::combine_and_sub ( TPipe &  pipe)

◆ combine_and_sub() [6/6]

template<typename BV >
aggregator< BV >::digest_type bm::aggregator< BV >::combine_and_sub ( unsigned  i,
unsigned  j,
const size_t *  and_idx,
const bvector_type_const_ptr bv_src_and,
size_t  src_and_size,
const size_t *  sub_idx,
const bvector_type_const_ptr bv_src_sub,
size_t  src_sub_size,
int *  is_result_full 
)
protected

Definition at line 1706 of file bmaggregator.h.

References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, and FULL_BLOCK_REAL_ADDR.

◆ combine_and_sub_bi()

template<typename BV >
template<typename BII >
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 1041 of file bmaggregator.h.

◆ combine_and_sub_horizontal()

template<typename BV >
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.

Parameters
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 2366 of file bmaggregator.h.

References BM_ASSERT.

◆ combine_or() [1/3]

template<typename BV >
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)

Parameters
bv_target- target vector (input is arg group 0)
See also
add, reset
Examples
bvsetalgebra.cpp, and sample16.cpp.

Definition at line 994 of file bmaggregator.h.

References BM_ASSERT, and bm::combine_or().

Referenced by DemoOR(), main(), and CSeqClusters::union_all_groups().

◆ combine_or() [2/3]

template<typename BV >
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.

Parameters
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 1074 of file bmaggregator.h.

References BM_ASSERT, and bm::combine_or().

◆ combine_or() [3/3]

template<typename BV >
void bm::aggregator< BV >::combine_or ( unsigned  i,
unsigned  j,
bvector_type bv_target,
const bvector_type_const_ptr bv_src,
size_t  src_size 
)
protected

Definition at line 1609 of file bmaggregator.h.

References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, and bm::set_sub_array_size.

◆ combine_or_horizontal()

template<typename BV >
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.

Parameters
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 2317 of file bmaggregator.h.

References BM_ASSERT, and bm::READWRITE.

◆ combine_shift_right_and() [1/3]

template<typename BV >
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)

Parameters
bv_target- target vector (input is arg group 0)
Returns
bool if anything was found
See also
add, reset

Definition at line 1062 of file bmaggregator.h.

References BM_ASSERT.

Referenced by DNA_FingerprintScanner::FindAggFused().

◆ combine_shift_right_and() [2/3]

template<typename BV >
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.

Parameters
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)
Returns
true when found

Definition at line 2403 of file bmaggregator.h.

References bm::set_sub_array_size, and bm::set_top_array_size.

◆ combine_shift_right_and() [3/3]

template<typename BV >
bool bm::aggregator< BV >::combine_shift_right_and ( unsigned  i,
unsigned  j,
bvector_type bv_target,
const bvector_type_const_ptr bv_src,
size_t  src_size 
)
protected

◆ construct_arena()

template<typename BV >
static arena* bm::aggregator< BV >::construct_arena ( )
inlinestaticprotected

Definition at line 782 of file bmaggregator.h.

References bm::aligned_new_malloc().

Referenced by bm::aggregator< BV >::aggregator().

◆ construct_arg_group()

template<typename BV >
static arg_groups* bm::aggregator< BV >::construct_arg_group ( )
inlinestaticprotected

Definition at line 794 of file bmaggregator.h.

References bm::aligned_new_malloc().

◆ find_effective_sub_block_size()

template<typename BV >
unsigned bm::aggregator< BV >::find_effective_sub_block_size ( unsigned  i,
const bvector_type_const_ptr bv_src,
size_t  src_size,
bool  top_null_as_zero 
)
staticprotected

Definition at line 1540 of file bmaggregator.h.

References BM_ASSERT, FULL_BLOCK_FAKE_ADDR, max_size, and bm::set_sub_array_size.

◆ find_first_and_sub() [1/2]

template<typename BV >
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.

Parameters
idx- [out] index of the first occurence
Returns
true if anything was found
See also
combine_and_sub

Definition at line 1052 of file bmaggregator.h.

◆ find_first_and_sub() [2/2]

template<typename BV >
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 
)

◆ free_arena()

template<typename BV >
static void bm::aggregator< BV >::free_arena ( arena ar)
inlinestaticprotected

Definition at line 787 of file bmaggregator.h.

References bm::aligned_free().

◆ free_arg_group()

template<typename BV >
static void bm::aggregator< BV >::free_arg_group ( arg_groups arg)
inlinestaticprotected

Definition at line 800 of file bmaggregator.h.

References bm::aligned_free().

◆ get_operation()

template<typename BV >
int bm::aggregator< BV >::get_operation ( ) const
inline

Get current operation code.

Definition at line 605 of file bmaggregator.h.

◆ get_target()

template<typename BV >
const bvector_type* bm::aggregator< BV >::get_target ( ) const
inline

Definition at line 623 of file bmaggregator.h.

Referenced by DNA_FingerprintScanner::FindCollection().

◆ process_bit_blocks_and()

template<typename BV >
aggregator< BV >::digest_type bm::aggregator< BV >::process_bit_blocks_and ( const arena ar,
digest_type  digest 
)
protected

◆ process_bit_blocks_or()

template<typename BV >
bool bm::aggregator< BV >::process_bit_blocks_or ( blocks_manager_type bman_target,
unsigned  i,
unsigned  j,
const arena ar 
)
protected

◆ process_bit_blocks_sub()

template<typename BV >
aggregator< BV >::digest_type bm::aggregator< BV >::process_bit_blocks_sub ( const arena ar,
digest_type  digest 
)
protected

◆ process_gap_blocks_and()

template<typename BV >
aggregator< BV >::digest_type bm::aggregator< BV >::process_gap_blocks_and ( const arena ar,
digest_type  digest 
)
protected

◆ process_gap_blocks_or()

template<typename BV >
void bm::aggregator< BV >::process_gap_blocks_or ( const arena ar)
protected

◆ process_gap_blocks_sub()

template<typename BV >
aggregator< BV >::digest_type bm::aggregator< BV >::process_gap_blocks_sub ( const arena ar,
digest_type  digest 
)
protected

◆ process_shift_right_and()

template<typename BV >
unsigned bm::aggregator< BV >::process_shift_right_and ( bm::word_t *BMRESTRICT  blk,
const bm::word_t *BMRESTRICT  arg_blk,
digest_type &BMRESTRICT  digest,
unsigned  carry_over 
)
staticprotected

◆ reset()

template<typename BV >
void bm::aggregator< BV >::reset

Reset aggregate groups, forget all attached vectors.

Examples
bvsetalgebra.cpp, and sample16.cpp.

Definition at line 932 of file bmaggregator.h.

Referenced by DemoAND(), DemoAND_SUB(), DemoOR(), DemoSUB(), DNA_FingerprintScanner::FindAggFused(), main(), and CSeqClusters::union_all_groups().

◆ reset_range_hint()

template<typename BV >
void bm::aggregator< BV >::reset_range_hint

Reset range hint to false.

Definition at line 953 of file bmaggregator.h.

References bm::id_max.

◆ resize_target()

template<typename BV >
unsigned bm::aggregator< BV >::resize_target ( bvector_type bv_target,
const bvector_type_const_ptr bv_src,
size_t  src_size,
bool  init_clear = true 
)
staticprotected

Definition at line 2093 of file bmaggregator.h.

References BM_ASSERT.

◆ run_step()

template<typename BV >
aggregator< BV >::operation_status bm::aggregator< BV >::run_step ( unsigned  i,
unsigned  j 
)

Run a step of current arrgegation operation.

Definition at line 2630 of file bmaggregator.h.

References BM_ASSERT, and bm::set_sub_array_size.

◆ set_operation()

template<typename BV >
void bm::aggregator< BV >::set_operation ( int  op_code)
inline

Set operation code for the aggregator.

Definition at line 608 of file bmaggregator.h.

◆ set_optimization()

template<typename BV >
void bm::aggregator< BV >::set_optimization ( typename bvector_type::optmode  opt = bvector_type::opt_compress)
inline

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).

Parameters
opt- optimization mode (full compression by default)
Examples
bvsetalgebra.cpp.

Definition at line 359 of file bmaggregator.h.

Referenced by DemoAND(), DemoAND_SUB(), DemoOR(), DemoSUB(), and CSeqClusters::union_all_groups().

◆ set_range_hint()

template<typename BV >
void bm::aggregator< BV >::set_range_hint ( size_type  from,
size_type  to 
)

Set search hint for the range, where results needs to be searched (experimental for internal use).

Definition at line 963 of file bmaggregator.h.

◆ sort_input_blocks_and()

template<typename BV >
bm::word_t * bm::aggregator< BV >::sort_input_blocks_and ( const size_t *  src_idx,
const bvector_type_const_ptr bv_src,
size_t  src_size,
unsigned  i,
unsigned  j 
)
protected

◆ sort_input_blocks_or()

template<typename BV >
bm::word_t * bm::aggregator< BV >::sort_input_blocks_or ( const size_t *  src_idx,
const bvector_type_const_ptr bv_src,
size_t  src_size,
unsigned  i,
unsigned  j 
)
protected

Definition at line 2162 of file bmaggregator.h.

References BM_ASSERT, BM_IS_GAP, BMGAP_PTR, and FULL_BLOCK_FAKE_ADDR.

◆ stage()

template<typename BV >
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 2606 of file bmaggregator.h.

References BM_ASSERT.

◆ test_gap_blocks_and()

template<typename BV >
bool bm::aggregator< BV >::test_gap_blocks_and ( size_t  block_count,
unsigned  bit_idx 
)
protected

Definition at line 1863 of file bmaggregator.h.

References bm::gap_test_unr().

◆ test_gap_blocks_sub()

template<typename BV >
bool bm::aggregator< BV >::test_gap_blocks_sub ( size_t  block_count,
unsigned  bit_idx 
)
protected

Definition at line 1875 of file bmaggregator.h.

References bm::gap_test_unr().


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