Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
1dc7b321
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,发现更多精彩内容 >>
提交
1dc7b321
编写于
10月 31, 2019
作者:
F
fishpenguin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Read config once in optimizer
Former-commit-id: 8fee2a3cfa20cdc8b51e86867b7b3eb71dd2e759
上级
a68255f9
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
32 addition
and
31 deletion
+32
-31
core/src/scheduler/SchedInst.h
core/src/scheduler/SchedInst.h
+13
-1
core/src/scheduler/optimizer/OnlyCPUPass.cpp
core/src/scheduler/optimizer/OnlyCPUPass.cpp
+7
-7
core/src/scheduler/optimizer/OnlyGPUPass.cpp
core/src/scheduler/optimizer/OnlyGPUPass.cpp
+10
-22
core/src/scheduler/optimizer/OnlyGPUPass.h
core/src/scheduler/optimizer/OnlyGPUPass.h
+2
-1
未找到文件。
core/src/scheduler/SchedInst.h
浏览文件 @
1dc7b321
...
...
@@ -26,9 +26,11 @@
#include "optimizer/OnlyCPUPass.h"
#include "optimizer/OnlyGPUPass.h"
#include "optimizer/Optimizer.h"
#include "server/Config.h"
#include <memory>
#include <mutex>
#include <string>
#include <vector>
namespace
milvus
{
...
...
@@ -95,11 +97,21 @@ class OptimizerInst {
if
(
instance
==
nullptr
)
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
mutex_
);
if
(
instance
==
nullptr
)
{
server
::
Config
&
config
=
server
::
Config
::
GetInstance
();
std
::
vector
<
std
::
string
>
search_resources
;
bool
has_cpu
=
false
;
config
.
GetResourceConfigSearchResources
(
search_resources
);
for
(
auto
&
resource
:
search_resources
)
{
if
(
resource
==
"cpu"
)
{
has_cpu
=
true
;
}
}
std
::
vector
<
PassPtr
>
pass_list
;
pass_list
.
push_back
(
std
::
make_shared
<
LargeSQ8HPass
>
());
pass_list
.
push_back
(
std
::
make_shared
<
HybridPass
>
());
pass_list
.
push_back
(
std
::
make_shared
<
OnlyCPUPass
>
());
pass_list
.
push_back
(
std
::
make_shared
<
OnlyGPUPass
>
());
pass_list
.
push_back
(
std
::
make_shared
<
OnlyGPUPass
>
(
has_cpu
));
instance
=
std
::
make_shared
<
Optimizer
>
(
pass_list
);
}
}
...
...
core/src/scheduler/optimizer/OnlyCPUPass.cpp
浏览文件 @
1dc7b321
...
...
@@ -35,13 +35,13 @@ OnlyCPUPass::Run(const TaskPtr& task) {
}
auto
gpu_id
=
get_gpu_pool
();
if
(
gpu_id
.
empty
())
{
if
(
not
gpu_id
.
empty
())
return
false
;
ResourcePtr
res_ptr
=
ResMgrInst
::
GetInstance
()
->
GetResource
(
"cpu"
);
auto
label
=
std
::
make_shared
<
SpecResLabel
>
(
std
::
weak_ptr
<
Resource
>
(
res_ptr
));
task
->
label
()
=
label
;
return
true
;
}
return
false
;
}
}
// namespace scheduler
...
...
core/src/scheduler/optimizer/OnlyGPUPass.cpp
浏览文件 @
1dc7b321
...
...
@@ -20,14 +20,16 @@
#include "scheduler/Utils.h"
#include "scheduler/task/SearchTask.h"
#include "scheduler/tasklabel/SpecResLabel.h"
#include "server/Config.h"
namespace
milvus
{
namespace
scheduler
{
OnlyGPUPass
::
OnlyGPUPass
(
bool
has_cpu
)
:
has_cpu_
(
has_cpu
)
{
}
bool
OnlyGPUPass
::
Run
(
const
TaskPtr
&
task
)
{
if
(
task
->
Type
()
!=
TaskType
::
SearchTask
)
if
(
task
->
Type
()
!=
TaskType
::
SearchTask
||
has_cpu_
)
return
false
;
auto
search_task
=
std
::
static_pointer_cast
<
XSearchTask
>
(
task
);
...
...
@@ -36,29 +38,15 @@ OnlyGPUPass::Run(const TaskPtr& task) {
return
false
;
}
server
::
Config
&
config
=
server
::
Config
::
GetInstance
();
std
::
vector
<
std
::
string
>
search_resources
;
config
.
GetResourceConfigSearchResources
(
search_resources
);
for
(
auto
&
resource
:
search_resources
)
{
if
(
resource
==
"cpu"
)
{
auto
gpu_id
=
get_gpu_pool
();
if
(
gpu_id
.
empty
())
return
false
;
}
}
auto
gpu_id
=
get_gpu_pool
();
if
(
!
gpu_id
.
empty
())
{
ResourcePtr
res_ptr
=
ResMgrInst
::
GetInstance
()
->
GetResource
(
ResourceType
::
GPU
,
gpu_id
[
specified_gpu_id_
]);
auto
label
=
std
::
make_shared
<
SpecResLabel
>
(
std
::
weak_ptr
<
Resource
>
(
res_ptr
));
task
->
label
()
=
label
;
}
else
{
return
false
;
}
if
(
specified_gpu_id_
<
gpu_id
.
size
()
-
1
)
{
++
specified_gpu_id_
;
}
else
{
specified_gpu_id_
=
0
;
}
specified_gpu_id_
=
specified_gpu_id_
++
%
gpu_id
.
size
();
return
true
;
}
...
...
core/src/scheduler/optimizer/OnlyGPUPass.h
浏览文件 @
1dc7b321
...
...
@@ -34,7 +34,7 @@ namespace scheduler {
class
OnlyGPUPass
:
public
Pass
{
public:
OnlyGPUPass
()
=
default
;
explicit
OnlyGPUPass
(
bool
has_cpu
)
;
public:
bool
...
...
@@ -42,6 +42,7 @@ class OnlyGPUPass : public Pass {
private:
uint64_t
specified_gpu_id_
=
0
;
bool
has_cpu_
=
false
;
};
using
OnlyGPUPassPtr
=
std
::
shared_ptr
<
OnlyGPUPass
>
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录