Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
Mace
提交
21190cad
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,发现更多精彩内容 >>
提交
21190cad
编写于
7月 10, 2018
作者:
Y
yejianwu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of github.com:XiaoMi/mace into update_travis_ci
上级
8497d0a9
2b807d65
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
53 addition
and
73 deletion
+53
-73
.gitlab-ci.yml
.gitlab-ci.yml
+1
-1
mace/benchmark/benchmark_model.cc
mace/benchmark/benchmark_model.cc
+4
-1
mace/core/mace.cc
mace/core/mace.cc
+0
-3
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/runtime/hexagon/hexagon_control_wrapper.cc
mace/core/runtime/hexagon/hexagon_control_wrapper.cc
+2
-7
mace/core/runtime/hexagon/hexagon_control_wrapper.h
mace/core/runtime/hexagon/hexagon_control_wrapper.h
+1
-2
mace/core/runtime/hexagon/hexagon_controller.h
mace/core/runtime/hexagon/hexagon_controller.h
+0
-36
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
third_party/nnlib/hexagon_nn.h
third_party/nnlib/hexagon_nn.h
+5
-3
third_party/nnlib/libhexagon_controller.so
third_party/nnlib/libhexagon_controller.so
+0
-0
未找到文件。
.gitlab-ci.yml
浏览文件 @
21190cad
...
...
@@ -99,7 +99,7 @@ python_tools_tests:
script
:
-
pwd
-
rm -rf mace-models
-
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@
v9.git.n.xiaomi.com:deep-computing
/mace-models.git
-
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone git@
github.com:XiaoMi
/mace-models.git
-
CONF_FILE=mace-models/mobilenet-v2/mobilenet-v2.yml
-
sh -c "python tools/converter.py build --config=${CONF_FILE} --disable_tuning && python tools/converter.py run --config=${CONF_FILE} --round=1 --validate && python tools/converter.py run --config=${CONF_FILE} --example --round=1 --validate" || exit
1
-
rm -rf mace-models
mace/benchmark/benchmark_model.cc
浏览文件 @
21190cad
...
...
@@ -253,9 +253,12 @@ int Main(int argc, char **argv) {
mace
::
DeviceType
device_type
=
ParseDeviceType
(
FLAGS_device
);
// config runtime
mace
::
SetOpenMPThreadPolicy
(
MaceStatus
ret
=
mace
::
SetOpenMPThreadPolicy
(
FLAGS_omp_num_threads
,
static_cast
<
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
if
(
ret
!=
MACE_SUCCESS
)
{
LOG
(
WARNING
)
<<
"Set openmp or cpu affinity failed."
;
}
#ifdef MACE_ENABLE_OPENCL
if
(
device_type
==
DeviceType
::
GPU
)
{
mace
::
SetGPUHints
(
...
...
mace/core/mace.cc
浏览文件 @
21190cad
...
...
@@ -204,9 +204,6 @@ MaceStatus MaceEngine::Impl::Init(
MACE_CHECK
(
hexagon_controller_
->
Init
(),
"hexagon init error"
);
hexagon_controller_
->
SetDebugLevel
(
static_cast
<
int
>
(
mace
::
logging
::
LogMessage
::
MinVLogLevel
()));
int
dsp_mode
=
ProtoArgHelper
::
GetOptionalArg
<
NetDef
,
int
>
(
*
net_def
,
"dsp_mode"
,
0
);
hexagon_controller_
->
SetGraphMode
(
dsp_mode
);
MACE_CHECK
(
hexagon_controller_
->
SetupGraph
(
*
net_def
,
model_data
),
"hexagon setup graph error"
);
if
(
VLOG_IS_ON
(
2
))
{
...
...
mace/core/runtime/cpu/cpu_runtime.cc
浏览文件 @
21190cad
...
...
@@ -77,14 +77,19 @@ int GetCPUMaxFreq(int cpu_id) {
return
freq
;
}
void
SetThreadAffinity
(
cpu_set_t
mask
)
{
MaceStatus
SetThreadAffinity
(
cpu_set_t
mask
)
{
#if defined(__ANDROID__)
pid_t
pid
=
gettid
();
#else
pid_t
pid
=
syscall
(
SYS_gettid
);
#endif
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
...
...
@@ -129,8 +134,8 @@ MaceStatus GetCPUBigLittleCoreIDs(std::vector<int> *big_core_ids,
return
MACE_SUCCESS
;
}
void
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
)
{
MaceStatus
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
)
{
#ifdef MACE_ENABLE_OPENMP
VLOG
(
1
)
<<
"Set OpenMP threads number: "
<<
omp_num_threads
<<
", CPU core IDs: "
<<
MakeString
(
cpu_ids
);
...
...
@@ -146,17 +151,23 @@ void SetOpenMPThreadsAndAffinityCPUs(int omp_num_threads,
for
(
auto
cpu_id
:
cpu_ids
)
{
CPU_SET
(
cpu_id
,
&
mask
);
}
#ifdef MACE_ENABLE_OPENMP
std
::
vector
<
MaceStatus
>
status
(
omp_num_threads
);
#pragma omp parallel for
for
(
int
i
=
0
;
i
<
omp_num_threads
;
++
i
)
{
VLOG
(
1
)
<<
"Set affinity for OpenMP thread "
<<
omp_get_thread_num
()
<<
"/"
<<
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
SetThreadAffinity
(
mask
);
MaceStatus
status
=
SetThreadAffinity
(
mask
);
VLOG
(
1
)
<<
"Set affinity without OpenMP: "
<<
mask
.
__bits
[
0
];
return
status
;
#endif
}
...
...
@@ -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
=
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
,
...
...
@@ -202,7 +213,8 @@ MaceStatus SetOpenMPThreadPolicy(int num_threads_hint,
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
);
}
...
...
mace/core/runtime/cpu/cpu_runtime.h
浏览文件 @
21190cad
...
...
@@ -25,8 +25,8 @@ namespace mace {
MaceStatus
GetCPUBigLittleCoreIDs
(
std
::
vector
<
int
>
*
big_core_ids
,
std
::
vector
<
int
>
*
little_core_ids
);
void
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
);
MaceStatus
SetOpenMPThreadsAndAffinityCPUs
(
int
omp_num_threads
,
const
std
::
vector
<
int
>
&
cpu_ids
);
MaceStatus
SetOpenMPThreadsAndAffinityPolicy
(
int
omp_num_threads_hint
,
CPUAffinityPolicy
policy
);
...
...
mace/core/runtime/hexagon/hexagon_control_wrapper.cc
浏览文件 @
21190cad
...
...
@@ -51,7 +51,7 @@ int HexagonControlWrapper::GetVersion() {
bool
HexagonControlWrapper
::
Config
()
{
LOG
(
INFO
)
<<
"Hexagon config"
;
if
(
hexagon_
controller_InitHexagonWithMaxAttributes
(
0
,
10
0
)
!=
0
)
{
if
(
hexagon_
nn_set_powersave_level
(
0
)
!=
0
)
{
return
false
;
}
return
hexagon_nn_config
()
==
0
;
...
...
@@ -66,7 +66,7 @@ bool HexagonControlWrapper::Init() {
bool
HexagonControlWrapper
::
Finalize
()
{
LOG
(
INFO
)
<<
"Hexagon finalize"
;
return
hexagon_
controller_DeInitHexagon
(
)
==
0
;
return
hexagon_
nn_set_powersave_level
(
1
)
==
0
;
}
bool
HexagonControlWrapper
::
SetupGraph
(
const
NetDef
&
net_def
,
...
...
@@ -271,11 +271,6 @@ void HexagonControlWrapper::SetDebugLevel(int level) {
"set debug level error"
);
}
void
HexagonControlWrapper
::
SetGraphMode
(
int
mode
)
{
LOG
(
INFO
)
<<
"Set dsp mode: "
<<
mode
;
MACE_CHECK
(
hexagon_nn_set_graph_mode
(
nn_id_
,
mode
)
==
0
,
"set mode error"
);
}
void
HexagonControlWrapper
::
GetPerfInfo
()
{
LOG
(
INFO
)
<<
"Get perf info"
;
std
::
vector
<
hexagon_nn_perfinfo
>
perf_info
(
MACE_MAX_NODE
);
...
...
mace/core/runtime/hexagon/hexagon_control_wrapper.h
浏览文件 @
21190cad
...
...
@@ -17,10 +17,10 @@
#include <vector>
#include "mace/core/runtime/hexagon/hexagon_controller.h"
#include "mace/core/runtime/hexagon/quantize.h"
#include "mace/core/tensor.h"
#include "mace/public/mace.h"
#include "third_party/nnlib/hexagon_nn.h"
namespace
mace
{
...
...
@@ -44,7 +44,6 @@ class HexagonControlWrapper {
void
GetPerfInfo
();
void
ResetPerfInfo
();
void
SetDebugLevel
(
int
level
);
void
SetGraphMode
(
int
mode
);
private:
static
constexpr
int
NODE_ID_OFFSET
=
10000
;
...
...
mace/core/runtime/hexagon/hexagon_controller.h
已删除
100644 → 0
浏览文件 @
8497d0a9
// Copyright 2018 Xiaomi, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef MACE_CORE_RUNTIME_HEXAGON_HEXAGON_CONTROLLER_H_
#define MACE_CORE_RUNTIME_HEXAGON_HEXAGON_CONTROLLER_H_
#include "third_party/nnlib/hexagon_nn.h"
#ifdef __cplusplus
extern
"C"
{
#else
#include <stdbool.h>
#endif // __cplusplus
int
hexagon_controller_InitHexagonWithMaxAttributes
(
int
enable_dcvs
,
int
bus_usage
);
int
hexagon_controller_DeInitHexagon
();
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // MACE_CORE_RUNTIME_HEXAGON_HEXAGON_CONTROLLER_H_
mace/core/testing/test_benchmark_main.cc
浏览文件 @
21190cad
...
...
@@ -18,6 +18,7 @@
#include "mace/core/testing/test_benchmark.h"
#include "mace/public/mace.h"
#include "mace/public/mace_runtime.h"
#include "mace/utils/logging.h"
DEFINE_string
(
filter
,
"all"
,
"op benchmark regex filter, eg:.*CONV.*"
);
DEFINE_int32
(
gpu_perf_hint
,
3
,
"0:DEFAULT/1:LOW/2:NORMAL/3:HIGH"
);
...
...
@@ -33,9 +34,12 @@ int main(int argc, char **argv) {
gflags
::
ParseCommandLineFlags
(
&
argc
,
&
argv
,
true
);
// config runtime
mace
::
SetOpenMPThreadPolicy
(
mace
::
MaceStatus
status
=
mace
::
SetOpenMPThreadPolicy
(
FLAGS_omp_num_threads
,
static_cast
<
mace
::
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
if
(
status
!=
mace
::
MACE_SUCCESS
)
{
LOG
(
WARNING
)
<<
"Set openmp or cpu affinity failed."
;
}
mace
::
SetGPUHints
(
static_cast
<
mace
::
GPUPerfHint
>
(
FLAGS_gpu_perf_hint
),
static_cast
<
mace
::
GPUPriorityHint
>
(
FLAGS_gpu_priority_hint
));
...
...
mace/examples/android/app/build.gradle
浏览文件 @
21190cad
...
...
@@ -4,7 +4,7 @@ android {
compileSdkVersion
26
defaultConfig
{
applicationId
"com.xiaomi.mace.demo"
minSdkVersion
23
minSdkVersion
19
targetSdkVersion
26
versionCode
1
versionName
"1.0"
...
...
mace/examples/android/app/src/main/java/com/xiaomi/mace/demo/result/InitData.java
浏览文件 @
21190cad
...
...
@@ -34,7 +34,7 @@ public class InitData {
public
InitData
()
{
model
=
MODELS
[
0
];
ompNumThreads
=
2
;
cpuAffinityPolicy
=
1
;
cpuAffinityPolicy
=
0
;
gpuPerfHint
=
3
;
gpuPriorityHint
=
3
;
device
=
DEVICES
[
0
];
...
...
mace/examples/android/build.sh
浏览文件 @
21190cad
...
...
@@ -5,8 +5,8 @@ set -e -u -o pipefail
pushd
../../../
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/lib
/
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/
popd
...
...
mace/examples/android/macelibrary/build.gradle
浏览文件 @
21190cad
...
...
@@ -9,7 +9,7 @@ android {
}
defaultConfig
{
minSdkVersion
23
minSdkVersion
19
targetSdkVersion
26
versionCode
1
versionName
"1.0"
...
...
mace/public/mace_runtime.h
浏览文件 @
21190cad
...
...
@@ -125,7 +125,8 @@ MaceStatus SetOpenMPThreadPolicy(int num_threads_hint,
// affinity to offline cores may run very slow or unexpectedly. In such cases,
// please use SetOpenMPThreadPolicy with default policy instead.
__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.
//
...
...
mace/tools/validation/mace_run.cc
浏览文件 @
21190cad
...
...
@@ -198,9 +198,12 @@ bool RunModel(const std::string &model_name,
const
std
::
vector
<
std
::
vector
<
int64_t
>>
&
output_shapes
)
{
DeviceType
device_type
=
ParseDeviceType
(
FLAGS_device
);
// config runtime
mace
::
SetOpenMPThreadPolicy
(
MaceStatus
status
=
mace
::
SetOpenMPThreadPolicy
(
FLAGS_omp_num_threads
,
static_cast
<
CPUAffinityPolicy
>
(
FLAGS_cpu_affinity_policy
));
if
(
status
!=
MACE_SUCCESS
)
{
LOG
(
WARNING
)
<<
"Set openmp or cpu affinity failed."
;
}
#ifdef MACE_ENABLE_OPENCL
if
(
device_type
==
DeviceType
::
GPU
)
{
mace
::
SetGPUHints
(
...
...
third_party/nnlib/hexagon_nn.h
浏览文件 @
21190cad
...
...
@@ -37,7 +37,7 @@
#define THIRD_PARTY_NNLIB_HEXAGON_NN_H_
#ifndef __QAIC_HEADER
#define __QAIC_HEADER(ff) ff
#endif //
__QAIC_HEADER
#endif //__QAIC_HEADER
#ifndef __QAIC_HEADER_EXPORT
#define __QAIC_HEADER_EXPORT
...
...
@@ -49,7 +49,7 @@
#ifndef __QAIC_IMPL
#define __QAIC_IMPL(ff) ff
#endif //
__QAIC_IMPL
#endif //__QAIC_IMPL
#ifndef __QAIC_IMPL_EXPORT
#define __QAIC_IMPL_EXPORT
...
...
@@ -131,7 +131,7 @@ struct hexagon_nn_const_node {
};
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_config
)(
void
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_init
)(
hexagon_nn_nn_id
*
g
)
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_init
)(
hexagon_nn_nn_id
*
g
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_set_debug_level
)(
hexagon_nn_nn_id
id
,
int
level
)
__QAIC_HEADER_ATTRIBUTE
;
...
...
@@ -221,6 +221,8 @@ __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_execute_new)(
int
inputsLen
,
hexagon_nn_tensordef
*
outputs
,
int
outputsLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
unsigned
int
__QAIC_HEADER
(
hexagon_nn_get_dsp_offset
)(
void
)
__QAIC_HEADER_ATTRIBUTE
;
#ifdef __cplusplus
}
#endif
...
...
third_party/nnlib/libhexagon_controller.so
浏览文件 @
21190cad
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录