Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
a21ad0b7
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,发现更多精彩内容 >>
提交
a21ad0b7
编写于
4月 26, 2019
作者:
G
groot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix task bug
Former-commit-id: f5debab3ff1c4000596f4cf625f37ba83ec54296
上级
a2780a90
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
56 addition
and
7 deletion
+56
-7
cpp/src/server/VecServiceTask.cpp
cpp/src/server/VecServiceTask.cpp
+36
-6
cpp/test_client/src/ClientApp.cpp
cpp/test_client/src/ClientApp.cpp
+20
-1
未找到文件。
cpp/src/server/VecServiceTask.cpp
浏览文件 @
a21ad0b7
...
...
@@ -72,11 +72,15 @@ ServerError AddGroupTask::OnExecute() {
engine
::
Status
stat
=
DB
()
->
add_group
(
group_info
);
if
(
!
stat
.
ok
())
{
SERVER_LOG_ERROR
<<
"Engine failed: "
<<
stat
.
ToString
();
return
SERVER_UNEXPECTED_ERROR
;
}
}
catch
(
std
::
exception
&
ex
)
{
SERVER_LOG_ERROR
<<
ex
.
what
();
return
SERVER_UNEXPECTED_ERROR
;
}
return
SERVER_SUCCESS
;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -100,13 +104,17 @@ ServerError GetGroupTask::OnExecute() {
engine
::
Status
stat
=
DB
()
->
get_group
(
group_info
);
if
(
!
stat
.
ok
())
{
SERVER_LOG_ERROR
<<
"Engine failed: "
<<
stat
.
ToString
();
return
SERVER_UNEXPECTED_ERROR
;
}
else
{
dimension_
=
(
int32_t
)
group_info
.
dimension
;
}
}
catch
(
std
::
exception
&
ex
)
{
SERVER_LOG_ERROR
<<
ex
.
what
();
return
SERVER_UNEXPECTED_ERROR
;
}
return
SERVER_SUCCESS
;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -127,6 +135,8 @@ ServerError DeleteGroupTask::OnExecute() {
}
catch
(
std
::
exception
&
ex
)
{
SERVER_LOG_ERROR
<<
ex
.
what
();
}
return
SERVER_SUCCESS
;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -150,9 +160,11 @@ ServerError AddSingleVectorTask::OnExecute() {
engine
::
Status
stat
=
DB
()
->
add_vectors
(
group_id_
,
1
,
vec_f
.
data
(),
vector_ids
);
if
(
!
stat
.
ok
())
{
SERVER_LOG_ERROR
<<
"Engine failed: "
<<
stat
.
ToString
();
return
SERVER_UNEXPECTED_ERROR
;
}
else
{
if
(
vector_ids
.
empty
())
{
SERVER_LOG_ERROR
<<
"Vector ID not returned"
;
return
SERVER_UNEXPECTED_ERROR
;
}
else
{
std
::
string
nid
=
group_id_
+
"_"
+
std
::
to_string
(
vector_ids
[
0
]);
IVecIdMapper
::
GetInstance
()
->
Put
(
nid
,
tensor_
.
uid
);
...
...
@@ -162,7 +174,10 @@ ServerError AddSingleVectorTask::OnExecute() {
}
catch
(
std
::
exception
&
ex
)
{
SERVER_LOG_ERROR
<<
ex
.
what
();
return
SERVER_UNEXPECTED_ERROR
;
}
return
SERVER_SUCCESS
;
}
...
...
@@ -192,16 +207,23 @@ ServerError AddBatchVectorTask::OnExecute() {
return
SERVER_UNEXPECTED_ERROR
;
}
uint64_t
vec_dim
=
group_info
.
dimension
;
uint64_t
vec_count
=
tensor_list_
.
tensor_list
.
size
();
std
::
vector
<
float
>
vec_f
;
vec_f
.
reserve
(
tensor_list_
.
tensor_list
.
size
()
*
group_info
.
dimension
*
4
);
for
(
const
VecTensor
&
tensor
:
tensor_list_
.
tensor_list
)
{
if
(
tensor
.
tensor
.
size
()
!=
group_info
.
dimension
)
{
SERVER_LOG_ERROR
<<
"Invalid vector data size: "
<<
tensor
.
tensor
.
size
()
<<
" vs. group dimension:"
<<
group_info
.
dimension
;
vec_f
.
resize
(
vec_count
*
vec_dim
);
//allocate enough memory
for
(
uint64_t
i
=
0
;
i
<
vec_count
;
i
++
)
{
const
std
::
vector
<
double
>&
tensor
=
tensor_list_
.
tensor_list
[
i
].
tensor
;
if
(
tensor
.
size
()
!=
group_info
.
dimension
)
{
SERVER_LOG_ERROR
<<
"Invalid vector data size: "
<<
tensor
.
size
()
<<
" vs. group dimension:"
<<
group_info
.
dimension
;
return
SERVER_UNEXPECTED_ERROR
;
}
vec_f
.
insert
(
vec_f
.
begin
(),
tensor
.
tensor
.
begin
(),
tensor
.
tensor
.
end
());
for
(
uint64_t
d
=
0
;
d
<
vec_dim
;
d
++
)
{
vec_f
[
i
*
vec_dim
+
d
]
=
(
float
)(
tensor
[
d
]);
}
}
rc
.
Record
(
"prepare vectors data"
);
engine
::
IDNumbers
vector_ids
;
...
...
@@ -212,6 +234,7 @@ ServerError AddBatchVectorTask::OnExecute() {
}
else
{
if
(
vector_ids
.
size
()
<
tensor_list_
.
tensor_list
.
size
())
{
SERVER_LOG_ERROR
<<
"Vector ID not returned"
;
return
SERVER_UNEXPECTED_ERROR
;
}
else
{
std
::
string
nid_prefix
=
group_id_
+
"_"
;
for
(
size_t
i
=
0
;
i
<
tensor_list_
.
tensor_list
.
size
();
i
++
)
{
...
...
@@ -224,7 +247,10 @@ ServerError AddBatchVectorTask::OnExecute() {
}
catch
(
std
::
exception
&
ex
)
{
SERVER_LOG_ERROR
<<
ex
.
what
();
return
SERVER_UNEXPECTED_ERROR
;
}
return
SERVER_SUCCESS
;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -261,6 +287,7 @@ ServerError SearchVectorTask::OnExecute() {
engine
::
Status
stat
=
DB
()
->
search
(
group_id_
,
(
size_t
)
top_k_
,
tensor_list_
.
tensor_list
.
size
(),
vec_f
.
data
(),
results
);
if
(
!
stat
.
ok
())
{
SERVER_LOG_ERROR
<<
"Engine failed: "
<<
stat
.
ToString
();
return
SERVER_UNEXPECTED_ERROR
;
}
else
{
for
(
engine
::
QueryResult
&
res
:
results
){
VecSearchResult
v_res
;
...
...
@@ -282,7 +309,10 @@ ServerError SearchVectorTask::OnExecute() {
}
catch
(
std
::
exception
&
ex
)
{
SERVER_LOG_ERROR
<<
ex
.
what
();
return
SERVER_UNEXPECTED_ERROR
;
}
return
SERVER_SUCCESS
;
}
}
...
...
cpp/test_client/src/ClientApp.cpp
浏览文件 @
a21ad0b7
...
...
@@ -9,10 +9,27 @@
#include "server/ServerConfig.h"
#include "Log.h"
#include <time.h>
namespace
zilliz
{
namespace
vecwise
{
namespace
client
{
namespace
{
std
::
string
CurrentTime
()
{
time_t
tt
;
time
(
&
tt
);
tt
=
tt
+
8
*
3600
;
tm
*
t
=
gmtime
(
&
tt
);
std
::
string
str
=
std
::
to_string
(
t
->
tm_year
+
1900
)
+
"_"
+
std
::
to_string
(
t
->
tm_mon
+
1
)
+
"_"
+
std
::
to_string
(
t
->
tm_mday
)
+
"_"
+
std
::
to_string
(
t
->
tm_hour
)
+
"_"
+
std
::
to_string
(
t
->
tm_min
)
+
"_"
+
std
::
to_string
(
t
->
tm_sec
);
return
str
;
}
}
void
ClientApp
::
Run
(
const
std
::
string
&
config_file
)
{
server
::
ServerConfig
&
config
=
server
::
ServerConfig
::
GetInstance
();
config
.
LoadConfigFile
(
config_file
);
...
...
@@ -33,7 +50,7 @@ void ClientApp::Run(const std::string &config_file) {
//add group
const
int32_t
dim
=
256
;
VecGroup
group
;
group
.
id
=
"test_group"
;
group
.
id
=
CurrentTime
()
;
group
.
dimension
=
dim
;
group
.
index_type
=
0
;
session
.
interface
()
->
add_group
(
group
);
...
...
@@ -73,6 +90,8 @@ void ClientApp::Run(const std::string &config_file) {
rc
.
Elapse
(
"done!"
);
}
sleep
(
20
);
//search vector
{
server
::
TimeRecorder
rc
(
"Search top_k"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录