Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
Mace
提交
c12c02ff
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看板
提交
c12c02ff
编写于
8月 08, 2018
作者:
李
李寅
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make hexagon runtime compatible to nnlib-old
上级
f291a048
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
346 addition
and
0 deletion
+346
-0
mace/core/runtime/hexagon/hexagon_control_wrapper.cc
mace/core/runtime/hexagon/hexagon_control_wrapper.cc
+8
-0
third_party/nnlib/hexagon_nn.h
third_party/nnlib/hexagon_nn.h
+195
-0
third_party/nnlib/libhexagon_controller_old.so
third_party/nnlib/libhexagon_controller_old.so
+0
-0
third_party/nnlib/ops.h
third_party/nnlib/ops.h
+143
-0
未找到文件。
mace/core/runtime/hexagon/hexagon_control_wrapper.cc
浏览文件 @
c12c02ff
...
@@ -59,7 +59,11 @@ bool HexagonControlWrapper::Config() {
...
@@ -59,7 +59,11 @@ bool HexagonControlWrapper::Config() {
bool
HexagonControlWrapper
::
Init
()
{
bool
HexagonControlWrapper
::
Init
()
{
LOG
(
INFO
)
<<
"Hexagon init"
;
LOG
(
INFO
)
<<
"Hexagon init"
;
#ifdef MACE_USE_NNLIB_OLD
nn_id_
=
hexagon_nn_init
();
#else
MACE_CHECK
(
hexagon_nn_init
(
&
nn_id_
)
==
0
,
"hexagon_nn_init failed"
);
MACE_CHECK
(
hexagon_nn_init
(
&
nn_id_
)
==
0
,
"hexagon_nn_init failed"
);
#endif
ResetPerfInfo
();
ResetPerfInfo
();
return
true
;
return
true
;
}
}
...
@@ -141,6 +145,9 @@ bool HexagonControlWrapper::SetupGraph(const NetDef &net_def,
...
@@ -141,6 +145,9 @@ bool HexagonControlWrapper::SetupGraph(const NetDef &net_def,
}
}
outputs
.
resize
(
op
.
output_shape
().
size
());
outputs
.
resize
(
op
.
output_shape
().
size
());
for
(
int
i
=
0
;
i
<
op
.
output_shape
().
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
op
.
output_shape
().
size
();
++
i
)
{
#ifdef MACE_USE_NNLIB_OLD
outputs
[
i
].
max_size
=
op
.
out_max_byte_size
()[
i
];
#else
outputs
[
i
].
rank
=
op
.
output_shape
()[
i
].
dims
().
size
();
outputs
[
i
].
rank
=
op
.
output_shape
()[
i
].
dims
().
size
();
for
(
size_t
j
=
0
;
j
<
outputs
[
i
].
rank
;
++
j
)
{
for
(
size_t
j
=
0
;
j
<
outputs
[
i
].
rank
;
++
j
)
{
outputs
[
i
].
max_sizes
[
j
]
=
op
.
output_shape
()[
i
].
dims
()[
j
];
outputs
[
i
].
max_sizes
[
j
]
=
op
.
output_shape
()[
i
].
dims
()[
j
];
...
@@ -154,6 +161,7 @@ bool HexagonControlWrapper::SetupGraph(const NetDef &net_def,
...
@@ -154,6 +161,7 @@ bool HexagonControlWrapper::SetupGraph(const NetDef &net_def,
static_cast
<
DataType
>
(
op
.
output_type
()[
i
]));
static_cast
<
DataType
>
(
op
.
output_type
()[
i
]));
outputs
[
i
].
zero_offset
=
0
;
outputs
[
i
].
zero_offset
=
0
;
outputs
[
i
].
stepsize
=
0
;
outputs
[
i
].
stepsize
=
0
;
#endif
}
}
cached_inputs
.
push_back
(
inputs
);
cached_inputs
.
push_back
(
inputs
);
cached_outputs
.
push_back
(
outputs
);
cached_outputs
.
push_back
(
outputs
);
...
...
third_party/nnlib/hexagon_nn.h
浏览文件 @
c12c02ff
...
@@ -35,6 +35,198 @@
...
@@ -35,6 +35,198 @@
#ifndef THIRD_PARTY_NNLIB_HEXAGON_NN_H_
#ifndef THIRD_PARTY_NNLIB_HEXAGON_NN_H_
#define THIRD_PARTY_NNLIB_HEXAGON_NN_H_
#define THIRD_PARTY_NNLIB_HEXAGON_NN_H_
#ifdef MACE_USE_NNLIB_OLD
#ifndef __QAIC_HEADER
#define __QAIC_HEADER(ff) ff
#endif // __QAIC_HEADER
#ifndef __QAIC_HEADER_EXPORT
#define __QAIC_HEADER_EXPORT
#endif // __QAIC_HEADER_EXPORT
#ifndef __QAIC_HEADER_ATTRIBUTE
#define __QAIC_HEADER_ATTRIBUTE
#endif // __QAIC_HEADER_ATTRIBUTE
#ifndef __QAIC_IMPL
#define __QAIC_IMPL(ff) ff
#endif // __QAIC_IMPL
#ifndef __QAIC_IMPL_EXPORT
#define __QAIC_IMPL_EXPORT
#endif // __QAIC_IMPL_EXPORT
#ifndef __QAIC_IMPL_ATTRIBUTE
#define __QAIC_IMPL_ATTRIBUTE
#endif // __QAIC_IMPL_ATTRIBUTE
#ifdef __cplusplus
extern
"C"
{
#endif
#if !defined(__QAIC_STRING1_OBJECT_DEFINED__) && !defined(__STRING1_OBJECT__)
#define __QAIC_STRING1_OBJECT_DEFINED__
#define __STRING1_OBJECT__
typedef
struct
_cstring1_s
{
char
*
data
;
int
dataLen
;
}
_cstring1_t
;
#endif
/* __QAIC_STRING1_OBJECT_DEFINED__ */
typedef
struct
hexagon_nn_input
hexagon_nn_input
;
struct
hexagon_nn_input
{
unsigned
int
src_id
;
unsigned
int
output_idx
;
};
typedef
struct
hexagon_nn_output
hexagon_nn_output
;
struct
hexagon_nn_output
{
unsigned
int
max_size
;
unsigned
int
unused
;
};
typedef
struct
hexagon_nn_perfinfo
hexagon_nn_perfinfo
;
struct
hexagon_nn_perfinfo
{
unsigned
int
node_id
;
unsigned
int
node_type
;
unsigned
int
executions
;
unsigned
int
unused
;
unsigned
int
counter_lo
;
unsigned
int
counter_hi
;
};
typedef
int
hexagon_nn_nn_id
;
enum
hexagon_nn_padding_type
{
NN_PAD_NA
,
NN_PAD_SAME
,
NN_PAD_VALID
,
NN_PAD_MIRROR_REFLECT
,
NN_PAD_MIRROR_SYMMETRIC
,
NN_PAD_SAME_CAFFE
,
_32BIT_PLACEHOLDER_hexagon_nn_padding_type
=
0x7fffffff
};
typedef
enum
hexagon_nn_padding_type
hexagon_nn_padding_type
;
typedef
struct
hexagon_nn_tensordef
hexagon_nn_tensordef
;
struct
hexagon_nn_tensordef
{
unsigned
int
batches
;
unsigned
int
height
;
unsigned
int
width
;
unsigned
int
depth
;
unsigned
char
*
data
;
int
dataLen
;
unsigned
int
data_valid_len
;
unsigned
int
unused
;
};
typedef
struct
hexagon_nn_op_node
hexagon_nn_op_node
;
struct
hexagon_nn_op_node
{
unsigned
int
node_id
;
unsigned
int
operation
;
hexagon_nn_padding_type
padding
;
hexagon_nn_input
*
inputs
;
int
inputsLen
;
hexagon_nn_output
*
outputs
;
int
outputsLen
;
};
typedef
struct
hexagon_nn_const_node
hexagon_nn_const_node
;
struct
hexagon_nn_const_node
{
unsigned
int
node_id
;
hexagon_nn_tensordef
tensor
;
};
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_config
)(
void
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_init
)(
void
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_set_debug_level
)(
hexagon_nn_nn_id
id
,
int
level
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_set_graph_mode
)(
hexagon_nn_nn_id
id
,
int
mode
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_snpprint
)(
hexagon_nn_nn_id
id
,
unsigned
char
*
buf
,
int
bufLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_getlog
)(
hexagon_nn_nn_id
id
,
unsigned
char
*
buf
,
int
bufLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_append_node
)(
hexagon_nn_nn_id
id
,
unsigned
int
node_id
,
unsigned
int
operation
,
hexagon_nn_padding_type
padding
,
const
hexagon_nn_input
*
inputs
,
int
inputsLen
,
const
hexagon_nn_output
*
outputs
,
int
outputsLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_append_node_list
)(
hexagon_nn_nn_id
id
,
const
hexagon_nn_op_node
*
ops
,
int
opsLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_append_const_node
)(
hexagon_nn_nn_id
id
,
unsigned
int
node_id
,
unsigned
int
batches
,
unsigned
int
height
,
unsigned
int
width
,
unsigned
int
depth
,
const
unsigned
char
*
data
,
int
dataLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_append_const_node_list
)(
hexagon_nn_nn_id
id
,
const
hexagon_nn_const_node
*
consts
,
int
constsLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_prepare
)(
hexagon_nn_nn_id
id
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_execute
)(
hexagon_nn_nn_id
id
,
unsigned
int
batches_in
,
unsigned
int
height_in
,
unsigned
int
width_in
,
unsigned
int
depth_in
,
const
unsigned
char
*
data_in
,
int
data_inLen
,
unsigned
int
*
batches_out
,
unsigned
int
*
height_out
,
unsigned
int
*
width_out
,
unsigned
int
*
depth_out
,
unsigned
char
*
data_out
,
int
data_outLen
,
unsigned
int
*
data_len_out
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_teardown
)(
hexagon_nn_nn_id
id
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_set_powersave_level
)(
unsigned
int
level
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_get_perfinfo
)(
hexagon_nn_nn_id
id
,
hexagon_nn_perfinfo
*
info_out
,
int
info_outLen
,
unsigned
int
*
n_items
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_reset_perfinfo
)(
hexagon_nn_nn_id
id
,
unsigned
int
event
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_last_execution_cycles
)(
hexagon_nn_nn_id
id
,
unsigned
int
*
cycles_lo
,
unsigned
int
*
cycles_hi
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_version
)(
int
*
ver
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_op_name_to_id
)(
const
char
*
name
,
unsigned
int
*
node_id
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_op_id_to_name
)(
unsigned
int
node_id
,
char
*
name
,
int
nameLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_disable_dcvs
)(
void
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_GetHexagonBinaryVersion
)(
int
*
ver
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_PrintLog
)(
const
unsigned
char
*
buf
,
int
bufLen
)
__QAIC_HEADER_ATTRIBUTE
;
__QAIC_HEADER_EXPORT
int
__QAIC_HEADER
(
hexagon_nn_execute_new
)(
hexagon_nn_nn_id
id
,
const
hexagon_nn_tensordef
*
inputs
,
int
inputsLen
,
hexagon_nn_tensordef
*
outputs
,
int
outputsLen
)
__QAIC_HEADER_ATTRIBUTE
;
#ifdef __cplusplus
}
#endif
#else // nnlib version
#ifndef __QAIC_HEADER
#ifndef __QAIC_HEADER
#define __QAIC_HEADER(ff) ff
#define __QAIC_HEADER(ff) ff
#endif //__QAIC_HEADER
#endif //__QAIC_HEADER
...
@@ -226,4 +418,7 @@ __QAIC_HEADER_EXPORT unsigned int __QAIC_HEADER(hexagon_nn_get_dsp_offset)(void)
...
@@ -226,4 +418,7 @@ __QAIC_HEADER_EXPORT unsigned int __QAIC_HEADER(hexagon_nn_get_dsp_offset)(void)
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
#endif // nnlib version
#endif // THIRD_PARTY_NNLIB_HEXAGON_NN_H_
#endif // THIRD_PARTY_NNLIB_HEXAGON_NN_H_
third_party/nnlib/libhexagon_controller_old.so
0 → 100755
浏览文件 @
c12c02ff
文件已添加
third_party/nnlib/ops.h
浏览文件 @
c12c02ff
...
@@ -79,6 +79,147 @@
...
@@ -79,6 +79,147 @@
*/
*/
// NOLINT(build/header_guard)
// NOLINT(build/header_guard)
#ifdef MACE_USE_NNLIB_OLD
DEF_OP
(
INPUT
)
DEF_OP
(
OUTPUT
)
DEF_OP
(
Nop
)
DEF_OP
(
Const
)
DEF_OP
(
Check
)
DEF_OP
(
Close_f
)
DEF_OP
(
Close_quint8
)
DEF_OP
(
Close_q_quint8
)
DEF_OP
(
Close_int32
)
DEF_OP
(
Close_qint32
)
DEF_OP
(
PPrint_8
)
DEF_OP
(
PPrint_32
)
DEF_OP
(
PPrint_f
)
DEF_OP
(
PreFree
)
DEF_OP
(
Flatten
)
#ifndef DEF_OP_WREF
#define DEF_OP_WREF(NAME) DEF_OP(NAME) DEF_OP(NAME##_ref)
#define __SELF_DEF_OP_WREF
#endif
DEF_OP_WREF
(
QuantizedConv2d_8x8to32
)
DEF_OP_WREF
(
QuantizedMatMul_8x8to32
)
DEF_OP_WREF
(
QuantizeDownAndShrinkRange_32to8
)
DEF_OP_WREF
(
QuantizedRelu_8
)
DEF_OP_WREF
(
QuantizedReluX_8
)
DEF_OP_WREF
(
QuantizedMaxPool_8
)
DEF_OP_WREF
(
QuantizedAvgPool_8
)
DEF_OP_WREF
(
QuantizedConcat_8
)
DEF_OP_WREF
(
QuantizedBiasAdd_8p8to32
)
DEF_OP_WREF
(
Min_f
)
DEF_OP_WREF
(
Max_f
)
DEF_OP_WREF
(
Quantize
)
DEF_OP_WREF
(
Dequantize
)
DEF_OP_WREF
(
Supernode_8x8p8to8
)
DEF_OP
(
QuantizedFlatten
)
DEF_OP
(
Softmax_f
)
DEF_OP
(
Conv2d_f
)
DEF_OP
(
MatMul_f
)
DEF_OP
(
Relu_f
)
DEF_OP
(
ReluX_f
)
DEF_OP
(
AvgPool_f
)
DEF_OP
(
MaxPool_f
)
DEF_OP
(
Concat_f
)
DEF_OP
(
BiasAdd_f
)
DEF_OP
(
LRN_f
)
DEF_OP
(
Variable
)
DEF_OP
(
Assign
)
DEF_OP
(
Reshape
)
DEF_OP
(
QuantizedReshape
)
DEF_OP
(
Tanh_f
)
DEF_OP
(
Sigmoid_f
)
DEF_OP
(
Slice_8
)
DEF_OP
(
Slice_f
)
DEF_OP
(
QuantizedSlice_8
)
DEF_OP
(
Add_f
)
DEF_OP
(
Mul_f
)
DEF_OP
(
Minimum_f
)
DEF_OP
(
Maximum_f
)
DEF_OP_WREF
(
Requantize_32to8
)
DEF_OP_WREF
(
RequantizationRange_32
)
DEF_OP
(
Neg_f
)
DEF_OP
(
Sub_f
)
DEF_OP
(
AddN_f
)
DEF_OP
(
Range_int32
)
DEF_OP
(
Rank_int32
)
DEF_OP
(
Transpose_int32
)
DEF_OP
(
Transpose_f
)
DEF_OP
(
InstanceNorm_f
)
DEF_OP_WREF
(
QuantizedInstanceNorm_8
)
DEF_OP
(
Sub_int32
)
DEF_OP
(
Add_int32
)
DEF_OP
(
Split_f
)
DEF_OP
(
Dequantize_qint32_f
)
DEF_OP
(
PRelu_f
)
DEF_OP_WREF
(
QuantizedPRelu_8
)
DEF_OP
(
Sum_f
)
DEF_OP
(
Prod_f
)
DEF_OP
(
Mul_int32
)
DEF_OP
(
LogicalAnd_int32
)
DEF_OP
(
LogicalOr_int32
)
DEF_OP
(
LogicalXor_int32
)
DEF_OP
(
Shape_int32
)
DEF_OP
(
Pack_int32
)
DEF_OP
(
MirrorPad_f
)
DEF_OP
(
ResizeNearestNeighbor_f
)
DEF_OP
(
StridedSlice_int32
)
DEF_OP
(
StridedSlice_f
)
DEF_OP
(
ExpandDims_int32
)
DEF_OP
(
ExpandDims_f
)
DEF_OP
(
LogSoftmax_f
)
DEF_OP
(
Split_int32
)
DEF_OP
(
QuantizedSplit_8
)
DEF_OP
(
Deconv_f
)
DEF_OP_WREF
(
QuantizedDeconv_8x8to32
)
DEF_OP_WREF
(
QuantizedMul_8x8to32
)
DEF_OP_WREF
(
QuantizedAdd_8p8to32
)
DEF_OP_WREF
(
QuantizedSigmoid_8
)
DEF_OP_WREF
(
QuantizedTanh_8
)
DEF_OP_WREF
(
QuantizedSoftmax_8
)
DEF_OP_WREF
(
QuantizedLRN_8
)
DEF_OP_WREF
(
QuantizedSub_8p8to32
)
DEF_OP_WREF
(
QuantizedMaximum_8
)
DEF_OP_WREF
(
QuantizedMinimum_8
)
DEF_OP
(
Pad_f
)
DEF_OP
(
SpaceToBatchND_f
)
DEF_OP
(
BatchToSpaceND_f
)
DEF_OP
(
QuantizedSpaceToBatchND_8
)
DEF_OP
(
QuantizedBatchToSpaceND_8
)
DEF_OP
(
QuantizedPad_8
)
DEF_OP
(
ResizeBilinear_f
)
DEF_OP
(
QuantizedResizeBilinear_8
)
DEF_OP
(
ConcatV2_f
)
DEF_OP
(
ConcatV2_int32
)
DEF_OP
(
Prod_int32
)
DEF_OP
(
Slice_int32
)
DEF_OP
(
QuantizedAdd_8p8to8
)
DEF_OP_WREF
(
AutoQuantize
)
DEF_OP_WREF
(
QuantizedDepthwiseConv2d_8x8to32
)
DEF_OP
(
DepthwiseConv2d_f
)
DEF_OP
(
QuantizedBiasAdd_8p8to8
)
#ifdef __SELF_DEF_OP_WREF
#undef __SELF_DEF_OP_WREF
#undef DEF_OP_WREF
#endif
#else // nnlib version
DEF_OP
(
INPUT
)
DEF_OP
(
INPUT
)
DEF_OP
(
OUTPUT
)
DEF_OP
(
OUTPUT
)
DEF_OP
(
Nop
)
DEF_OP
(
Nop
)
...
@@ -285,3 +426,5 @@ DEF_OP(DepthToSpace_8)
...
@@ -285,3 +426,5 @@ DEF_OP(DepthToSpace_8)
#undef __SELF_DEF_OP_WREF
#undef __SELF_DEF_OP_WREF
#undef DEF_OP_WREF
#undef DEF_OP_WREF
#endif
#endif
#endif // nnlib version
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录