Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
96d90be1
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
404
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看板
提交
96d90be1
编写于
6月 01, 2022
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(dnn): fallback support int4 relayout
GitOrigin-RevId: 3625f5847055940e646358654f296922f05afa93
上级
eef0308b
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
409 addition
and
76 deletion
+409
-76
dnn/include/megdnn/dtype.h
dnn/include/megdnn/dtype.h
+13
-11
dnn/src/fallback/relayout/opr_impl.cpp
dnn/src/fallback/relayout/opr_impl.cpp
+341
-64
dnn/test/common/checker.cpp
dnn/test/common/checker.cpp
+1
-1
dnn/test/fallback/relayout.cpp
dnn/test/fallback/relayout.cpp
+54
-0
未找到文件。
dnn/include/megdnn/dtype.h
浏览文件 @
96d90be1
...
...
@@ -615,16 +615,17 @@ struct log<1> {
// begin define DTypeTrait impls {
#if MEGDNN_CC_HOST
#define MEGDNN_DEF_DT_BASIC_FIELDS(_name, _ctype, _cat, _sign, _bits, _has_param) \
static MEGDNN_CONSTEXPR const char* name = #_name; \
using ctype = _ctype; \
using dtype = ::megdnn::dtype::_name; \
static MEGDNN_CONSTEXPR DTypeCategory category = DTypeCategory::_cat; \
static MEGDNN_CONSTEXPR DTypeSignedness signedness = DTypeSignedness::_sign; \
static MEGDNN_CONSTEXPR uint16_t size_log = \
::megdnn::dtype::log<sizeof(ctype)>::value; \
static MEGDNN_CONSTEXPR DTypeEnum enumv = DTypeEnum::_name; \
static MEGDNN_CONSTEXPR uint16_t low_bit = _bits; \
#define MEGDNN_DEF_DT_BASIC_FIELDS(_name, _ctype, _cat, _sign, _bits, _has_param) \
static MEGDNN_CONSTEXPR const char* name = #_name; \
using ctype = _ctype; \
using dtype = ::megdnn::dtype::_name; \
static MEGDNN_CONSTEXPR DTypeCategory category = DTypeCategory::_cat; \
static MEGDNN_CONSTEXPR DTypeSignedness signedness = DTypeSignedness::_sign; \
static MEGDNN_CONSTEXPR uint16_t size_log = \
::megdnn::dtype::log<sizeof(ctype)>::value; \
static MEGDNN_CONSTEXPR DTypeEnum enumv = DTypeEnum::_name; \
static MEGDNN_CONSTEXPR uint16_t low_bit = _bits; \
static MEGDNN_CONSTEXPR uint16_t bits = _bits == 0 ? sizeof(_ctype) * 8 : _bits; \
static MEGDNN_CONSTEXPR bool has_param = _has_param
#else
#define MEGDNN_DEF_DT_BASIC_FIELDS(_name, _ctype, _cat, _sign, _bits, _has_param) \
...
...
@@ -632,7 +633,8 @@ struct log<1> {
typedef ::megdnn::dtype::_name dtype; \
static const uint16_t size_log = ::megdnn::dtype::log<sizeof(ctype)>::value; \
static MEGDNN_CONSTEXPR int enumv = DTypeEnum::_name; \
static MEGDNN_CONSTEXPR uint16_t low_bit = _bits
static MEGDNN_CONSTEXPR uint16_t low_bit = _bits; \
static MEGDNN_CONSTEXPR uint16_t bits = _bits == 0 ? sizeof(_ctype) * 8 : _bits;
#endif // MEGDNN_CC_HOST
#define MEGDNN_DEF_DT(_name, _ctype, _cat, _sign, _minval, _maxval) \
...
...
dnn/src/fallback/relayout/opr_impl.cpp
浏览文件 @
96d90be1
此差异已折叠。
点击以展开。
dnn/test/common/checker.cpp
浏览文件 @
96d90be1
...
...
@@ -98,7 +98,7 @@ template <typename Impl>
void
copy_tensors
(
const
CheckerHelper
::
TensorValueArray
&
dest
,
const
CheckerHelper
::
TensorValueArray
&
src
,
const
Impl
&
copy_impl
)
{
megdnn_assert
(
dest
.
size
()
==
src
.
size
());
megdnn_assert
(
dest
.
size
()
==
src
.
size
()
,
"%zu != %zu"
,
dest
.
size
(),
src
.
size
()
);
for
(
size_t
i
=
0
;
i
<
src
.
size
();
i
++
)
{
auto
&&
tensor
=
src
[
i
];
if
(
tensor
.
layout
.
ndim
==
0
)
...
...
dnn/test/fallback/relayout.cpp
浏览文件 @
96d90be1
...
...
@@ -34,6 +34,60 @@ TEST_F(FALLBACK, RELAYOUT_RECORD) {
checker
.
exec
({{
2
,
2
,
2
},
{
2
,
2
,
2
}});
}
TEST_F
(
FALLBACK
,
RELAYOUT_Q4
)
{
Checker
<
Relayout
>
checker
(
handle
());
UniformIntRNG
rng_int4
{
-
7
,
7
};
checker
.
set_rng
(
0
,
&
rng_int4
)
.
set_rng
(
1
,
&
rng_int4
)
.
set_dtype
(
0
,
dtype
::
QuantizedS4
(
1.
f
))
.
set_dtype
(
1
,
dtype
::
QuantizedS4
(
1.
f
))
.
execs
({{
2
,
2
,
1
,
1
},
{
1
,
1
,
2
,
2
}})
.
execs
({{
1
,
64
,
15
,
15
},
{
1
,
15
,
15
,
64
}})
.
execs
({{
1
,
5
,
9
,
32
},
{
1
,
5
,
32
,
9
}})
.
execl
(
TensorLayoutArray
{
{{
6400
},
{
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
20
,
320
},
{
1024
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
156
},
{
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
13
,
3
,
4
},
{
16
,
1
,
4
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
48
},
{
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
3
,
4
,
4
},
{
16
,
1
,
4
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
84
},
{
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
3
,
4
,
7
},
{
28
,
1
,
4
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
336
},
{
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
3
,
4
,
7
,
4
},
{
112
,
4
,
16
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
54
},
{
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
6
,
3
,
3
},
{
16
,
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
1200
,
3
},
{
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
20
,
60
,
3
},
{
256
,
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
20
,
20
,
3
,
3
},
{
256
,
12
,
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
1200
,
3
},
{
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
5
,
16
,
7
,
7
,
4
},
{
3136
,
196
,
28
,
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
5
,
16
,
7
,
7
,
4
},
{
3136
,
4
,
448
,
64
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
5
,
7
,
7
,
16
,
4
},
{
3136
,
448
,
64
,
4
,
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
5
,
7
,
7
,
16
,
4
},
{
3136
,
28
,
4
,
196
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
5
,
2
,
7
,
7
,
32
},
{
3136
,
1568
,
224
,
32
,
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
5
,
2
,
7
,
7
,
32
},
{
3136
,
32
,
448
,
64
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}})
.
execl
(
TensorLayoutArray
{
{{
5
,
7
,
7
,
2
,
32
},
{
3136
,
448
,
64
,
32
,
1
},
dtype
::
QuantizedS4
{
1.
f
}},
{{
5
,
7
,
7
,
2
,
32
},
{
3136
,
224
,
32
,
1568
,
1
},
dtype
::
QuantizedS4
{
1.
f
}}});
}
#if MEGDNN_WITH_BENCHMARK
TEST_F
(
FALLBACK
,
BENCHMARK_RELAYOUT_CV
)
{
relayout
::
run_cv_benchmark
(
handle
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录