mirror of https://github.com/milvus-io/milvus.git
Remove FaissAssert from distances_simd_avx (#14525)
Signed-off-by: yudong.cai <yudong.cai@zilliz.com>pull/14545/head
parent
cb7301f1df
commit
7316d77559
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include <cstring>
|
||||
#include <faiss/utils/distances.h>
|
||||
#include <faiss/utils/distances_range.h>
|
||||
#include <faiss/utils/extra_distances.h>
|
||||
#include <faiss/utils/utils.h>
|
||||
#include <faiss/utils/Heap.h>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <faiss/utils/Heap.h>
|
||||
#include <faiss/utils/BitsetView.h>
|
||||
#include <faiss/utils/distances_range.h>
|
||||
#include <faiss/utils/distances_simd.h>
|
||||
|
||||
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
// -*- c++ -*-
|
||||
|
||||
#include <faiss/utils/distances_simd_avx.h>
|
||||
#include <faiss/impl/FaissAssert.h>
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
#include <immintrin.h>
|
||||
#include <string>
|
||||
|
||||
namespace faiss {
|
||||
|
||||
|
@ -77,7 +77,7 @@ uint8_t lookup8bit[256] = {
|
|||
/* fc */ 6, /* fd */ 7, /* fe */ 7, /* ff */ 8
|
||||
};
|
||||
|
||||
#ifdef __SSE__
|
||||
|
||||
// reads 0 <= d < 4 floats as __m128
|
||||
static inline __m128 masked_read (int d, const float *x) {
|
||||
assert (0 <= d && d < 4);
|
||||
|
@ -93,9 +93,7 @@ static inline __m128 masked_read (int d, const float *x) {
|
|||
return _mm_load_ps(buf);
|
||||
// cannot use AVX2 _mm_mask_set1_epi32
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __AVX__
|
||||
|
||||
// reads 0 <= d < 8 floats as __m256
|
||||
static inline __m256 masked_read_8 (int d, const float* x) {
|
||||
|
@ -475,34 +473,10 @@ int and_popcnt_AVX2_lookup(const uint8_t* data1, const uint8_t* data2, const siz
|
|||
}
|
||||
|
||||
float
|
||||
jaccard__AVX2(const uint8_t * a, const uint8_t * b, size_t n) {
|
||||
jaccard_AVX2(const uint8_t * a, const uint8_t * b, size_t n) {
|
||||
int accu_num = and_popcnt_AVX2_lookup(a,b,n);
|
||||
int accu_den = or_popcnt_AVX2_lookup(a,b,n);
|
||||
return (accu_den == 0) ? 1.0 : ((float)(accu_den - accu_num) / (float)(accu_den));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
float fvec_inner_product_avx(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float fvec_L2sqr_avx(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float fvec_L1_avx(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float fvec_Linf_avx (const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
} // namespace faiss
|
||||
|
|
|
@ -46,6 +46,6 @@ int
|
|||
popcnt_AVX2_lookup(const uint8_t* data, const size_t n);
|
||||
|
||||
float
|
||||
jaccard__AVX2(const uint8_t * a, const uint8_t * b, size_t n);
|
||||
jaccard_AVX2(const uint8_t * a, const uint8_t * b, size_t n);
|
||||
|
||||
} // namespace faiss
|
||||
|
|
|
@ -2,15 +2,14 @@
|
|||
// -*- c++ -*-
|
||||
|
||||
#include <faiss/utils/distances_simd_avx512.h>
|
||||
#include <faiss/impl/FaissAssert.h>
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
#include <immintrin.h>
|
||||
#include <string>
|
||||
|
||||
namespace faiss {
|
||||
|
||||
#ifdef __SSE__
|
||||
// reads 0 <= d < 4 floats as __m128
|
||||
static inline __m128 masked_read (int d, const float *x) {
|
||||
assert (0 <= d && d < 4);
|
||||
|
@ -26,9 +25,7 @@ static inline __m128 masked_read (int d, const float *x) {
|
|||
return _mm_load_ps(buf);
|
||||
// cannot use AVX2 _mm_mask_set1_epi32
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (defined(__AVX512F__) && defined(__AVX512DQ__))
|
||||
|
||||
extern uint8_t lookup8bit[256];
|
||||
|
||||
|
@ -424,32 +421,4 @@ jaccard__AVX512(const uint8_t * a, const uint8_t * b, size_t n) {
|
|||
return (accu_den == 0) ? 1.0 : ((float)(accu_den - accu_num) / (float)(accu_den));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
float
|
||||
fvec_inner_product_avx512(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float
|
||||
fvec_L2sqr_avx512(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float
|
||||
fvec_L1_avx512(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float
|
||||
fvec_Linf_avx512(const float* x, const float* y, size_t d) {
|
||||
FAISS_ASSERT(false);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
} // namespace faiss
|
||||
|
|
|
@ -353,7 +353,7 @@ struct JaccardComputer256 {
|
|||
}
|
||||
|
||||
float compute (const uint8_t *b8) const {
|
||||
return jaccard__AVX2(a, b8, n);
|
||||
return jaccard_AVX2(a, b8, n);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue