未验证 提交 7316d775 编写于 作者: C Cai Yudong 提交者: GitHub

Remove FaissAssert from distances_simd_avx (#14525)

Signed-off-by: Nyudong.cai <yudong.cai@zilliz.com>
上级 cb7301f1
......@@ -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);
}
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册