Namespace faiss::simd_result_handlers
-
namespace simd_result_handlers
-
struct DummyResultHandler
- #include <simd_result_handlers.h>
Dummy structure that just computes a checksum on results (to avoid the computation to be optimized away)
Public Functions
-
inline void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1)
-
inline void set_block_origin(size_t, size_t)
Public Members
-
size_t cs = 0
-
inline void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1)
-
struct StoreResultHandler
- #include <simd_result_handlers.h>
memorize results in a nq-by-nb matrix.
j0 is the current upper-left block of the matrix
Public Functions
-
inline StoreResultHandler(uint16_t *data, size_t ld)
-
inline void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1)
-
inline void set_block_origin(size_t i0, size_t j0)
Public Members
-
uint16_t *data
-
size_t ld
-
size_t i0 = 0
-
size_t j0 = 0
-
inline StoreResultHandler(uint16_t *data, size_t ld)
-
template<int NQ, int BB>
struct FixedStorageHandler - #include <simd_result_handlers.h>
stores results in fixed-size matrix.
Public Functions
-
inline void handle(int q, int b, simd16uint16 d0, simd16uint16 d1)
-
inline void set_block_origin(size_t i0, size_t j0)
-
template<class OtherResultHandler>
inline void to_other_handler(OtherResultHandler &other) const
-
inline void handle(int q, int b, simd16uint16 d0, simd16uint16 d1)
-
template<class C, bool with_id_map>
struct SIMDResultHandler - #include <simd_result_handlers.h>
Record origin of current block
Public Types
-
using TI = typename C::TI
Public Functions
-
inline explicit SIMDResultHandler(size_t ntotal)
-
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
-
virtual void to_flat_arrays(float *distances, int64_t *labels, const float *normalizers = nullptr) = 0
-
inline virtual ~SIMDResultHandler()
Public Members
-
bool disable = false
-
int64_t i0 = 0
-
int64_t j0 = 0
-
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
-
using TI = typename C::TI
-
template<class C, bool with_id_map = false>
struct SingleResultHandler : public faiss::simd_result_handlers::SIMDResultHandler<C, false> - #include <simd_result_handlers.h>
Special version for k=1
Public Functions
-
inline SingleResultHandler(size_t nq, 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
-
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
-
struct Result
-
inline SingleResultHandler(size_t nq, size_t ntotal)
-
template<class C, bool with_id_map = false>
struct HeapHandler : public faiss::simd_result_handlers::SIMDResultHandler<C, false> - #include <simd_result_handlers.h>
Structure that collects results in a min- or max-heap
Public Functions
-
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
-
inline void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1)
-
template<class C>
struct ReservoirTopN -
Public Functions
-
inline void shrink_xx()
shrink number of stored elements to n
-
inline void shrink()
-
inline void shrink_fuzzy()
-
inline void shrink_xx()
-
template<class C, bool with_id_map = false>
struct ReservoirHandler : public faiss::simd_result_handlers::SIMDResultHandler<C, false> - #include <simd_result_handlers.h>
Handler built from several ReservoirTopN (one per query)
Public Functions
-
inline ReservoirHandler(size_t nq, size_t ntotal, size_t n, size_t capacity_in)
-
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
-
size_t capacity
-
AlignedTable<T> all_vals
-
std::vector<ReservoirTopN<C>> reservoirs
-
uint64_t times[4]
-
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
-
inline ReservoirHandler(size_t nq, size_t ntotal, size_t n, size_t capacity_in)
-
struct DummyResultHandler