Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
02cbb13b
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
403
Star
4705
Fork
582
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
02cbb13b
编写于
6月 02, 2020
作者:
M
Megvii Engine Team
提交者:
Xu Xinran
6月 19, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(dnn/arm): fix nchw44 fp32 direct algo oh block and unused stride2 algo
GitOrigin-RevId: 8012678faebedb0e21ac7373394b0e035ed16695
上级
d2f5874a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
16 addition
and
9 deletion
+16
-9
dnn/src/arm_common/conv_bias/fp32/f32_direct_nchw44_algo.cpp
dnn/src/arm_common/conv_bias/fp32/f32_direct_nchw44_algo.cpp
+4
-3
dnn/test/arm_common/conv_bias.cpp
dnn/test/arm_common/conv_bias.cpp
+12
-6
未找到文件。
dnn/src/arm_common/conv_bias/fp32/f32_direct_nchw44_algo.cpp
浏览文件 @
02cbb13b
...
...
@@ -107,7 +107,7 @@ static void do_conv_kern(WorkspaceBundle bundle,
constexpr
int
oc_idx
=
0
;
int
oc_block
=
oc
;
int
oh_block
=
block_helper
(
kern_param
.
nr_threads
,
oh2
,
ic
*
iw
*
sizeof
(
float
)
*
2
);
ic
*
iw
*
sizeof
(
float
)
*
stride_h
);
const
int
oh_idx
=
ncb_index
.
ndrange_id
[
2
];
const
int
oh_block_real
=
std
::
min
(
oh
-
oh_idx
*
oh_block
,
oh_block
);
const
int
ih_real
=
oh_block_real
*
stride_h
+
fh
-
stride_h
;
...
...
@@ -297,8 +297,9 @@ ConvBiasImpl::AlgoF32DirectNCHW44::dispatch_kerns(
int
oh
=
param
.
osz
[
0
];
int
ic
=
param
.
filter_meta
.
icpg
;
int
iw
=
param
.
isz
[
1
];
int
oh_block
=
block_helper
(
param
.
nr_threads
,
oh
,
ic
*
iw
*
sizeof
(
float
)
*
2
);
int
stride_h
=
param
.
filter_meta
.
stride
[
0
];
int
oh_block
=
block_helper
(
param
.
nr_threads
,
oh
,
ic
*
iw
*
sizeof
(
float
)
*
stride_h
);
CpuNDRange
ncb_range
=
{
static_cast
<
size_t
>
(
batch
),
static_cast
<
size_t
>
(
group
),
static_cast
<
size_t
>
(
div_ceil
(
oh
,
oh_block
))};
...
...
dnn/test/arm_common/conv_bias.cpp
浏览文件 @
02cbb13b
...
...
@@ -118,24 +118,30 @@ static void benchmark_convbias(Handle* handle, bool is_fp32 = false) {
conv_bias
::
ConvBiasAlgoChecker
<
ConvBias
>
(
"IM2COLMATMUL:AARCH64_F32K8X12X1:192"
));
Benchmarker
<
ConvBias
>
benchmarker_
int_
nchw44
(
handle
);
Benchmarker
<
ConvBias
>
benchmarker_nchw44
(
handle
);
if
(
is_fp32
)
{
benchmarker_
int_
nchw44
.
set_times
(
RUNS
)
benchmarker_nchw44
.
set_times
(
RUNS
)
.
set_dtype
(
0
,
dtype
::
Float32
())
.
set_dtype
(
1
,
dtype
::
Float32
())
.
set_dtype
(
2
,
dtype
::
Float32
())
.
set_dtype
(
4
,
dtype
::
Float32
())
.
set_display
(
false
);
}
else
{
benchmarker_
int_
nchw44
.
set_times
(
RUNS
)
benchmarker_nchw44
.
set_times
(
RUNS
)
.
set_dtype
(
0
,
dtype
::
QuantizedS8
(
2.5
))
.
set_dtype
(
1
,
dtype
::
QuantizedS8
(
2.5
))
.
set_dtype
(
2
,
dtype
::
QuantizedS32
(
6.25
))
.
set_dtype
(
4
,
dtype
::
QuantizedS8
(
60.25
))
.
set_display
(
false
);
}
benchmarker_int_nchw44
.
set_before_exec_callback
(
conv_bias
::
ConvBiasAlgoChecker
<
ConvBias
>
(
".+"
));
auto
nchw44_algo_regx
=
".*(DIRECT|NCHW_NCHW44).*"
;
#if __ARM_FEATURE_DOTPROD
if
(
!
is_fp32
)
{
nchw44_algo_regx
=
".*DOT.*"
;
}
#endif
benchmarker_nchw44
.
set_before_exec_callback
(
conv_bias
::
ConvBiasAlgoChecker
<
ConvBias
>
(
nchw44_algo_regx
));
auto
run
=
[
&
](
size_t
N
,
size_t
IC
,
size_t
OC
,
size_t
H
,
size_t
W
,
size_t
FS
,
size_t
stride
,
bool
input_nchw
=
false
)
{
...
...
@@ -171,7 +177,7 @@ static void benchmark_convbias(Handle* handle, bool is_fp32 = false) {
bias
=
{
1
,
OC
/
4
,
1
,
1
,
4
};
dst
=
{
N
,
OC
/
4
,
OH
,
OW
,
4
};
auto
int_nchw44_used
=
benchmarker_
int_
nchw44
.
set_param
(
param
).
exec
(
auto
int_nchw44_used
=
benchmarker_nchw44
.
set_param
(
param
).
exec
(
{
src
,
filter
,
bias
,
{},
dst
})
/
RUNS
;
float
computations
=
IC
*
(
FS
*
FS
)
*
dst
.
total_nr_elems
()
*
2
*
1e-6
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录