Struct faiss::simd_result_handlers::HeapHandler

template<class C, bool with_id_map = false>
struct HeapHandler : public faiss::simd_result_handlers::SIMDResultHandler<C, false>

Structure that collects results in a min- or max-heap

Public Types

using T = typename C::T
using TI = typename C::TI

Public Functions

inline HeapHandler(int nq, T *heap_dis_tab, TI *heap_ids_tab, size_t k, size_t ntotal)
inline void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1)
inline virtual void to_flat_arrays(float *distances, int64_t *labels, const float *normalizers = nullptr) override
inline void set_block_origin(size_t i0, size_t j0)
inline void adjust_with_origin(size_t &q, simd16uint16 &d0, simd16uint16 &d1)
inline int64_t adjust_id(size_t b, size_t j)
inline uint32_t get_lt_mask(uint16_t thr, size_t b, simd16uint16 d0, simd16uint16 d1)

return binary mask of elements below thr in (d0, d1) inverse_test returns elements above

Public Members

int nq
T *heap_dis_tab
TI *heap_ids_tab
int64_t k
bool disable
int64_t i0
int64_t j0
size_t ntotal
const TI *id_map

these fields are used mainly for the IVF variants (with_id_map=true)

const int *q_map
const uint16_t *dbias