Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
0e8b81c2
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看板
提交
0e8b81c2
编写于
1月 18, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(dnn/opencl): fix elemwise negative stride support
GitOrigin-RevId: 506d7e61043d84923a317722d295a7e3cf591341
上级
dbb3dd68
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
128 addition
and
0 deletion
+128
-0
dnn/test/common/elemwise.cpp
dnn/test/common/elemwise.cpp
+125
-0
dnn/test/common/elemwise.h
dnn/test/common/elemwise.h
+3
-0
未找到文件。
dnn/test/common/elemwise.cpp
浏览文件 @
0e8b81c2
...
...
@@ -924,6 +924,131 @@ DEF_TEST(all_modes) {
#undef run
}
#define UNARY_NEGATIVE_STRIDE_TEST_CASE_INT(_optr) \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 1}, {-12, -4, -1}, dtype::Int8()}, {}}); \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 1}, {-12, -4, -1}, dtype::Int16()}, {}}); \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 1}, {-12, -4, -1}, dtype::Int32()}, {}});
#define UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(_optr) \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 1}, {-12, -4, -1}, dtype::Float32()}, {}});
#define BUILD_UNARY_NEGATIVE_STRIDE_TEST_CASE_INT \
UNARY_NEGATIVE_STRIDE_TEST_CASE_INT(RELU); \
UNARY_NEGATIVE_STRIDE_TEST_CASE_INT(ABS);
#define BUILD_UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(ABS) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(LOG) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(COS) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(SIN) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(FLOOR) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(CEIL) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(SIGMOID) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(EXP) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(RELU) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(ROUND) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(TANH) \
UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT(FAST_TANH)
DEF_TEST
(
unary_negative_stride
)
{
using
Mode
=
ElemwiseForward
::
Param
::
Mode
;
Checker
<
ElemwiseForward
>
checker
(
handle
);
BUILD_UNARY_NEGATIVE_STRIDE_TEST_CASE_INT
;
UniformFloatRNG
rng
(
1e-2
,
6e1
);
checker
.
set_rng
(
0
,
&
rng
);
checker
.
set_epsilon
(
1e-5
);
BUILD_UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT
;
}
#undef UNARY_NEGATIVE_STRIDE_TEST_CASE_INT
#undef UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT
#undef BUILD_UNARY_NEGATIVE_STRIDE_TEST_CASE_INT
#undef BUILD_UNARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT
#define BINARY_NEGATIVE_STRIDE_TEST_CASE_INT(_optr) \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 7}, {-28, -7, -1}, dtype::Int8()}, \
{{1, 4, 1}, dtype::Int8()}, \
{}}); \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 7}, {-28, -7, -1}, dtype::Int16()}, \
{{1, 4, 1}, dtype::Int16()}, \
{}}); \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 7}, {-28, -7, -1}, dtype::Int32()}, \
{{1, 4, 1}, dtype::Int32()}, \
{}});
#define BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(_optr) \
checker.set_param(Mode::_optr) \
.execl({{{3, 4, 7}, {-28, -7, -1}, dtype::Float32()}, \
{{1, 4, 1}, dtype::Float32()}, \
{}});
#define BUILD_BINARY_NEGATIVE_STRIDE_TEST_CASE_INT \
BINARY_NEGATIVE_STRIDE_TEST_CASE_INT(ADD) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_INT(MUL) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_INT(MAX) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_INT(MIN) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_INT(SUB)
#define BUILD_BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32 \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(POW) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(TRUE_DIV) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(FUSE_ADD_SIGMOID) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(FUSE_ADD_TANH) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(FUSE_ADD_RELU) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(FUSE_ADD_H_SWISH) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(FAST_TANH_GRAD) \
BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32(H_SWISH_GRAD)
DEF_TEST
(
binary_negative_stride
)
{
using
Mode
=
ElemwiseForward
::
Param
::
Mode
;
Checker
<
ElemwiseForward
>
checker
(
handle
);
BUILD_BINARY_NEGATIVE_STRIDE_TEST_CASE_INT
;
UniformFloatRNG
rng
(
1e-2
,
2e1
);
checker
.
set_rng
(
0
,
&
rng
);
checker
.
set_epsilon
(
1e-5
);
BUILD_BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32
;
}
#undef BINARY_NEGATIVE_STRIDE_TEST_CASE_INT
#undef BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32
#undef BUILD_BINARY_NEGATIVE_STRIDE_TEST_CASE_INT
#undef BUILD_BINARY_NEGATIVE_STRIDE_TEST_CASE_FLOAT32
DEF_TEST
(
ternary_negative_stride
)
{
using
Mode
=
ElemwiseForward
::
Param
::
Mode
;
Checker
<
ElemwiseForward
>
checker
(
handle
);
checker
.
set_param
(
Mode
::
FUSE_MUL_ADD3
);
checker
.
execl
({{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Int8
()},
{{
1
,
7
},
{
-
3
,
-
1
},
dtype
::
Int8
()},
{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Int8
()},
{}});
checker
.
execl
({{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Int16
()},
{{
1
,
7
},
{
-
3
,
-
1
},
dtype
::
Int16
()},
{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Int16
()},
{}});
checker
.
execl
({{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Int32
()},
{{
1
,
7
},
{
-
3
,
-
1
},
dtype
::
Int32
()},
{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Int32
()},
{}});
UniformFloatRNG
rng
(
1e-2
,
2e1
);
checker
.
set_rng
(
0
,
&
rng
);
checker
.
set_epsilon
(
1e-5
);
checker
.
execl
({{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Float32
()},
{{
1
,
7
},
{
-
3
,
-
1
},
dtype
::
Float32
()},
{{
1
,
7
},
{
-
7
,
-
1
},
dtype
::
Float32
()},
{}});
}
TEST
(
TEST_ELEMWISE
,
MODE_TRAIT
)
{
using
M
=
Elemwise
::
Mode
;
using
T
=
Elemwise
::
ModeTrait
;
...
...
dnn/test/common/elemwise.h
浏览文件 @
0e8b81c2
...
...
@@ -40,6 +40,9 @@ namespace elemwise {
cb(unary3) \
cb(binary3) \
cb(all_modes) \
cb(unary_negative_stride) \
cb(binary_negative_stride) \
cb(ternary_negative_stride) \
#define FOREACH_ELEMWISE_CASE(cb) \
cb(FIRST_ELEMWISE_CASE) \
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录