Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
Mace
提交
0e5f81a0
Mace
项目概览
Xiaomi
/
Mace
通知
106
Star
40
Fork
27
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mace
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0e5f81a0
编写于
7月 06, 2018
作者:
B
Bin Li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- return SetThreadAffinity result instead of abort
- change android demo min sdk to 19 - fix android demo cp error on MacOS
上级
07a33cd5
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
44 addition
and
21 deletion
+44
-21
mace/benchmark/benchmark_model.cc
mace/benchmark/benchmark_model.cc
+4
-1
mace/core/runtime/cpu/cpu_runtime.cc
mace/core/runtime/cpu/cpu_runtime.cc
+22
-10
mace/core/runtime/cpu/cpu_runtime.h
mace/core/runtime/cpu/cpu_runtime.h
+2
-2
mace/core/testing/test_benchmark_main.cc
mace/core/testing/test_benchmark_main.cc
+5
-1
mace/examples/android/app/build.gradle
mace/examples/android/app/build.gradle
+1
-1
mace/examples/android/app/src/main/java/com/xiaomi/mace/demo/result/InitData.java
...p/src/main/java/com/xiaomi/mace/demo/result/InitData.java
+1
-1
mace/examples/android/build.sh
mace/examples/android/build.sh
+2
-2
mace/examples/android/macelibrary/build.gradle
mace/examples/android/macelibrary/build.gradle
+1
-1
mace/public/mace_runtime.h
mace/public/mace_runtime.h
+2
-1
mace/tools/validation/mace_run.cc
mace/tools/validation/mace_run.cc
+4
-1
未找到文件。
mace/benchmark/benchmark_model.cc
浏览文件 @
0e5f81a0
...
@@ -253,9 +253,12 @@ int Main(int argc, char **argv) {
...
@@ -253,9 +253,12 @@ int Main(int argc, char **argv) {
mace
::
DeviceType
device_type
=
ParseDeviceType
(
FLAGS_device
);
mace
::
DeviceType
device_type
=
ParseDeviceType
(
FLAGS_device
);
// config runtime
// config runtime
mace
::
SetOpenMPThreadPolicy
(
MaceStatus
ret
=
mace
::
SetOpenMPThreadPolicy
(
FLAGS_omp_num_threads
,
FLAGS_omp_num_threads
,
static_cast
<
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
static_cast
<
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
if
(
ret
!=
MACE_SUCCESS
)
{
LOG
(
WARNING
)
<<
"Set openmp or cpu affinity failed."
;
}
#ifdef MACE_ENABLE_OPENCL
#ifdef MACE_ENABLE_OPENCL
if
(
device_type
==
DeviceType
::
GPU
)
{
if
(
device_type
==
DeviceType
::
GPU
)
{
mace
::
SetGPUHints
(
mace
::
SetGPUHints
(
...
...
mace/core/runtime/cpu/cpu_runtime.cc
浏览文件 @
0e5f81a0
...
@@ -77,14 +77,19 @@ int GetCPUMaxFreq(int cpu_id) {
...
@@ -77,14 +77,19 @@ int GetCPUMaxFreq(int cpu_id) {
return
freq
;
return
freq
;
}
}
void
SetThreadAffinity
(
cpu_set_t
mask
)
{
MaceStatus
SetThreadAffinity
(
cpu_set_t
mask
)
{
#if defined(__ANDROID__)
#if defined(__ANDROID__)
pid_t
pid
=
gettid
();
pid_t
pid
=
gettid
();
#else
#else
pid_t
pid
=
syscall
(
SYS_gettid
);
pid_t
pid
=
syscall
(
SYS_gettid
);
#endif
#endif
int
err
=
sched_setaffinity
(
pid
,
sizeof
(
mask
),
&
mask
);
int
err
=
sched_setaffinity
(
pid
,
sizeof
(
mask
),
&
mask
);
MACE_CHECK
(
err
==
0
,
"set affinity error: "
,
strerror
(
errno
));
if
(
err
)
{
LOG
(
WARNING
)
<<
"set affinity error: "
<<
strerror
(
errno
);
return
MACE_INVALID_ARGS
;
}
else
{
return
MACE_SUCCESS
;
}
}
}
}
// namespace
}
// namespace
...
@@ -129,8 +134,8 @@ MaceStatus GetCPUBigLittleCoreIDs(std::vector<int> *big_core_ids,
...
@@ -129,8 +134,8 @@ MaceStatus GetCPUBigLittleCoreIDs(std::vector<int> *big_core_ids,
return
MACE_SUCCESS
;
return
MACE_SUCCESS
;
}
}
void
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
MaceStatus
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
)
{
const
std
::
vector
<
int
>
&
cpu_ids
)
{
#ifdef MACE_ENABLE_OPENMP
#ifdef MACE_ENABLE_OPENMP
VLOG
(
1
)
<<
"Set OpenMP threads number: "
<<
omp_num_threads
VLOG
(
1
)
<<
"Set OpenMP threads number: "
<<
omp_num_threads
<<
", CPU core IDs: "
<<
MakeString
(
cpu_ids
);
<<
", CPU core IDs: "
<<
MakeString
(
cpu_ids
);
...
@@ -146,17 +151,23 @@ void SetOpenMPThreadsAndAffinityCPUs(int omp_num_threads,
...
@@ -146,17 +151,23 @@ void SetOpenMPThreadsAndAffinityCPUs(int omp_num_threads,
for
(
auto
cpu_id
:
cpu_ids
)
{
for
(
auto
cpu_id
:
cpu_ids
)
{
CPU_SET
(
cpu_id
,
&
mask
);
CPU_SET
(
cpu_id
,
&
mask
);
}
}
#ifdef MACE_ENABLE_OPENMP
#ifdef MACE_ENABLE_OPENMP
std
::
vector
<
MaceStatus
>
status
(
omp_num_threads
);
#pragma omp parallel for
#pragma omp parallel for
for
(
int
i
=
0
;
i
<
omp_num_threads
;
++
i
)
{
for
(
int
i
=
0
;
i
<
omp_num_threads
;
++
i
)
{
VLOG
(
1
)
<<
"Set affinity for OpenMP thread "
<<
omp_get_thread_num
()
VLOG
(
1
)
<<
"Set affinity for OpenMP thread "
<<
omp_get_thread_num
()
<<
"/"
<<
omp_get_num_threads
();
<<
"/"
<<
omp_get_num_threads
();
SetThreadAffinity
(
mask
);
status
[
i
]
=
SetThreadAffinity
(
mask
);
}
for
(
int
i
=
0
;
i
<
omp_num_threads
;
++
i
)
{
if
(
status
[
i
]
!=
MACE_SUCCESS
)
return
MACE_INVALID_ARGS
;
}
}
return
MACE_SUCCESS
;
#else
#else
SetThreadAffinity
(
mask
);
MaceStatus
status
=
SetThreadAffinity
(
mask
);
VLOG
(
1
)
<<
"Set affinity without OpenMP: "
<<
mask
.
__bits
[
0
];
VLOG
(
1
)
<<
"Set affinity without OpenMP: "
<<
mask
.
__bits
[
0
];
return
status
;
#endif
#endif
}
}
...
@@ -191,8 +202,8 @@ MaceStatus SetOpenMPThreadsAndAffinityPolicy(int omp_num_threads_hint,
...
@@ -191,8 +202,8 @@ MaceStatus SetOpenMPThreadsAndAffinityPolicy(int omp_num_threads_hint,
omp_num_threads_hint
>
static_cast
<
int
>
(
use_cpu_ids
.
size
()))
{
omp_num_threads_hint
>
static_cast
<
int
>
(
use_cpu_ids
.
size
()))
{
omp_num_threads_hint
=
use_cpu_ids
.
size
();
omp_num_threads_hint
=
use_cpu_ids
.
size
();
}
}
SetOpenMPThreadsAndAffinityCPUs
(
omp_num_threads_hint
,
use_cpu_ids
);
return
MACE_SUCCESS
;
return
SetOpenMPThreadsAndAffinityCPUs
(
omp_num_threads_hint
,
use_cpu_ids
)
;
}
}
MaceStatus
SetOpenMPThreadPolicy
(
int
num_threads_hint
,
MaceStatus
SetOpenMPThreadPolicy
(
int
num_threads_hint
,
...
@@ -202,7 +213,8 @@ MaceStatus SetOpenMPThreadPolicy(int num_threads_hint,
...
@@ -202,7 +213,8 @@ MaceStatus SetOpenMPThreadPolicy(int num_threads_hint,
return
SetOpenMPThreadsAndAffinityPolicy
(
num_threads_hint
,
policy
);
return
SetOpenMPThreadsAndAffinityPolicy
(
num_threads_hint
,
policy
);
}
}
void
SetOpenMPThreadAffinity
(
int
num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
)
{
MaceStatus
SetOpenMPThreadAffinity
(
int
num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
)
{
return
SetOpenMPThreadsAndAffinityCPUs
(
num_threads
,
cpu_ids
);
return
SetOpenMPThreadsAndAffinityCPUs
(
num_threads
,
cpu_ids
);
}
}
...
...
mace/core/runtime/cpu/cpu_runtime.h
浏览文件 @
0e5f81a0
...
@@ -25,8 +25,8 @@ namespace mace {
...
@@ -25,8 +25,8 @@ namespace mace {
MaceStatus
GetCPUBigLittleCoreIDs
(
std
::
vector
<
int
>
*
big_core_ids
,
MaceStatus
GetCPUBigLittleCoreIDs
(
std
::
vector
<
int
>
*
big_core_ids
,
std
::
vector
<
int
>
*
little_core_ids
);
std
::
vector
<
int
>
*
little_core_ids
);
void
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
MaceStatus
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
);
const
std
::
vector
<
int
>
&
cpu_ids
);
MaceStatus
SetOpenMPThreadsAndAffinityPolicy
(
int
omp_num_threads_hint
,
MaceStatus
SetOpenMPThreadsAndAffinityPolicy
(
int
omp_num_threads_hint
,
CPUAffinityPolicy
policy
);
CPUAffinityPolicy
policy
);
...
...
mace/core/testing/test_benchmark_main.cc
浏览文件 @
0e5f81a0
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
#include "mace/core/testing/test_benchmark.h"
#include "mace/core/testing/test_benchmark.h"
#include "mace/public/mace.h"
#include "mace/public/mace.h"
#include "mace/public/mace_runtime.h"
#include "mace/public/mace_runtime.h"
#include "mace/utils/logging.h"
DEFINE_string
(
filter
,
"all"
,
"op benchmark regex filter, eg:.*CONV.*"
);
DEFINE_string
(
filter
,
"all"
,
"op benchmark regex filter, eg:.*CONV.*"
);
DEFINE_int32
(
gpu_perf_hint
,
3
,
"0:DEFAULT/1:LOW/2:NORMAL/3:HIGH"
);
DEFINE_int32
(
gpu_perf_hint
,
3
,
"0:DEFAULT/1:LOW/2:NORMAL/3:HIGH"
);
...
@@ -33,9 +34,12 @@ int main(int argc, char **argv) {
...
@@ -33,9 +34,12 @@ int main(int argc, char **argv) {
gflags
::
ParseCommandLineFlags
(
&
argc
,
&
argv
,
true
);
gflags
::
ParseCommandLineFlags
(
&
argc
,
&
argv
,
true
);
// config runtime
// config runtime
mace
::
SetOpenMPThreadPolicy
(
mace
::
MaceStatus
status
=
mace
::
SetOpenMPThreadPolicy
(
FLAGS_omp_num_threads
,
FLAGS_omp_num_threads
,
static_cast
<
mace
::
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
static_cast
<
mace
::
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
if
(
status
!=
mace
::
MACE_SUCCESS
)
{
LOG
(
WARNING
)
<<
"Set openmp or cpu affinity failed."
;
}
mace
::
SetGPUHints
(
mace
::
SetGPUHints
(
static_cast
<
mace
::
GPUPerfHint
>
(
FLAGS_gpu_perf_hint
),
static_cast
<
mace
::
GPUPerfHint
>
(
FLAGS_gpu_perf_hint
),
static_cast
<
mace
::
GPUPriorityHint
>
(
FLAGS_gpu_priority_hint
));
static_cast
<
mace
::
GPUPriorityHint
>
(
FLAGS_gpu_priority_hint
));
...
...
mace/examples/android/app/build.gradle
浏览文件 @
0e5f81a0
...
@@ -4,7 +4,7 @@ android {
...
@@ -4,7 +4,7 @@ android {
compileSdkVersion
26
compileSdkVersion
26
defaultConfig
{
defaultConfig
{
applicationId
"com.xiaomi.mace.demo"
applicationId
"com.xiaomi.mace.demo"
minSdkVersion
23
minSdkVersion
19
targetSdkVersion
26
targetSdkVersion
26
versionCode
1
versionCode
1
versionName
"1.0"
versionName
"1.0"
...
...
mace/examples/android/app/src/main/java/com/xiaomi/mace/demo/result/InitData.java
浏览文件 @
0e5f81a0
...
@@ -34,7 +34,7 @@ public class InitData {
...
@@ -34,7 +34,7 @@ public class InitData {
public
InitData
()
{
public
InitData
()
{
model
=
MODELS
[
0
];
model
=
MODELS
[
0
];
ompNumThreads
=
2
;
ompNumThreads
=
2
;
cpuAffinityPolicy
=
1
;
cpuAffinityPolicy
=
0
;
gpuPerfHint
=
3
;
gpuPerfHint
=
3
;
gpuPriorityHint
=
3
;
gpuPriorityHint
=
3
;
device
=
DEVICES
[
0
];
device
=
DEVICES
[
0
];
...
...
mace/examples/android/build.sh
浏览文件 @
0e5f81a0
...
@@ -5,8 +5,8 @@ set -e -u -o pipefail
...
@@ -5,8 +5,8 @@ set -e -u -o pipefail
pushd
../../../
pushd
../../../
python tools/converter.py build
--config
=
docs/getting_started/models/demo_app_models.yaml
python tools/converter.py build
--config
=
docs/getting_started/models/demo_app_models.yaml
cp
-r
builds/mobilenet/include
/
mace/examples/android/macelibrary/src/main/cpp/
cp
-r
builds/mobilenet/include mace/examples/android/macelibrary/src/main/cpp/
cp
-r
builds/mobilenet/lib
/
mace/examples/android/macelibrary/src/main/cpp/
cp
-r
builds/mobilenet/lib mace/examples/android/macelibrary/src/main/cpp/
popd
popd
...
...
mace/examples/android/macelibrary/build.gradle
浏览文件 @
0e5f81a0
...
@@ -9,7 +9,7 @@ android {
...
@@ -9,7 +9,7 @@ android {
}
}
defaultConfig
{
defaultConfig
{
minSdkVersion
23
minSdkVersion
19
targetSdkVersion
26
targetSdkVersion
26
versionCode
1
versionCode
1
versionName
"1.0"
versionName
"1.0"
...
...
mace/public/mace_runtime.h
浏览文件 @
0e5f81a0
...
@@ -125,7 +125,8 @@ MaceStatus SetOpenMPThreadPolicy(int num_threads_hint,
...
@@ -125,7 +125,8 @@ MaceStatus SetOpenMPThreadPolicy(int num_threads_hint,
// affinity to offline cores may run very slow or unexpectedly. In such cases,
// affinity to offline cores may run very slow or unexpectedly. In such cases,
// please use SetOpenMPThreadPolicy with default policy instead.
// please use SetOpenMPThreadPolicy with default policy instead.
__attribute__
((
visibility
(
"default"
)))
__attribute__
((
visibility
(
"default"
)))
void
SetOpenMPThreadAffinity
(
int
num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
);
MaceStatus
SetOpenMPThreadAffinity
(
int
num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
);
// Get ARM big.LITTLE configuration.
// Get ARM big.LITTLE configuration.
//
//
...
...
mace/tools/validation/mace_run.cc
浏览文件 @
0e5f81a0
...
@@ -198,9 +198,12 @@ bool RunModel(const std::string &model_name,
...
@@ -198,9 +198,12 @@ bool RunModel(const std::string &model_name,
const
std
::
vector
<
std
::
vector
<
int64_t
>>
&
output_shapes
)
{
const
std
::
vector
<
std
::
vector
<
int64_t
>>
&
output_shapes
)
{
DeviceType
device_type
=
ParseDeviceType
(
FLAGS_device
);
DeviceType
device_type
=
ParseDeviceType
(
FLAGS_device
);
// config runtime
// config runtime
mace
::
SetOpenMPThreadPolicy
(
MaceStatus
status
=
mace
::
SetOpenMPThreadPolicy
(
FLAGS_omp_num_threads
,
FLAGS_omp_num_threads
,
static_cast
<
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
static_cast
<
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
if
(
status
!=
MACE_SUCCESS
)
{
LOG
(
WARNING
)
<<
"Set openmp or cpu affinity failed."
;
}
#ifdef MACE_ENABLE_OPENCL
#ifdef MACE_ENABLE_OPENCL
if
(
device_type
==
DeviceType
::
GPU
)
{
if
(
device_type
==
DeviceType
::
GPU
)
{
mace
::
SetGPUHints
(
mace
::
SetGPUHints
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录