结构体 faiss::simd_result_handlers::PartialRangeHandler
-
template<class C, bool with_id_map = false>
struct PartialRangeHandler : public faiss::simd_result_handlers::RangeHandler<C, false> -
公共函数
-
inline PartialRangeHandler(RangeSearchPartialResult &pres, float radius, size_t ntotal, size_t q0, size_t q1, const IDSelector *sel_in)
-
inline void shift_n_per_query()
-
inline virtual void end() override
-
inline virtual void begin(const float *norms) override
-
inline virtual void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1) final
当计算出 32 个距离并在两个 simd16uint16 中提供时调用。(q,b)指示它在块中的哪个条目。
-
inline virtual void set_block_origin(size_t i0_in, size_t j0_in) final
设置正在计算的子矩阵
-
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)
返回 (d0, d1) 中低于 thr 的元素的二进制掩码。inverse_test 返回高于 thr 的元素
公共成员
-
RangeSearchPartialResult &pres
-
size_t q0
-
std::vector<Triplet> triplets
-
std::vector<size_t> n_per_query
-
RangeSearchResult &rres
-
float radius
-
std::vector<uint16_t> thresholds
-
bool disable = false
-
int64_t i0 = 0
-
int64_t j0 = 0
-
const IDSelector *sel
-
size_t nq
-
size_t ntotal
-
const idx_t *id_map = nullptr
这些字段主要用于 IVF 变体(with_id_map=true)。
-
const int *q_map = nullptr
-
const uint16_t *dbias = nullptr
-
const float *normalizers = nullptr
-
bool is_CMax = false
-
uint8_t sizeof_ids = 0
-
bool with_fields = false
-
inline PartialRangeHandler(RangeSearchPartialResult &pres, float radius, size_t ntotal, size_t q0, size_t q1, const IDSelector *sel_in)