Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
Mace
提交
8575dde5
Mace
项目概览
慢慢CG
/
Mace
与 Fork 源项目一致
Fork自
Xiaomi / Mace
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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看板
提交
8575dde5
编写于
3月 13, 2018
作者:
Y
yejianwu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
merge with libmace
上级
2e3dac1e
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
98 addition
and
155 deletion
+98
-155
WORKSPACE
WORKSPACE
+17
-0
mace/benchmark/BUILD
mace/benchmark/BUILD
+1
-1
mace/core/BUILD
mace/core/BUILD
+1
-0
mace/python/tools/caffe_converter_lib.py
mace/python/tools/caffe_converter_lib.py
+3
-3
mace/python/tools/caffe_ops_stats.py
mace/python/tools/caffe_ops_stats.py
+0
-42
mace/python/tools/convert_util.py
mace/python/tools/convert_util.py
+1
-1
mace/python/tools/converter.py
mace/python/tools/converter.py
+4
-4
mace/python/tools/graph_util.py
mace/python/tools/graph_util.py
+1
-1
mace/python/tools/memory_optimizer.py
mace/python/tools/memory_optimizer.py
+1
-1
mace/python/tools/source_converter_lib.py
mace/python/tools/source_converter_lib.py
+1
-1
mace/python/tools/tf_converter_lib.py
mace/python/tools/tf_converter_lib.py
+2
-2
mace/python/tools/tf_dsp_converter_lib.py
mace/python/tools/tf_dsp_converter_lib.py
+3
-3
tools/build_mace_run.sh
tools/build_mace_run.sh
+7
-6
tools/build_production_code.sh
tools/build_production_code.sh
+4
-4
tools/clear_env.sh
tools/clear_env.sh
+2
-1
tools/download_and_link_lib.sh
tools/download_and_link_lib.sh
+0
-30
tools/env.sh
tools/env.sh
+3
-3
tools/generate_model_code.sh
tools/generate_model_code.sh
+3
-3
tools/generate_opencl_and_version_code.sh
tools/generate_opencl_and_version_code.sh
+13
-0
tools/generate_production_code.sh
tools/generate_production_code.sh
+2
-2
tools/mace_tools.py
tools/mace_tools.py
+12
-37
tools/merge_libs.sh
tools/merge_libs.sh
+16
-9
tools/tuning_run.sh
tools/tuning_run.sh
+1
-1
未找到文件。
WORKSPACE
浏览文件 @
8575dde5
...
...
@@ -56,3 +56,20 @@ android_ndk_repository(
# Android 5.0
api_level
=
21
)
git_repository
(
name
=
"com_github_gflags_gflags"
,
#tag = "v2.2.0",
commit
=
"30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26e"
,
# v2.2.0 + fix of include path
remote
=
"https://github.com/gflags/gflags.git"
)
bind
(
name
=
"gflags"
,
actual
=
"@com_github_gflags_gflags//:gflags"
,
)
bind
(
name
=
"gflags_nothreads"
,
actual
=
"@com_github_gflags_gflags//:gflags_nothreads"
,
)
mace/benchmark/BUILD
浏览文件 @
8575dde5
...
...
@@ -29,7 +29,7 @@ cc_binary(
linkstatic
=
1
,
deps
=
[
":stat_summarizer"
,
"//codegen:generated_models"
,
"//
mace/
codegen:generated_models"
,
"//external:gflags_nothreads"
,
]
+
if_hexagon_enabled
([
"//lib/hexagon:hexagon"
,
...
...
mace/core/BUILD
浏览文件 @
8575dde5
...
...
@@ -104,6 +104,7 @@ cc_library(
deps
=
[
":opencl_headers"
,
"//mace/codegen:generated_opencl_prod"
,
"//mace/codegen:generated_tuning_params"
,
"//mace/utils"
,
],
)
mace/python/tools/caffe_converter_lib.py
浏览文件 @
8575dde5
from
lib
.proto
import
mace_pb2
from
lib
.proto
import
caffe_pb2
from
lib
.python.tools
import
memory_optimizer
from
mace
.proto
import
mace_pb2
from
mace
.proto
import
caffe_pb2
from
mace
.python.tools
import
memory_optimizer
import
google.protobuf.text_format
import
numpy
as
np
import
math
...
...
mace/python/tools/caffe_ops_stats.py
已删除
100644 → 0
浏览文件 @
2e3dac1e
from
mace.proto
import
caffe_pb2
import
google.protobuf.text_format
import
operator
import
functools
import
argparse
import
sys
import
six
import
os.path
FLAGS
=
None
def
main
(
unused_args
):
if
not
os
.
path
.
isfile
(
FLAGS
.
input
):
print
'input model file not exist'
return
-
1
net
=
caffe_pb2
.
NetParameter
()
with
open
(
FLAGS
.
input
)
as
f
:
google
.
protobuf
.
text_format
.
Merge
(
str
(
f
.
read
()),
net
)
ops
=
{}
for
layer
in
net
.
layer
:
if
layer
.
type
not
in
ops
:
ops
[
layer
.
type
]
=
1
else
:
ops
[
layer
.
type
]
+=
1
for
key
,
value
in
sorted
(
ops
.
items
(),
key
=
operator
.
itemgetter
(
1
)):
print
key
,
":"
,
value
def
parse_args
():
'''Parses command line arguments.'''
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--input'
,
type
=
str
,
default
=
''
,
help
=
'Caffe
\'
GraphDef
\'
file to load.'
)
return
parser
.
parse_known_args
()
if
__name__
==
'__main__'
:
FLAGS
,
unparsed
=
parse_args
()
main
(
unused_args
=
[
sys
.
argv
[
0
]]
+
unparsed
)
mace/python/tools/convert_util.py
浏览文件 @
8575dde5
import
tensorflow
as
tf
from
lib
.proto
import
mace_pb2
from
mace
.proto
import
mace_pb2
TF_DTYPE_2_MACE_DTYPE_MAP
=
{
tf
.
float32
:
mace_pb2
.
DT_FLOAT
,
...
...
mace/python/tools/converter.py
浏览文件 @
8575dde5
...
...
@@ -2,7 +2,7 @@ import argparse
import
sys
import
hashlib
import
os.path
from
lib
.python.tools
import
source_converter_lib
from
mace
.python.tools
import
source_converter_lib
# ./bazel-bin/mace/python/tools/tf_converter --model_file quantized_test.pb --output quantized_test_dsp.pb --runtime dsp --input_dim input_node,1,28,28,3
...
...
@@ -39,17 +39,17 @@ def main(unused_args):
print
(
"DSP not support caffe model yet."
)
sys
.
exit
(
-
1
)
from
lib
.python.tools
import
caffe_converter_lib
from
mace
.python.tools
import
caffe_converter_lib
output_graph_def
=
caffe_converter_lib
.
convert_to_mace_pb
(
FLAGS
.
model_file
,
FLAGS
.
weight_file
,
FLAGS
.
input_node
,
FLAGS
.
input_shape
,
FLAGS
.
output_node
,
FLAGS
.
data_type
,
FLAGS
.
runtime
,
FLAGS
.
winograd
)
elif
FLAGS
.
platform
==
'tensorflow'
:
if
FLAGS
.
runtime
==
'dsp'
:
from
lib
.python.tools
import
tf_dsp_converter_lib
from
mace
.python.tools
import
tf_dsp_converter_lib
output_graph_def
=
tf_dsp_converter_lib
.
convert_to_mace_pb
(
FLAGS
.
model_file
,
FLAGS
.
input_node
,
FLAGS
.
output_node
,
FLAGS
.
dsp_mode
)
else
:
from
lib
.python.tools
import
tf_converter_lib
from
mace
.python.tools
import
tf_converter_lib
output_graph_def
=
tf_converter_lib
.
convert_to_mace_pb
(
FLAGS
.
model_file
,
FLAGS
.
input_node
,
FLAGS
.
input_shape
,
FLAGS
.
output_node
,
FLAGS
.
data_type
,
FLAGS
.
runtime
,
FLAGS
.
winograd
)
...
...
mace/python/tools/graph_util.py
浏览文件 @
8575dde5
import
tensorflow
as
tf
from
lib
.proto
import
mace_pb2
from
mace
.proto
import
mace_pb2
from
collections
import
OrderedDict
def
sort_tf_node
(
node
,
nodes_map
,
ordered_nodes_map
):
...
...
mace/python/tools/memory_optimizer.py
浏览文件 @
8575dde5
import
sys
import
operator
from
lib
.proto
import
mace_pb2
from
mace
.proto
import
mace_pb2
class
MemoryOptimizer
(
object
):
def
__init__
(
self
,
net_def
):
...
...
mace/python/tools/source_converter_lib.py
浏览文件 @
8575dde5
...
...
@@ -3,7 +3,7 @@ import uuid
import
numpy
as
np
import
hashlib
from
lib
.proto
import
mace_pb2
from
mace
.proto
import
mace_pb2
from
jinja2
import
Environment
,
FileSystemLoader
...
...
mace/python/tools/tf_converter_lib.py
浏览文件 @
8575dde5
from
lib
.proto
import
mace_pb2
from
mace
.proto
import
mace_pb2
import
tensorflow
as
tf
import
numpy
as
np
import
math
import
copy
from
tensorflow
import
gfile
from
lib
.python.tools
import
memory_optimizer
from
mace
.python.tools
import
memory_optimizer
from
tensorflow.core.framework
import
graph_pb2
from
tensorflow.core.framework
import
tensor_shape_pb2
...
...
mace/python/tools/tf_dsp_converter_lib.py
浏览文件 @
8575dde5
from
lib
.proto
import
mace_pb2
from
mace
.proto
import
mace_pb2
import
tensorflow
as
tf
from
tensorflow
import
gfile
from
operator
import
mul
from
dsp_ops
import
DspOps
from
lib
.python.tools
import
graph_util
from
lib
.python.tools.convert_util
import
tf_dtype_2_mace_dtype
from
mace
.python.tools
import
graph_util
from
mace
.python.tools.convert_util
import
tf_dtype_2_mace_dtype
# converter --input ../libcv/quantized_model.pb --output quantized_model_dsp.pb \
# --runtime dsp --input_node input_node --output_node output_node
...
...
tools/build_mace_run.sh
浏览文件 @
8575dde5
...
...
@@ -21,7 +21,7 @@ if [ "$PRODUCTION_MODE" = 1 ]; then
fi
if
[
x
"
$TARGET_ABI
"
=
x
"host"
]
;
then
bazel build
--verbose_failures
-c
opt
--strip
always codegen:generated_models
\
bazel build
--verbose_failures
-c
opt
--strip
always
//mace/
codegen:generated_models
\
--copt
=
"-std=c++11"
\
--copt
=
"-D_GLIBCXX_USE_C99_MATH_TR1"
\
--copt
=
"-Werror=return-type"
\
...
...
@@ -30,7 +30,7 @@ if [ x"$TARGET_ABI" = x"host" ]; then
--copt
=
"-O3"
\
$PRODUCTION_MODE_BUILD_FLAGS
||
exit
1
bazel build
--verbose_failures
-c
opt
--strip
always examples:mace_run
\
bazel build
--verbose_failures
-c
opt
--strip
always
//mace/
examples:mace_run
\
--copt
=
"-std=c++11"
\
--copt
=
"-D_GLIBCXX_USE_C99_MATH_TR1"
\
--copt
=
"-Werror=return-type"
\
...
...
@@ -43,13 +43,14 @@ else
HEXAGON_MODE_BUILD_FLAG
=
"--define hexagon=true"
fi
bazel build
--verbose_failures
-c
opt
--strip
always examples:mace_run
\
bazel build
--verbose_failures
-c
opt
--strip
always
//mace/
examples:mace_run
\
--crosstool_top
=
//external:android/crosstool
\
--host_crosstool_top
=
@bazel_tools//tools/cpp:toolchain
\
--cpu
=
${
TARGET_ABI
}
\
--copt
=
"-std=c++11"
\
--copt
=
"-D_GLIBCXX_USE_C99_MATH_TR1"
\
--copt
=
"-Werror=return-type"
\
--copt
=
"-DMACE_OBFUSCATE_LITERALS"
\
--copt
=
"-DMACE_MODEL_TAG=
${
MODEL_TAG
}
"
\
--define
openmp
=
true
\
--copt
=
"-O3"
\
...
...
@@ -64,10 +65,10 @@ fi
if
[
-f
"
$MODEL_OUTPUT_DIR
/mace_run"
]
;
then
rm
-rf
$MODEL_OUTPUT_DIR
/mace_run
fi
cp
bazel-bin/examples/mace_run
$MODEL_OUTPUT_DIR
cp
bazel-bin/
mace/
examples/mace_run
$MODEL_OUTPUT_DIR
if
[
"
$EMBED_MODEL_DATA
"
=
0
]
;
then
cp
codegen/models/
${
MODEL_TAG
}
/
${
MODEL_TAG
}
.data
$MODEL_OUTPUT_DIR
cp
mace/
codegen/models/
${
MODEL_TAG
}
/
${
MODEL_TAG
}
.data
$MODEL_OUTPUT_DIR
fi
# copy model header file to build output dir
cp
codegen/models/
${
MODEL_TAG
}
/
${
MODEL_TAG
}
.h
$MODEL_OUTPUT_DIR
cp
mace/
codegen/models/
${
MODEL_TAG
}
/
${
MODEL_TAG
}
.h
$MODEL_OUTPUT_DIR
tools/build_production_code.sh
浏览文件 @
8575dde5
...
...
@@ -35,9 +35,9 @@ build_target()
}
if
[
x
"
$TARGET_ABI
"
=
x
"host"
]
;
then
build_host_target //codegen:generated_opencl_prod
build_host_target //codegen:generated_tuning_params
build_host_target //
mace/
codegen:generated_opencl_prod
build_host_target //
mace/
codegen:generated_tuning_params
else
build_target //codegen:generated_opencl_prod
build_target //codegen:generated_tuning_params
build_target //
mace/
codegen:generated_opencl_prod
build_target //
mace/
codegen:generated_tuning_params
fi
tools/clear_env.sh
浏览文件 @
8575dde5
...
...
@@ -5,4 +5,5 @@ if [ x"$TARGET_ABI" != x"host" ]; then
adb shell
rm
-rf
$PHONE_DATA_DIR
fi
rm
-rf
codegen/models codegen/opencl codegen/tuning
rm
-rf
mace/codegen/models
git checkout
--
mace/codegen/opencl/opencl_compiled_program.cc mace/codegen/tuning/tuning_params.cc
tools/download_and_link_lib.sh
已删除
100644 → 0
浏览文件 @
2e3dac1e
#!/bin/bash
Usage
()
{
echo
"Usage: bash tools/download_and_link_lib.sh libmace_v7_dsp"
}
if
[
$#
-lt
1
]
;
then
Usage
exit
1
fi
CURRENT_DIR
=
`
dirname
$0
`
source
${
CURRENT_DIR
}
/env.sh
LIB_FOLDER_NAME
=
$1
if
[
!
-d
"
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
"
]
;
then
wget
-P
${
LIBMACE_SOURCE_DIR
}
/lib http://cnbj1-inner-fds.api.xiaomi.net/libmace/libs/
${
LIBMACE_TAG
}
/
${
LIB_FOLDER_NAME
}
.tar.gz
&&
\
tar
xvzf
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
.tar.gz
-C
${
LIBMACE_SOURCE_DIR
}
/lib/
||
exit
1
echo
"
${
LIB_FOLDER_NAME
}
download successfully!"
else
echo
"
${
LIB_FOLDER_NAME
}
already exists!"
fi
echo
"Create link 'mace' of downloaded or existed
${
LIB_FOLDER_NAME
}
"
if
[
-L
${
LIBMACE_SOURCE_DIR
}
/lib/mace
]
;
then
unlink
${
LIBMACE_SOURCE_DIR
}
/lib/mace
fi
ln
-s
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
${
LIBMACE_SOURCE_DIR
}
/lib/mace
&&
\
rm
-rf
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
.tar.gz
||
exit
1
tools/env.sh
浏览文件 @
8575dde5
#!/usr/bin/env bash
LIBMACE_TAG
=
`
git describe
--abbrev
=
0
--tags
`
LIB
MACE_SOURCE_DIR
=
`
/bin/pwd
`
MACE_SOURCE_DIR
=
`
/bin/pwd
`
INPUT_FILE_NAME
=
"model_input"
OUTPUT_FILE_NAME
=
"model_out"
PHONE_DATA_DIR
=
"/data/local/tmp/mace_run"
KERNEL_DIR
=
"
${
PHONE_DATA_DIR
}
/cl/"
CODEGEN_DIR
=
${
LIBMACE_SOURCE_DIR
}
/codegen
CODEGEN_DIR
=
${
MACE_SOURCE_DIR
}
/mace
/codegen
MODEL_CODEGEN_DIR
=
${
CODEGEN_DIR
}
/models/
${
MODEL_TAG
}
CL_CODEGEN_DIR
=
${
CODEGEN_DIR
}
/opencl
TUNING_CODEGEN_DIR
=
${
CODEGEN_DIR
}
/tuning
...
...
@@ -31,4 +31,4 @@ GENERATED_MODEL_LIB_NAME="libgenerated_models.a"
if
[
x
"
$TARGET_ABI
"
=
x
"host"
]
;
then
GENERATED_MODEL_LIB_NAME
=
"libgenerated_models.pic.a"
fi
GENERATED_MODEL_LIB_PATH
=
"bazel-bin/codegen/
${
GENERATED_MODEL_LIB_NAME
}
"
GENERATED_MODEL_LIB_PATH
=
"bazel-bin/
mace/
codegen/
${
GENERATED_MODEL_LIB_NAME
}
"
tools/generate_model_code.sh
浏览文件 @
8575dde5
...
...
@@ -3,14 +3,14 @@
CURRENT_DIR
=
`
dirname
$0
`
source
${
CURRENT_DIR
}
/env.sh
bazel build //
lib
/python/tools:converter
||
exit
1
bazel build //
mace
/python/tools:converter
||
exit
1
rm
-rf
${
MODEL_CODEGEN_DIR
}
mkdir
-p
${
MODEL_CODEGEN_DIR
}
if
[
${
DSP_MODE
}
]
;
then
DSP_MODE_FLAG
=
"--dsp_mode=
${
DSP_MODE
}
"
fi
PYTHONUNBUFFERED
=
1 bazel-bin/
lib
/python/tools/converter
--platform
=
${
PLATFORM
}
\
PYTHONUNBUFFERED
=
1 bazel-bin/
mace
/python/tools/converter
--platform
=
${
PLATFORM
}
\
--model_file
=
${
MODEL_FILE_PATH
}
\
--weight_file
=
${
WEIGHT_FILE_PATH
}
\
--model_checksum
=
${
MODEL_SHA256_CHECKSUM
}
\
...
...
@@ -20,7 +20,7 @@ PYTHONUNBUFFERED=1 bazel-bin/lib/python/tools/converter --platform=${PLATFORM} \
--data_type
=
${
DATA_TYPE
}
\
--runtime
=
${
RUNTIME
}
\
--output_type
=
source
\
--template
=
${
LIBMACE_SOURCE_DIR
}
/lib
/python/tools
\
--template
=
${
MACE_SOURCE_DIR
}
/mace
/python/tools
\
--model_tag
=
${
MODEL_TAG
}
\
--input_shape
=
${
INPUT_SHAPES
}
\
${
DSP_MODE_FLAG
}
\
...
...
tools/generate_opencl_and_version_code.sh
0 → 100644
浏览文件 @
8575dde5
#!/bin/bash
CURRENT_DIR
=
`
dirname
$0
`
source
${
CURRENT_DIR
}
/env.sh
python mace/python/tools/encrypt_opencl_codegen.py
\
--cl_kernel_dir
=
./mace/kernels/opencl/cl/
\
--output_path
=
${
CODEGEN_DIR
}
/opencl/opencl_encrypt_program.cc
||
exit
1
rm
-rf
${
CODEGEN_DIR
}
/version
mkdir
${
CODEGEN_DIR
}
/version
bash mace/tools/git/gen_version_source.sh
${
CODEGEN_DIR
}
/version/version.cc
||
exit
1
tools/generate_production_code.sh
浏览文件 @
8575dde5
...
...
@@ -32,11 +32,11 @@ mkdir -p ${TUNING_CODEGEN_DIR}
set
-x
python
lib
/python/tools/opencl_codegen.py
\
python
mace
/python/tools/opencl_codegen.py
\
--cl_binary_dirs
=
${
CL_BIN_DIRS
}
\
--output_path
=
${
CL_CODEGEN_DIR
}
/opencl_compiled_program.cc
python
lib
/python/tools/binary_codegen.py
\
python
mace
/python/tools/binary_codegen.py
\
--binary_dirs
=
${
CL_BIN_DIRS
}
\
--binary_file_name
=
mace_run.config
\
--output_path
=
${
TUNING_CODEGEN_DIR
}
/tuning_params.cc
tools/mace_tools.py
浏览文件 @
8575dde5
...
...
@@ -17,29 +17,6 @@ import yaml
from
ConfigParser
import
ConfigParser
def
run_command_real_time
(
command
):
print
(
"Run command: {}"
.
format
(
command
))
process
=
subprocess
.
Popen
(
command
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
while
True
:
std_err
=
process
.
stderr
.
readline
()
if
std_err
==
''
and
process
.
poll
()
is
not
None
:
break
if
std_err
:
print
std_err
.
strip
()
while
True
:
std_out
=
process
.
stdout
.
readline
()
if
std_out
==
''
and
process
.
poll
()
is
not
None
:
break
if
std_out
:
print
std_out
.
strip
()
ret_code
=
process
.
poll
()
if
ret_code
!=
0
:
raise
Exception
(
"Exit not 0 from bash with code: {}, command: {}"
.
format
(
ret_code
,
command
))
def
run_command
(
command
):
print
(
"Run command: {}"
.
format
(
command
))
result
=
subprocess
.
Popen
(
...
...
@@ -56,7 +33,7 @@ def run_command(command):
result
.
returncode
,
command
))
def
get_
libs
(
target_abi
,
configs
):
def
get_
global_runtime
(
configs
):
runtime_list
=
[]
for
model_name
in
configs
[
"models"
]:
model_runtime
=
configs
[
"models"
][
model_name
][
"runtime"
]
...
...
@@ -72,12 +49,12 @@ def get_libs(target_abi, configs):
else
:
raise
Exception
(
"Not found available RUNTIME in config files!"
)
libmace_name
=
"libmace-{}-{}"
.
format
(
target_abi
,
global_runtime
)
return
global_runtime
command
=
"bash tools/download_and_link_lib.sh "
+
libmace_name
run_command
(
command
)
return
libmace_name
def
generate_opencl_and_version_code
():
command
=
"bash tools/generate_opencl_and_version_code.sh"
run_command
(
command
)
def
clear_env
():
...
...
@@ -94,7 +71,7 @@ def generate_random_input(model_output_dir):
def
generate_model_code
():
command
=
"bash tools/generate_model_code.sh"
run_command
_real_time
(
command
)
run_command
(
command
)
def
build_mace_run
(
production_mode
,
model_output_dir
,
hexagon_mode
):
...
...
@@ -128,8 +105,8 @@ def generate_production_code(model_output_dirs, pull_or_not):
run_command
(
command
)
def
build_mace_run_prod
(
model_output_dir
,
tuning
,
libmace_na
me
):
if
"dsp"
in
libmace_na
me
:
def
build_mace_run_prod
(
model_output_dir
,
tuning
,
global_runti
me
):
if
"dsp"
==
global_runti
me
:
hexagon_mode
=
True
else
:
hexagon_mode
=
False
...
...
@@ -222,16 +199,14 @@ def main(unused_args):
FLAGS
.
round
=
1
FLAGS
.
restart_round
=
1
# target_abi = configs["target_abi"]
# libmace_name = get_libs(target_abi, configs)
# Transfer params by environment
# os.environ["TARGET_ABI"] = target_abi
os
.
environ
[
"EMBED_MODEL_DATA"
]
=
str
(
configs
[
"embed_model_data"
])
os
.
environ
[
"VLOG_LEVEL"
]
=
str
(
configs
[
"vlog_level"
])
os
.
environ
[
"PROJECT_NAME"
]
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
FLAGS
.
config
))[
0
]
generate_opencl_and_version_code
()
for
target_abi
in
configs
[
"target_abis"
]:
libmace_name
=
get_libs
(
target_abi
,
configs
)
global_runtime
=
get_global_runtime
(
configs
)
# Transfer params by environment
os
.
environ
[
"TARGET_ABI"
]
=
target_abi
model_output_dirs
=
[]
...
...
@@ -277,7 +252,7 @@ def main(unused_args):
if
FLAGS
.
mode
==
"build"
or
FLAGS
.
mode
==
"all"
:
generate_model_code
()
build_mace_run_prod
(
model_output_dir
,
FLAGS
.
tuning
,
libmace_na
me
)
build_mace_run_prod
(
model_output_dir
,
FLAGS
.
tuning
,
global_runti
me
)
if
FLAGS
.
mode
==
"run"
or
FLAGS
.
mode
==
"validate"
or
FLAGS
.
mode
==
"all"
:
run_model
(
model_output_dir
,
FLAGS
.
round
,
FLAGS
.
restart_round
)
...
...
tools/merge_libs.sh
浏览文件 @
8575dde5
...
...
@@ -19,24 +19,31 @@ MODEL_HEADER_DIR=${LIBMACE_BUILD_DIR}/libmace/include/mace/public
MODEL_DATA_DIR
=
${
LIBMACE_BUILD_DIR
}
/libmace/data
rm
-rf
${
LIBMACE_BUILD_DIR
}
/libmace
mkdir
-p
${
LIBMACE_BUILD_DIR
}
/libmace/include/mace/public
mkdir
-p
${
LIBMACE_BUILD_DIR
}
/libmace/lib
mkdir
-p
${
MODEL_DATA_DIR
}
cp
-rf
${
LIBMACE_SOURCE_DIR
}
/include
${
LIBMACE_BUILD_DIR
}
/libmace/
cp
${
LIBMACE_SOURCE_DIR
}
/lib
/hexagon/libhexagon_controller.so
${
LIBMACE_BUILD_DIR
}
/libmace/lib
cp
-rf
${
MACE_SOURCE_DIR
}
/mace/public/
*
.h
${
LIBMACE_BUILD_DIR
}
/libmace/
cp
${
MACE_SOURCE_DIR
}
/mace/core/runtime
/hexagon/libhexagon_controller.so
${
LIBMACE_BUILD_DIR
}
/libmace/lib
LIBMACE_TEMP_DIR
=
`
mktemp
-d
-t
libmace.XXXX
`
# Merge all libraries in to one
echo
"create
${
LIBMACE_BUILD_DIR
}
/libmace/lib/libmace_
${
PROJECT_NAME
}
.a"
>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib lib/mace/libmace.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib lib/mace/libmace_prod.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
if
[
x
"TARGET_ABI"
=
x
"host"
]
;
then
echo
"addlib bazel-bin/codegen/libgenerated_opencl_prod.pic.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/codegen/libgenerated_tuning_params.pic.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
if
[
x
"
$TARGET_ABI
"
=
x
"host"
]
;
then
echo
"addlib bazel-bin/mace/codegen/libgenerated_opencl_prod.pic.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/codegen/libgenerated_tuning_params.pic.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
else
echo
"addlib bazel-bin/codegen/libgenerated_opencl_prod.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/codegen/libgenerated_tuning_params.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/codegen/libgenerated_opencl_prod.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/codegen/libgenerated_tuning_params.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/codegen/libgenerated_version.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/core/libcore.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/core/libopencl_prod.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/kernels/libkernels.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/utils/libutils.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
echo
"addlib bazel-bin/mace/utils/libutils_prod.a"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
fi
for
model_output_dir
in
${
MODEL_OUTPUT_DIRS_ARR
[@]
}
;
do
for
lib
in
${
model_output_dir
}
/
*
.a
;
do
echo
"addlib
${
lib
}
"
>>
${
LIBMACE_TEMP_DIR
}
/libmace_
${
PROJECT_NAME
}
.mri
...
...
tools/tuning_run.sh
浏览文件 @
8575dde5
...
...
@@ -53,7 +53,7 @@ else
if
[
"
$EMBED_MODEL_DATA
"
=
0
]
;
then
adb push
${
MODEL_OUTPUT_DIR
}
/
${
MODEL_TAG
}
.data
${
PHONE_DATA_DIR
}
>
/dev/null
||
exit
1
fi
adb push
lib
/hexagon/libhexagon_controller.so
${
PHONE_DATA_DIR
}
>
/dev/null
||
exit
1
adb push
mace/core/runtime
/hexagon/libhexagon_controller.so
${
PHONE_DATA_DIR
}
>
/dev/null
||
exit
1
mace_adb_output
=
`
adb </dev/null shell
\
"LD_LIBRARY_PATH=
${
PHONE_DATA_DIR
}
\
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录