Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
a764aa57
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a764aa57
编写于
10月 17, 2019
作者:
X
xiaojun.lin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MS-648 add ut v4
Former-commit-id: c221f1e53356ff6761550fb94b230ea6a784f792
上级
99105997
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
55 addition
and
61 deletion
+55
-61
core/src/index/unittest/test_customized_index.cpp
core/src/index/unittest/test_customized_index.cpp
+8
-8
core/src/index/unittest/test_gpuresource.cpp
core/src/index/unittest/test_gpuresource.cpp
+24
-26
core/src/index/unittest/test_idmap.cpp
core/src/index/unittest/test_idmap.cpp
+5
-5
core/src/index/unittest/test_ivf.cpp
core/src/index/unittest/test_ivf.cpp
+14
-16
core/src/index/unittest/test_nsg/test_nsg.cpp
core/src/index/unittest/test_nsg/test_nsg.cpp
+4
-6
未找到文件。
core/src/index/unittest/test_customized_index.cpp
浏览文件 @
a764aa57
...
@@ -57,7 +57,7 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
...
@@ -57,7 +57,7 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
auto
binaryset
=
index_
->
Serialize
();
auto
binaryset
=
index_
->
Serialize
();
{
{
// copy cpu to gpu
// copy cpu to gpu
auto
cpu_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
auto
cpu_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
cpu_idx
->
Load
(
binaryset
);
cpu_idx
->
Load
(
binaryset
);
...
@@ -66,13 +66,13 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
...
@@ -66,13 +66,13 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
auto
gpu_idx
=
cpu_idx
->
CopyCpuToGpu
(
DEVICEID
,
conf
);
auto
gpu_idx
=
cpu_idx
->
CopyCpuToGpu
(
DEVICEID
,
conf
);
auto
result
=
gpu_idx
->
Search
(
query_dataset
,
conf
);
auto
result
=
gpu_idx
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
// PrintResult(result, nq, k);
// PrintResult(result, nq, k);
}
}
}
}
}
}
{
{
// quantization already in gpu, only copy data
// quantization already in gpu, only copy data
auto
cpu_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
auto
cpu_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
cpu_idx
->
Load
(
binaryset
);
cpu_idx
->
Load
(
binaryset
);
...
@@ -82,10 +82,10 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
...
@@ -82,10 +82,10 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
auto
result
=
gpu_idx
->
Search
(
query_dataset
,
conf
);
auto
result
=
gpu_idx
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
// PrintResult(result, nq, k);
// PrintResult(result, nq, k);
auto
quantizer_conf
=
std
::
make_shared
<
knowhere
::
QuantizerCfg
>
();
auto
quantizer_conf
=
std
::
make_shared
<
knowhere
::
QuantizerCfg
>
();
quantizer_conf
->
mode
=
2
;
// only copy data
quantizer_conf
->
mode
=
2
;
// only copy data
quantizer_conf
->
gpu_id
=
DEVICEID
;
quantizer_conf
->
gpu_id
=
DEVICEID
;
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
auto
hybrid_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
auto
hybrid_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
...
@@ -94,12 +94,12 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
...
@@ -94,12 +94,12 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
auto
new_idx
=
hybrid_idx
->
LoadData
(
quantization
,
quantizer_conf
);
auto
new_idx
=
hybrid_idx
->
LoadData
(
quantization
,
quantizer_conf
);
auto
result
=
new_idx
->
Search
(
query_dataset
,
conf
);
auto
result
=
new_idx
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
// PrintResult(result, nq, k);
// PrintResult(result, nq, k);
}
}
}
}
{
{
// quantization already in gpu, only set quantization
// quantization already in gpu, only set quantization
auto
cpu_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
auto
cpu_idx
=
std
::
make_shared
<
knowhere
::
IVFSQHybrid
>
(
DEVICEID
);
cpu_idx
->
Load
(
binaryset
);
cpu_idx
->
Load
(
binaryset
);
...
@@ -113,7 +113,7 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
...
@@ -113,7 +113,7 @@ TEST_F(SingleIndexTest, IVFSQHybrid) {
hybrid_idx
->
SetQuantizer
(
quantization
);
hybrid_idx
->
SetQuantizer
(
quantization
);
auto
result
=
hybrid_idx
->
Search
(
query_dataset
,
conf
);
auto
result
=
hybrid_idx
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
AssertAnns
(
result
,
nq
,
conf
->
k
);
// PrintResult(result, nq, k);
// PrintResult(result, nq, k);
hybrid_idx
->
UnsetQuantizer
();
hybrid_idx
->
UnsetQuantizer
();
}
}
}
}
...
...
core/src/index/unittest/test_gpuresource.cpp
浏览文件 @
a764aa57
...
@@ -35,8 +35,8 @@
...
@@ -35,8 +35,8 @@
#include "knowhere/index/vector_index/IndexIVFSQHybrid.h"
#include "knowhere/index/vector_index/IndexIVFSQHybrid.h"
#include "knowhere/index/vector_index/helpers/Cloner.h"
#include "knowhere/index/vector_index/helpers/Cloner.h"
#include "unittest/utils.h"
#include "unittest/Helper.h"
#include "unittest/Helper.h"
#include "unittest/utils.h"
class
GPURESTEST
:
public
DataGen
,
public
TestGpuIndexBase
{
class
GPURESTEST
:
public
DataGen
,
public
TestGpuIndexBase
{
protected:
protected:
...
@@ -206,38 +206,38 @@ TEST_F(GPURESTEST, gpu_ivf_resource_test) {
...
@@ -206,38 +206,38 @@ TEST_F(GPURESTEST, gpu_ivf_resource_test) {
EXPECT_EQ
(
index_
->
Count
(),
nb
);
EXPECT_EQ
(
index_
->
Count
(),
nb
);
EXPECT_EQ
(
index_
->
Dimension
(),
dim
);
EXPECT_EQ
(
index_
->
Dimension
(),
dim
);
// knowhere::TimeRecorder tc("knowere GPUIVF");
// knowhere::TimeRecorder tc("knowere GPUIVF");
for
(
int
i
=
0
;
i
<
search_count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
search_count
;
++
i
)
{
index_
->
Search
(
query_dataset
,
conf
);
index_
->
Search
(
query_dataset
,
conf
);
if
(
i
>
search_count
-
6
||
i
<
5
)
if
(
i
>
search_count
-
6
||
i
<
5
)
// tc.RecordSection("search once");
// tc.RecordSection("search once");
}
}
// tc.ElapseFromBegin("search all");
// tc.ElapseFromBegin("search all");
}
}
knowhere
::
FaissGpuResourceMgr
::
GetInstance
().
Dump
();
knowhere
::
FaissGpuResourceMgr
::
GetInstance
().
Dump
();
// {
// {
// // ori faiss IVF-Search
// // ori faiss IVF-Search
// faiss::gpu::StandardGpuResources res;
// faiss::gpu::StandardGpuResources res;
// faiss::gpu::GpuIndexIVFFlatConfig idx_config;
// faiss::gpu::GpuIndexIVFFlatConfig idx_config;
// idx_config.device = DEVICEID;
// idx_config.device = DEVICEID;
// faiss::gpu::GpuIndexIVFFlat device_index(&res, dim, 1638, faiss::METRIC_L2, idx_config);
// faiss::gpu::GpuIndexIVFFlat device_index(&res, dim, 1638, faiss::METRIC_L2, idx_config);
// device_index.train(nb, xb.data());
// device_index.train(nb, xb.data());
// device_index.add(nb, xb.data());
// device_index.add(nb, xb.data());
//
//
// knowhere::TimeRecorder tc("ori IVF");
// knowhere::TimeRecorder tc("ori IVF");
// for (int i = 0; i < search_count; ++i) {
// for (int i = 0; i < search_count; ++i) {
// device_index.search(nq, xq.data(), k, dis, ids);
// device_index.search(nq, xq.data(), k, dis, ids);
// if (i > search_count - 6 || i < 5)
// if (i > search_count - 6 || i < 5)
// tc.RecordSection("search once");
// tc.RecordSection("search once");
// }
// }
// tc.ElapseFromBegin("search all");
// tc.ElapseFromBegin("search all");
// }
// }
}
}
TEST_F
(
GPURESTEST
,
gpuivfsq
)
{
TEST_F
(
GPURESTEST
,
gpuivfsq
)
{
{
{
// knowhere gpu ivfsq
// knowhere gpu ivfsq
index_type
=
"GPUIVFSQ"
;
index_type
=
"GPUIVFSQ"
;
index_
=
IndexFactory
(
index_type
);
index_
=
IndexFactory
(
index_type
);
...
@@ -255,8 +255,8 @@ TEST_F(GPURESTEST, gpuivfsq) {
...
@@ -255,8 +255,8 @@ TEST_F(GPURESTEST, gpuivfsq) {
auto
model
=
index_
->
Train
(
base_dataset
,
conf
);
auto
model
=
index_
->
Train
(
base_dataset
,
conf
);
index_
->
set_index_model
(
model
);
index_
->
set_index_model
(
model
);
index_
->
Add
(
base_dataset
,
conf
);
index_
->
Add
(
base_dataset
,
conf
);
// auto result = index_->Search(query_dataset, conf);
// auto result = index_->Search(query_dataset, conf);
// AssertAnns(result, nq, k);
// AssertAnns(result, nq, k);
auto
cpu_idx
=
knowhere
::
cloner
::
CopyGpuToCpu
(
index_
,
knowhere
::
Config
());
auto
cpu_idx
=
knowhere
::
cloner
::
CopyGpuToCpu
(
index_
,
knowhere
::
Config
());
cpu_idx
->
Seal
();
cpu_idx
->
Seal
();
...
@@ -307,5 +307,3 @@ TEST_F(GPURESTEST, gpuivfsq) {
...
@@ -307,5 +307,3 @@ TEST_F(GPURESTEST, gpuivfsq) {
}
}
}
}
#endif
#endif
core/src/index/unittest/test_idmap.cpp
浏览文件 @
a764aa57
...
@@ -23,8 +23,8 @@
...
@@ -23,8 +23,8 @@
#include "knowhere/index/vector_index/IndexIDMAP.h"
#include "knowhere/index/vector_index/IndexIDMAP.h"
#include "knowhere/index/vector_index/helpers/Cloner.h"
#include "knowhere/index/vector_index/helpers/Cloner.h"
#include "unittest/utils.h"
#include "Helper.h"
#include "Helper.h"
#include "unittest/utils.h"
class
IDMAPTest
:
public
DataGen
,
public
TestGpuIndexBase
{
class
IDMAPTest
:
public
DataGen
,
public
TestGpuIndexBase
{
protected:
protected:
...
@@ -61,7 +61,7 @@ TEST_F(IDMAPTest, idmap_basic) {
...
@@ -61,7 +61,7 @@ TEST_F(IDMAPTest, idmap_basic) {
ASSERT_TRUE
(
index_
->
GetRawIds
()
!=
nullptr
);
ASSERT_TRUE
(
index_
->
GetRawIds
()
!=
nullptr
);
auto
result
=
index_
->
Search
(
query_dataset
,
conf
);
auto
result
=
index_
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
result
,
nq
,
k
);
AssertAnns
(
result
,
nq
,
k
);
// PrintResult(result, nq, k);
// PrintResult(result, nq, k);
index_
->
Seal
();
index_
->
Seal
();
auto
binaryset
=
index_
->
Serialize
();
auto
binaryset
=
index_
->
Serialize
();
...
@@ -69,7 +69,7 @@ TEST_F(IDMAPTest, idmap_basic) {
...
@@ -69,7 +69,7 @@ TEST_F(IDMAPTest, idmap_basic) {
new_index
->
Load
(
binaryset
);
new_index
->
Load
(
binaryset
);
auto
re_result
=
index_
->
Search
(
query_dataset
,
conf
);
auto
re_result
=
index_
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
re_result
,
nq
,
k
);
AssertAnns
(
re_result
,
nq
,
k
);
// PrintResult(re_result, nq, k);
// PrintResult(re_result, nq, k);
}
}
TEST_F
(
IDMAPTest
,
idmap_serialize
)
{
TEST_F
(
IDMAPTest
,
idmap_serialize
)
{
...
@@ -92,7 +92,7 @@ TEST_F(IDMAPTest, idmap_serialize) {
...
@@ -92,7 +92,7 @@ TEST_F(IDMAPTest, idmap_serialize) {
index_
->
Add
(
base_dataset
,
knowhere
::
Config
());
index_
->
Add
(
base_dataset
,
knowhere
::
Config
());
auto
re_result
=
index_
->
Search
(
query_dataset
,
conf
);
auto
re_result
=
index_
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
re_result
,
nq
,
k
);
AssertAnns
(
re_result
,
nq
,
k
);
// PrintResult(re_result, nq, k);
// PrintResult(re_result, nq, k);
EXPECT_EQ
(
index_
->
Count
(),
nb
);
EXPECT_EQ
(
index_
->
Count
(),
nb
);
EXPECT_EQ
(
index_
->
Dimension
(),
dim
);
EXPECT_EQ
(
index_
->
Dimension
(),
dim
);
auto
binaryset
=
index_
->
Serialize
();
auto
binaryset
=
index_
->
Serialize
();
...
@@ -112,7 +112,7 @@ TEST_F(IDMAPTest, idmap_serialize) {
...
@@ -112,7 +112,7 @@ TEST_F(IDMAPTest, idmap_serialize) {
EXPECT_EQ
(
index_
->
Dimension
(),
dim
);
EXPECT_EQ
(
index_
->
Dimension
(),
dim
);
auto
result
=
index_
->
Search
(
query_dataset
,
conf
);
auto
result
=
index_
->
Search
(
query_dataset
,
conf
);
AssertAnns
(
result
,
nq
,
k
);
AssertAnns
(
result
,
nq
,
k
);
// PrintResult(result, nq, k);
// PrintResult(result, nq, k);
}
}
}
}
...
...
core/src/index/unittest/test_ivf.cpp
浏览文件 @
a764aa57
...
@@ -35,8 +35,8 @@
...
@@ -35,8 +35,8 @@
#include "knowhere/index/vector_index/IndexIVFSQHybrid.h"
#include "knowhere/index/vector_index/IndexIVFSQHybrid.h"
#include "knowhere/index/vector_index/helpers/Cloner.h"
#include "knowhere/index/vector_index/helpers/Cloner.h"
#include "unittest/utils.h"
#include "unittest/Helper.h"
#include "unittest/Helper.h"
#include "unittest/utils.h"
using
::
testing
::
Combine
;
using
::
testing
::
Combine
;
using
::
testing
::
TestWithParam
;
using
::
testing
::
TestWithParam
;
...
@@ -78,16 +78,15 @@ class IVFTest : public DataGen, public TestWithParam<::std::tuple<std::string, P
...
@@ -78,16 +78,15 @@ class IVFTest : public DataGen, public TestWithParam<::std::tuple<std::string, P
};
};
INSTANTIATE_TEST_CASE_P
(
IVFParameters
,
IVFTest
,
INSTANTIATE_TEST_CASE_P
(
IVFParameters
,
IVFTest
,
Values
(
Values
(
std
::
make_tuple
(
"IVF"
,
ParameterType
::
ivf
),
std
::
make_tuple
(
"IVF"
,
ParameterType
::
ivf
),
std
::
make_tuple
(
"GPUIVF"
,
ParameterType
::
ivf
),
std
::
make_tuple
(
"GPUIVF"
,
ParameterType
::
ivf
),
std
::
make_tuple
(
"IVFPQ"
,
ParameterType
::
ivfpq
),
std
::
make_tuple
(
"IVFPQ"
,
ParameterType
::
ivfpq
),
std
::
make_tuple
(
"GPUIVFPQ"
,
ParameterType
::
ivfpq
),
std
::
make_tuple
(
"GPUIVFPQ"
,
ParameterType
::
ivfpq
),
std
::
make_tuple
(
"IVFSQ"
,
ParameterType
::
ivfsq
),
std
::
make_tuple
(
"IVFSQ"
,
ParameterType
::
ivfsq
),
#ifdef CUSTOMIZATION
#ifdef CUSTOMIZATION
std
::
make_tuple
(
"IVFSQHybrid"
,
ParameterType
::
ivfsq
),
std
::
make_tuple
(
"IVFSQHybrid"
,
ParameterType
::
ivfsq
),
#endif
#endif
std
::
make_tuple
(
"GPUIVFSQ"
,
ParameterType
::
ivfsq
)));
std
::
make_tuple
(
"GPUIVFSQ"
,
ParameterType
::
ivfsq
)));
TEST_P
(
IVFTest
,
ivf_basic
)
{
TEST_P
(
IVFTest
,
ivf_basic
)
{
assert
(
!
xb
.
empty
());
assert
(
!
xb
.
empty
());
...
@@ -223,11 +222,11 @@ TEST_P(IVFTest, clone_test) {
...
@@ -223,11 +222,11 @@ TEST_P(IVFTest, clone_test) {
auto
finder
=
std
::
find
(
support_idx_vec
.
cbegin
(),
support_idx_vec
.
cend
(),
index_type
);
auto
finder
=
std
::
find
(
support_idx_vec
.
cbegin
(),
support_idx_vec
.
cend
(),
index_type
);
if
(
finder
!=
support_idx_vec
.
cend
())
{
if
(
finder
!=
support_idx_vec
.
cend
())
{
EXPECT_NO_THROW
({
EXPECT_NO_THROW
({
auto
clone_index
=
knowhere
::
cloner
::
CopyGpuToCpu
(
index_
,
knowhere
::
Config
());
auto
clone_index
=
knowhere
::
cloner
::
CopyGpuToCpu
(
index_
,
knowhere
::
Config
());
auto
clone_result
=
clone_index
->
Search
(
query_dataset
,
conf
);
auto
clone_result
=
clone_index
->
Search
(
query_dataset
,
conf
);
AssertEqual
(
result
,
clone_result
);
AssertEqual
(
result
,
clone_result
);
std
::
cout
<<
"clone G <=> C ["
<<
index_type
<<
"] success"
<<
std
::
endl
;
std
::
cout
<<
"clone G <=> C ["
<<
index_type
<<
"] success"
<<
std
::
endl
;
});
});
}
else
{
}
else
{
EXPECT_THROW
(
EXPECT_THROW
(
{
{
...
@@ -244,12 +243,11 @@ TEST_P(IVFTest, clone_test) {
...
@@ -244,12 +243,11 @@ TEST_P(IVFTest, clone_test) {
auto
finder
=
std
::
find
(
support_idx_vec
.
cbegin
(),
support_idx_vec
.
cend
(),
index_type
);
auto
finder
=
std
::
find
(
support_idx_vec
.
cbegin
(),
support_idx_vec
.
cend
(),
index_type
);
if
(
finder
!=
support_idx_vec
.
cend
())
{
if
(
finder
!=
support_idx_vec
.
cend
())
{
EXPECT_NO_THROW
({
EXPECT_NO_THROW
({
auto
auto
clone_index
=
knowhere
::
cloner
::
CopyCpuToGpu
(
index_
,
DEVICEID
,
knowhere
::
Config
());
clone_index
=
knowhere
::
cloner
::
CopyCpuToGpu
(
index_
,
DEVICEID
,
knowhere
::
Config
());
auto
clone_result
=
clone_index
->
Search
(
query_dataset
,
conf
);
auto
clone_result
=
clone_index
->
Search
(
query_dataset
,
conf
);
AssertEqual
(
result
,
clone_result
);
AssertEqual
(
result
,
clone_result
);
std
::
cout
<<
"clone C <=> G ["
<<
index_type
<<
"] success"
<<
std
::
endl
;
std
::
cout
<<
"clone C <=> G ["
<<
index_type
<<
"] success"
<<
std
::
endl
;
});
});
}
else
{
}
else
{
EXPECT_THROW
(
EXPECT_THROW
(
{
{
...
...
core/src/index/unittest/test_nsg/test_nsg.cpp
浏览文件 @
a764aa57
...
@@ -84,13 +84,11 @@ TEST_F(NSGInterfaceTest, basic_test) {
...
@@ -84,13 +84,11 @@ TEST_F(NSGInterfaceTest, basic_test) {
ASSERT_EQ
(
index_
->
Count
(),
nb
);
ASSERT_EQ
(
index_
->
Count
(),
nb
);
ASSERT_EQ
(
index_
->
Dimension
(),
dim
);
ASSERT_EQ
(
index_
->
Dimension
(),
dim
);
ASSERT_THROW
({
ASSERT_THROW
({
index_
->
Clone
();
},
knowhere
::
KnowhereException
);
index_
->
Clone
();
},
knowhere
::
KnowhereException
);
ASSERT_NO_THROW
({
ASSERT_NO_THROW
({
index_
->
Add
(
base_dataset
,
knowhere
::
Config
());
index_
->
Add
(
base_dataset
,
knowhere
::
Config
());
index_
->
Seal
();
index_
->
Seal
();
});
});
{
{
// std::cout << "k = 1" << std::endl;
// std::cout << "k = 1" << std::endl;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录