Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
Mace
提交
6703eb21
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,发现更多精彩内容 >>
提交
6703eb21
编写于
9月 13, 2017
作者:
L
Liangliang He
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add conv2d 1x1 stride=1 benchmark
上级
7fbe7361
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
49 addition
and
8 deletion
+49
-8
mace/ops/BUILD
mace/ops/BUILD
+1
-0
mace/ops/conv_2d_benchmark.cc
mace/ops/conv_2d_benchmark.cc
+28
-4
mace/ops/conv_2d_test.cc
mace/ops/conv_2d_test.cc
+1
-1
mace/ops/ops_test_util.h
mace/ops/ops_test_util.h
+19
-3
未找到文件。
mace/ops/BUILD
浏览文件 @
6703eb21
...
...
@@ -59,6 +59,7 @@ cc_test(
srcs
=
glob
([
"*_benchmark.cc"
]),
deps
=
[
":ops"
,
":test"
,
"//mace/core:core"
,
"//mace/core:test_benchmark_main"
,
],
...
...
mace/ops/conv_2d_benchmark.cc
浏览文件 @
6703eb21
...
...
@@ -4,12 +4,12 @@
#include <algorithm>
#include "mace/core/operator.h"
#include "mace/core/testing/test_benchmark.h"
#include "mace/
kernel
s/conv_2d.h"
#include "mace/
kernels/conv_pool_2d
_util.h"
#include "mace/
op
s/conv_2d.h"
#include "mace/
ops/ops_test
_util.h"
namespace
mace
{
namespace
kernels
{
template
<
DeviceType
D
,
typename
T
>
static
void
Conv2d
(
int
iters
,
int
batch
,
int
channels
,
int
height
,
int
width
,
...
...
@@ -17,8 +17,32 @@ static void Conv2d(int iters, int batch, int channels, int height, int width,
Padding
padding
,
int
output_channels
)
{
mace
::
testing
::
StopTiming
();
OpsTestNet
net
;
OpDefBuilder
(
"Conv2d"
,
"Conv2dTest"
)
.
Input
(
"Input"
)
.
Input
(
"Filter"
)
.
Input
(
"Bias"
)
.
Output
(
"Output"
)
.
Finalize
(
net
.
operator_def
());
// Add args
net
.
AddIntsArg
(
"strides"
,
{
stride
,
stride
});
net
.
AddIntArg
(
"padding"
,
padding
);
net
.
AddIntsArg
(
"dilations"
,
{
1
,
1
});
// Add input data
net
.
AddRandomInput
<
float
>
(
"Input"
,
{
batch
,
channels
,
height
,
width
});
net
.
AddRandomInput
<
float
>
(
"Filter"
,
{
output_channels
,
channels
,
kernel_h
,
kernel_w
});
net
.
AddRandomInput
<
float
>
(
"Bias"
,
{
output_channels
});
// Worm-up
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
net
.
RunOp
(
D
);
}
mace
::
testing
::
StartTiming
();
while
(
iters
--
)
{
net
.
RunOp
(
D
);
}
}
...
...
@@ -36,7 +60,7 @@ static void Conv2d(int iters, int batch, int channels, int height, int width,
BM_CONV_2D_MACRO(N, C, H, W, KH, KW, S, P, OC, TYPE, CPU); \
BM_CONV_2D_MACRO(N, C, H, W, KH, KW, S, P, OC, TYPE, NEON);
BM_CONV_2D
(
1
,
3
,
256
,
256
,
1
,
1
,
1
,
VALID
,
64
,
float
);
BM_CONV_2D
(
1
,
64
,
32
,
32
,
1
,
1
,
1
,
VALID
,
128
,
float
);
}
// namespace kernels
}
// namespace mace
mace/ops/conv_2d_test.cc
浏览文件 @
6703eb21
...
...
@@ -3,8 +3,8 @@
//
#include "mace/core/operator.h"
#include "mace/ops/ops_test_util.h"
#include "mace/ops/conv_2d.h"
#include "mace/ops/ops_test_util.h"
using
namespace
mace
;
...
...
mace/ops/ops_test_util.h
浏览文件 @
6703eb21
...
...
@@ -37,17 +37,33 @@ class OpDefBuilder {
class
OpsTestNet
{
public:
OpsTestNet
()
{}
template
<
typename
T
>
void
AddInputFromArray
(
const
char
*
name
,
const
std
::
vector
<
index_t
>&
shape
,
const
std
::
vector
<
T
>&
data
)
{
Tensor
*
input
=
ws_
.
CreateTensor
(
name
,
cpu_allocator
(),
DataTypeToEnum
<
T
>::
v
());
input
->
Resize
(
shape
);
float
*
input_data
=
input
->
mutable_data
<
float
>
();
// TODO check the dims
T
*
input_data
=
input
->
mutable_data
<
T
>
();
MACE_CHECK
(
input
->
size
()
==
data
.
size
());
memcpy
(
input_data
,
data
.
data
(),
data
.
size
()
*
sizeof
(
T
));
}
template
<
typename
T
>
void
AddRandomInput
(
const
char
*
name
,
const
std
::
vector
<
index_t
>&
shape
)
{
Tensor
*
input
=
ws_
.
CreateTensor
(
name
,
cpu_allocator
(),
DataTypeToEnum
<
T
>::
v
());
input
->
Resize
(
shape
);
float
*
input_data
=
input
->
mutable_data
<
T
>
();
std
::
random_device
rd
;
std
::
mt19937
gen
(
rd
());
std
::
normal_distribution
<
T
>
nd
(
0
,
1
);
std
::
generate
(
input_data
,
input_data
+
input
->
size
(),
[
&
gen
,
&
nd
]{
return
nd
(
gen
);
});
}
void
AddIntArg
(
const
char
*
name
,
const
int
value
)
{
auto
arg
=
op_def_
.
add_arg
();
arg
->
set_name
(
name
);
...
...
@@ -98,7 +114,7 @@ class OpsTestNet {
if
(
!
net_
)
{
NetDef
net_def
;
net_def
.
add_op
()
->
CopyFrom
(
op_def_
);
VLOG
(
0
)
<<
net_def
.
DebugString
();
VLOG
(
3
)
<<
net_def
.
DebugString
();
net_
=
CreateNet
(
net_def
,
&
ws_
,
device
);
}
return
net_
->
Run
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录