Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MindSpore
akg
提交
726540a9
A
akg
项目概览
MindSpore
/
akg
通知
58
Star
7
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
akg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
726540a9
编写于
7月 06, 2020
作者:
M
mindspore-ci-bot
提交者:
Gitee
7月 06, 2020
浏览文件
操作
浏览文件
下载
差异文件
!23 matmul operator tuning space fixed
Merge pull request !23 from hiranoaya/tuning
上级
2c8b15f1
1b7cdc86
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
31 addition
and
7 deletion
+31
-7
tests/fuzz/tune/autotuning/space_generators.py
tests/fuzz/tune/autotuning/space_generators.py
+31
-7
未找到文件。
tests/fuzz/tune/autotuning/space_generators.py
浏览文件 @
726540a9
...
...
@@ -484,18 +484,39 @@ def _get_space_matmul_cube(op_desc: MatmulCubeDesc):
mmax
=
(
m
+
15
)
//
16
nmax
=
(
n
+
15
)
//
16
kmax
=
(
k
+
15
)
//
16
size_scale
=
2
l1_max_size
=
(
1024
*
1024
)
/
size_scale
l0a_max_size
=
(
64
*
1024
)
/
size_scale
l0b_max_size
=
(
64
*
1024
)
/
size_scale
l0c_max_size
=
((
256
-
8
)
*
1024
)
/
size_scale
double_buffer
=
True
mad_fp32
=
True
l1_max_size
=
(
1024
*
1024
)
# L1 MEM 1024KB
l0a_max_size
=
(
64
*
1024
)
# L0A MEM 64KB
l0b_max_size
=
(
64
*
1024
)
# L0B MEM 64KB
l0c_max_size
=
(
256
*
1024
)
# L0C MEM 256KB
ub_max_size
=
((
256
-
8
)
*
1024
)
# UB MEM 248KB, 8KB reserved for compiler
if
double_buffer
:
l1_max_size
=
l1_max_size
//
2
l0a_max_size
=
l0a_max_size
//
2
l0b_max_size
=
l0b_max_size
//
2
l0c_max_size
=
l0c_max_size
//
2
ub_max_size
=
ub_max_size
//
2
if
mad_fp32
:
l0c_max_size
=
l0c_max_size
//
2
if
op_desc
.
out_dtype
==
'float32'
:
l0c_max_size
=
l0c_max_size
/
2
ub_max_size
=
ub_max_size
/
/
2
bypass_options
=
[
0
,
1
,
2
]
for
bypass
in
bypass_options
:
if
(
bypass
==
2
)
and
((
op_desc
.
adj_x
==
False
and
op_desc
.
left_format
[
0
].
lower
()
==
'n'
)
or
(
op_desc
.
adj_x
==
True
and
op_desc
.
left_format
[
0
].
lower
()
==
'z'
)):
continue
if
(
bypass
==
1
)
and
((
op_desc
.
adj_y
==
False
and
op_desc
.
right_format
[
0
].
lower
()
==
'z'
)
or
(
op_desc
.
adj_y
==
True
and
op_desc
.
right_format
[
0
].
lower
()
==
'n'
)):
continue
for
k_l1
in
range
(
1
,
kmax
+
1
):
if
kmax
%
k_l1
!=
0
:
continue
...
...
@@ -528,15 +549,18 @@ def _get_space_matmul_cube(op_desc: MatmulCubeDesc):
if
m_l0
*
16
*
n_l0
*
16
>
l0c_max_size
:
continue
if
m_l0
*
16
*
n_l0
*
16
>
ub_max_size
:
continue
if
bypass
==
2
:
l1_size
=
n_l1
*
16
*
k_l1
*
16
elif
bypass
==
1
:
l1_size
=
m_l1
*
16
*
k_l1
*
16
else
:
l1_size
=
(
m_l1
*
16
+
n_l1
*
16
)
*
k_l1
*
16
if
l1_size
>
l1_max_size
:
continue
if
nmax
==
1
:
n_l1
=
0
n_l0
=
0
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录