Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
94057d9d
M
milvus
项目概览
milvus
/
milvus
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
94057d9d
编写于
4月 30, 2019
作者:
X
Xu Peng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor(db): refactor search with execution engine
Former-commit-id: 1625a8aff9582e61e6bb687b4da40f7721610f91
上级
473d603a
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
36 addition
and
8 deletion
+36
-8
cpp/src/db/DBImpl.cpp
cpp/src/db/DBImpl.cpp
+4
-8
cpp/src/db/ExecutionEngine.h
cpp/src/db/ExecutionEngine.h
+8
-0
cpp/src/db/FaissExecutionEngine.cpp
cpp/src/db/FaissExecutionEngine.cpp
+16
-0
cpp/src/db/FaissExecutionEngine.h
cpp/src/db/FaissExecutionEngine.h
+8
-0
未找到文件。
cpp/src/db/DBImpl.cpp
浏览文件 @
94057d9d
...
@@ -118,17 +118,13 @@ Status DBImpl::search(const std::string& group_id, size_t k, size_t nq,
...
@@ -118,17 +118,13 @@ Status DBImpl::search(const std::string& group_id, size_t k, size_t nq,
auto
search_in_index
=
[
&
](
meta
::
GroupFilesSchema
&
file_vec
)
->
void
{
auto
search_in_index
=
[
&
](
meta
::
GroupFilesSchema
&
file_vec
)
->
void
{
for
(
auto
&
file
:
file_vec
)
{
for
(
auto
&
file
:
file_vec
)
{
auto
index
=
zilliz
::
vecwise
::
cache
::
CpuCacheMgr
::
GetInstance
()
->
GetIndex
(
file
.
location
);
FaissExecutionEngine
index
(
file
.
dimension
,
file
.
location
);
if
(
!
index
)
{
index
.
Load
();
LOG
(
DEBUG
)
<<
"Disk io from: "
<<
file
.
location
;
auto
file_size
=
index
.
PhysicalSize
()
/
(
1024
*
1024
);
index
=
read_index
(
file
.
location
.
c_str
());
zilliz
::
vecwise
::
cache
::
CpuCacheMgr
::
GetInstance
()
->
InsertItem
(
file
.
location
,
index
);
}
auto
file_size
=
index
->
dim
*
index
->
ntotal
*
4
/
(
1024
*
1024
);
search_set_size
+=
file_size
;
search_set_size
+=
file_size
;
LOG
(
DEBUG
)
<<
"Search file_type "
<<
file
.
file_type
<<
" Of Size: "
LOG
(
DEBUG
)
<<
"Search file_type "
<<
file
.
file_type
<<
" Of Size: "
<<
file_size
<<
" M"
;
<<
file_size
<<
" M"
;
index
->
s
earch
(
nq
,
vectors
,
k
,
output_distence
,
output_ids
);
index
.
S
earch
(
nq
,
vectors
,
k
,
output_distence
,
output_ids
);
cluster
(
output_ids
,
output_distence
);
// cluster to each query
cluster
(
output_ids
,
output_distence
);
// cluster to each query
memset
(
output_distence
,
0
,
k
*
nq
*
sizeof
(
float
));
memset
(
output_distence
,
0
,
k
*
nq
*
sizeof
(
float
));
memset
(
output_ids
,
0
,
k
*
nq
*
sizeof
(
long
));
memset
(
output_ids
,
0
,
k
*
nq
*
sizeof
(
long
));
...
...
cpp/src/db/ExecutionEngine.h
浏览文件 @
94057d9d
...
@@ -23,12 +23,20 @@ public:
...
@@ -23,12 +23,20 @@ public:
virtual
size_t
Size
()
const
=
0
;
virtual
size_t
Size
()
const
=
0
;
virtual
size_t
PhysicalSize
()
const
=
0
;
virtual
Status
Serialize
()
=
0
;
virtual
Status
Serialize
()
=
0
;
virtual
Status
Load
()
=
0
;
virtual
Status
Load
()
=
0
;
virtual
Status
Merge
(
const
std
::
string
&
location
)
=
0
;
virtual
Status
Merge
(
const
std
::
string
&
location
)
=
0
;
virtual
Status
Search
(
long
n
,
const
float
*
data
,
long
k
,
float
*
distances
,
long
*
labels
)
const
=
0
;
virtual
std
::
shared_ptr
<
ExecutionEngine
>
BuildIndex
(
const
std
::
string
&
)
=
0
;
virtual
std
::
shared_ptr
<
ExecutionEngine
>
BuildIndex
(
const
std
::
string
&
)
=
0
;
virtual
Status
Cache
()
=
0
;
virtual
Status
Cache
()
=
0
;
...
...
cpp/src/db/FaissExecutionEngine.cpp
浏览文件 @
94057d9d
...
@@ -39,6 +39,10 @@ size_t FaissExecutionEngine::Size() const {
...
@@ -39,6 +39,10 @@ size_t FaissExecutionEngine::Size() const {
return
(
size_t
)(
Count
()
*
pIndex_
->
d
);
return
(
size_t
)(
Count
()
*
pIndex_
->
d
);
}
}
size_t
FaissExecutionEngine
::
PhysicalSize
()
const
{
return
(
size_t
)(
Size
()
*
sizeof
(
float
));
}
Status
FaissExecutionEngine
::
Serialize
()
{
Status
FaissExecutionEngine
::
Serialize
()
{
write_index
(
pIndex_
.
get
(),
location_
.
c_str
());
write_index
(
pIndex_
.
get
(),
location_
.
c_str
());
return
Status
::
OK
();
return
Status
::
OK
();
...
@@ -48,6 +52,8 @@ Status FaissExecutionEngine::Load() {
...
@@ -48,6 +52,8 @@ Status FaissExecutionEngine::Load() {
auto
index
=
zilliz
::
vecwise
::
cache
::
CpuCacheMgr
::
GetInstance
()
->
GetIndex
(
location_
);
auto
index
=
zilliz
::
vecwise
::
cache
::
CpuCacheMgr
::
GetInstance
()
->
GetIndex
(
location_
);
if
(
!
index
)
{
if
(
!
index
)
{
index
=
read_index
(
location_
);
index
=
read_index
(
location_
);
Cache
();
LOG
(
DEBUG
)
<<
"Disk io from: "
<<
location_
;
}
}
pIndex_
=
index
->
data
();
pIndex_
=
index
->
data
();
...
@@ -85,6 +91,16 @@ std::shared_ptr<ExecutionEngine> FaissExecutionEngine::BuildIndex(const std::str
...
@@ -85,6 +91,16 @@ std::shared_ptr<ExecutionEngine> FaissExecutionEngine::BuildIndex(const std::str
return
new_ee
;
return
new_ee
;
}
}
Status
FaissExecutionEngine
::
Search
(
long
n
,
const
float
*
data
,
long
k
,
float
*
distances
,
long
*
labels
)
const
{
pIndex_
->
search
(
n
,
data
,
k
,
distances
,
labels
);
return
Status
::
OK
();
}
Status
FaissExecutionEngine
::
Cache
()
{
Status
FaissExecutionEngine
::
Cache
()
{
zilliz
::
vecwise
::
cache
::
CpuCacheMgr
::
GetInstance
(
zilliz
::
vecwise
::
cache
::
CpuCacheMgr
::
GetInstance
(
)
->
InsertItem
(
location_
,
std
::
make_shared
<
Index
>
(
pIndex_
));
)
->
InsertItem
(
location_
,
std
::
make_shared
<
Index
>
(
pIndex_
));
...
...
cpp/src/db/FaissExecutionEngine.h
浏览文件 @
94057d9d
...
@@ -24,6 +24,8 @@ public:
...
@@ -24,6 +24,8 @@ public:
virtual
size_t
Size
()
const
override
;
virtual
size_t
Size
()
const
override
;
virtual
size_t
PhysicalSize
()
const
override
;
virtual
Status
Merge
(
const
std
::
string
&
location
)
override
;
virtual
Status
Merge
(
const
std
::
string
&
location
)
override
;
virtual
Status
Serialize
()
override
;
virtual
Status
Serialize
()
override
;
...
@@ -31,6 +33,12 @@ public:
...
@@ -31,6 +33,12 @@ public:
virtual
Status
Cache
()
override
;
virtual
Status
Cache
()
override
;
virtual
Status
Search
(
long
n
,
const
float
*
data
,
long
k
,
float
*
distances
,
long
*
labels
)
const
override
;
virtual
std
::
shared_ptr
<
ExecutionEngine
>
BuildIndex
(
const
std
::
string
&
)
override
;
virtual
std
::
shared_ptr
<
ExecutionEngine
>
BuildIndex
(
const
std
::
string
&
)
override
;
protected:
protected:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录