Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
af1bee3c
M
mindspore
项目概览
magicwindyyd
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindspore
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
af1bee3c
编写于
7月 03, 2020
作者:
W
wuyongkang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add record for transform status
上级
4419881f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
45 addition
and
3 deletion
+45
-3
mindspore/ccsrc/optimizer/opt.cc
mindspore/ccsrc/optimizer/opt.cc
+35
-2
mindspore/ccsrc/optimizer/optimizer.h
mindspore/ccsrc/optimizer/optimizer.h
+10
-1
未找到文件。
mindspore/ccsrc/optimizer/opt.cc
浏览文件 @
af1bee3c
...
...
@@ -20,6 +20,7 @@
#include <deque>
#include <memory>
#include <unordered_set>
#include <unordered_map>
#include "ir/anf.h"
#include "ir/manager.h"
...
...
@@ -191,15 +192,30 @@ bool SubstitutionList::operator()(const FuncGraphPtr &func_graph, const Optimize
FuncGraphManagerPtr
manager
=
optimizer
->
manager
();
manager
->
AddFuncGraph
(
func_graph
);
// for transform status counting
size_t
space
=
0
;
std
::
unordered_map
<
std
::
string
,
std
::
vector
<
bool
>>
status
;
if
(
optimizer
->
is_on_debug_
)
{
for
(
size_t
i
=
0
;
i
<
list_
.
size
();
i
++
)
{
status
[
list_
[
i
]
->
name_
+
std
::
to_string
(
i
)]
=
{};
}
}
bool
loop
=
false
;
bool
changes
=
false
;
do
{
loop
=
false
;
for
(
auto
const
&
transform
:
list_
)
{
auto
change
=
ApplyTransform
(
optimizer
,
func_graph
->
output
(),
transform
);
for
(
size_t
i
=
0
;
i
<
list_
.
size
();
i
++
)
{
auto
change
=
ApplyTransform
(
optimizer
,
func_graph
->
output
(),
list_
[
i
]
);
changes
=
changes
||
change
;
loop
=
loop
||
change
;
// record the status of each transform
if
(
optimizer
->
is_on_debug_
)
{
status
[
list_
[
i
]
->
name_
+
std
::
to_string
(
i
)].
push_back
(
change
);
space
=
std
::
max
(
list_
[
i
]
->
name_
.
size
(),
space
);
}
}
if
(
is_once_
)
{
...
...
@@ -207,6 +223,23 @@ bool SubstitutionList::operator()(const FuncGraphPtr &func_graph, const Optimize
}
}
while
(
loop
);
// display the status of each transform
if
(
optimizer
->
is_on_debug_
)
{
std
::
stringstream
ss
;
ss
<<
std
::
endl
<<
"Pass: "
<<
optimizer
->
name
()
<<
"("
<<
optimizer
->
CurPass_
.
counter
<<
")_"
<<
optimizer
->
CurPass_
.
name
<<
std
::
endl
;
for
(
size_t
i
=
0
;
i
<
list_
.
size
();
i
++
)
{
auto
name
=
list_
[
i
]
->
name_
;
ss
<<
std
::
left
<<
std
::
setw
(
space
+
4
)
<<
name
<<
"
\t
"
;
for
(
auto
change
:
status
[
name
+
std
::
to_string
(
i
)])
{
ss
<<
change
<<
" "
;
}
ss
<<
std
::
endl
;
}
MS_LOG
(
DEBUG
)
<<
ss
.
str
();
}
return
changes
;
}
}
// namespace opt
...
...
mindspore/ccsrc/optimizer/optimizer.h
浏览文件 @
af1bee3c
...
...
@@ -95,6 +95,7 @@ class Optimizer : public std::enable_shared_from_this<Optimizer> {
void
Init
(
const
OptPassGroupMap
&
passes
,
bool
run_only_once
)
{
run_only_once_
=
run_only_once
;
is_watch_renormalize_
=
false
;
is_on_debug_
=
IS_OUTPUT_ON
(
mindspore
::
DEBUG
);
for
(
auto
&
iter
:
passes
)
{
const
std
::
string
&
name
=
iter
.
first
;
...
...
@@ -144,6 +145,7 @@ class Optimizer : public std::enable_shared_from_this<Optimizer> {
auto
run_runc
=
[
&
counter
,
&
func_graph
,
&
changes
,
use_profile
,
this
]()
{
for
(
size_t
i
=
0
;
i
<
passes_
.
size
();
++
i
)
{
const
OptPass
&
opt
=
passes_
[
i
];
CurPass_
=
{
counter
,
pass_names_
[
i
]};
auto
opt_func
=
[
&
func_graph
,
&
changes
,
&
opt
,
this
]()
{
if
(
opt
.
is_renormalize
())
{
auto
resource_ptr
=
std
::
dynamic_pointer_cast
<
pipeline
::
Resource
>
(
resource_
);
...
...
@@ -173,7 +175,7 @@ class Optimizer : public std::enable_shared_from_this<Optimizer> {
}
};
use_profile
?
(
WITH
(
MsProfile
::
GetProfile
()
->
Step
(
pass_names_
[
i
]))
opt_func
)
:
opt_func
();
if
(
IS_OUTPUT_ON
(
mindspore
::
DEBUG
)
&&
MsContext
::
GetInstance
()
->
save_graphs_flag
())
{
if
(
is_on_debug_
&&
MsContext
::
GetInstance
()
->
save_graphs_flag
())
{
MS_LOG
(
DEBUG
)
<<
"The opt "
<<
name_
<<
" round "
<<
counter
<<
" OptPass "
<<
pass_names_
[
i
]
<<
" end."
;
auto
fg_name
=
"opt_substep_"
+
name_
+
"_r"
+
std
::
to_string
(
counter
)
+
"_"
+
std
::
to_string
(
i
)
+
"_"
+
pass_names_
[
i
];
...
...
@@ -217,6 +219,13 @@ class Optimizer : public std::enable_shared_from_this<Optimizer> {
bool
is_watch_renormalize
()
{
return
is_watch_renormalize_
;
}
void
set_enable
(
bool
enable
)
{
is_enable_
=
enable
;
}
struct
{
int
counter
;
std
::
string
name
;
}
CurPass_
;
bool
is_on_debug_
{
false
};
private:
const
std
::
string
name_
;
pipeline
::
ResourceBasePtr
resource_
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录