Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
7316d775
M
milvus
项目概览
milvus
/
milvus
大约 1 年 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
7316d775
编写于
12月 29, 2021
作者:
C
Cai Yudong
提交者:
GitHub
12月 29, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove FaissAssert from distances_simd_avx (#14525)
Signed-off-by:
N
yudong.cai
<
yudong.cai@zilliz.com
>
上级
cb7301f1
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
7 addition
and
64 deletion
+7
-64
internal/core/src/index/thirdparty/faiss/IndexFlat.cpp
internal/core/src/index/thirdparty/faiss/IndexFlat.cpp
+0
-1
internal/core/src/index/thirdparty/faiss/utils/distances.h
internal/core/src/index/thirdparty/faiss/utils/distances.h
+1
-0
internal/core/src/index/thirdparty/faiss/utils/distances_simd_avx.cpp
...e/src/index/thirdparty/faiss/utils/distances_simd_avx.cpp
+3
-29
internal/core/src/index/thirdparty/faiss/utils/distances_simd_avx.h
...ore/src/index/thirdparty/faiss/utils/distances_simd_avx.h
+1
-1
internal/core/src/index/thirdparty/faiss/utils/distances_simd_avx512.cpp
...rc/index/thirdparty/faiss/utils/distances_simd_avx512.cpp
+1
-32
internal/core/src/index/thirdparty/faiss/utils/jaccard-inl.h
internal/core/src/index/thirdparty/faiss/utils/jaccard-inl.h
+1
-1
未找到文件。
internal/core/src/index/thirdparty/faiss/IndexFlat.cpp
浏览文件 @
7316d775
...
...
@@ -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>
...
...
internal/core/src/index/thirdparty/faiss/utils/distances.h
浏览文件 @
7316d775
...
...
@@ -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>
...
...
internal/core/src/index/thirdparty/faiss/utils/distances_simd_avx.cpp
浏览文件 @
7316d775
...
...
@@ -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
internal/core/src/index/thirdparty/faiss/utils/distances_simd_avx.h
浏览文件 @
7316d775
...
...
@@ -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
internal/core/src/index/thirdparty/faiss/utils/distances_simd_avx512.cpp
浏览文件 @
7316d775
...
...
@@ -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
internal/core/src/index/thirdparty/faiss/utils/jaccard-inl.h
浏览文件 @
7316d775
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录