Add NegativeDistanceComputer::distances_batch_4 override (#3149)
Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/3149 Enables vectorized distance calculation in [NegativeDistanceComputer](pull/3144/headb109d086a2/faiss/IndexHNSW.cpp (L74)
), whenever supported by the [NegativeDistanceComputer::basedis](b109d086a2/faiss/IndexHNSW.cpp (L76)
). Otherwise the default sequential calculation of [DistanceComputer::distances_batch_4](b109d086a2/faiss/impl/DistanceComputer.h (L36-L54)
) is always chosen. Reviewed By: algoriddle Differential Revision: D51596177 fbshipit-source-id: fee510c0a229991ecb7d81a51bc53a20880685be
parent
90654d6011
commit
4bf8f939d6
|
@ -87,6 +87,23 @@ struct NegativeDistanceComputer : DistanceComputer {
|
|||
return -(*basedis)(i);
|
||||
}
|
||||
|
||||
void distances_batch_4(
|
||||
const idx_t idx0,
|
||||
const idx_t idx1,
|
||||
const idx_t idx2,
|
||||
const idx_t idx3,
|
||||
float& dis0,
|
||||
float& dis1,
|
||||
float& dis2,
|
||||
float& dis3) override {
|
||||
basedis->distances_batch_4(
|
||||
idx0, idx1, idx2, idx3, dis0, dis1, dis2, dis3);
|
||||
dis0 = -dis0;
|
||||
dis1 = -dis1;
|
||||
dis2 = -dis2;
|
||||
dis3 = -dis3;
|
||||
}
|
||||
|
||||
/// compute distance between two stored vectors
|
||||
float symmetric_dis(idx_t i, idx_t j) override {
|
||||
return -basedis->symmetric_dis(i, j);
|
||||
|
|
Loading…
Reference in New Issue