Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
23cc01f2
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看板
提交
23cc01f2
编写于
7月 17, 2020
作者:
Z
zhoufeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dumpir can dump subgraphs of ascend kernel graph
Signed-off-by:
N
zhoufeng
<
zhoufeng54@huawei.com
>
上级
9c6d1bf0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
3 deletion
+29
-3
mindspore/ccsrc/backend/session/ascend_control_parser.cc
mindspore/ccsrc/backend/session/ascend_control_parser.cc
+27
-2
mindspore/ccsrc/backend/session/ascend_control_parser.h
mindspore/ccsrc/backend/session/ascend_control_parser.h
+2
-1
未找到文件。
mindspore/ccsrc/backend/session/ascend_control_parser.cc
浏览文件 @
23cc01f2
...
...
@@ -107,7 +107,7 @@ static void ReuseParameter(NotNull<KernelGraphPtr> root_kg,
static
CNodePtr
GetNextRealKernel
(
const
std
::
vector
<
CNodePtr
>
&
list
,
size_t
start
)
{
for
(
size_t
i
=
start
;
i
<
list
.
size
()
-
1
;
++
i
)
{
if
(
!
IsPrimitiveCNode
(
list
[
i
],
prim
::
kPrimPartial
)
&&
AnfAlgo
::
IsRealKernel
(
list
[
i
]))
{
if
(
AnfAlgo
::
IsRealKernel
(
list
[
i
]))
{
return
list
[
i
];
}
}
...
...
@@ -171,18 +171,43 @@ static void EraseNodeFromExecOrder(const AnfNodePtr &node, const NotNull<std::ve
exec_order
->
erase
(
exec_iter
);
}
void
AscendControlParser
::
AttachChildGraphToReturnNode
(
NotNull
<
KernelGraphPtr
>
graph
,
const
NotNull
<
std
::
set
<
KernelGraphPtr
>
*>
memo
)
{
if
(
memo
->
find
(
graph
)
!=
memo
->
end
())
{
return
;
}
memo
->
insert
(
graph
.
get
());
const
std
::
vector
<
std
::
shared_ptr
<
KernelGraph
>>
&
child_graph_order
=
graph
->
child_graph_order
();
if
(
child_graph_order
.
empty
())
{
return
;
}
std
::
vector
<
AnfNodePtr
>
depend_inputs
=
{
NewValueNode
(
std
::
make_shared
<
Primitive
>
(
prim
::
kPrimPartial
->
name
()))};
for
(
auto
&
cg
:
child_graph_order
)
{
MS_EXCEPTION_IF_NULL
(
cg
);
auto
fg
=
cg
->
cast
<
FuncGraphPtr
>
();
MS_EXCEPTION_IF_NULL
(
fg
);
depend_inputs
.
emplace_back
(
NewValueNode
(
fg
));
AttachChildGraphToReturnNode
(
NOT_NULL
(
cg
),
memo
);
}
auto
child_graphs
=
graph
->
NewCNode
(
depend_inputs
);
InsertDependToGraph
(
graph
,
NOT_NULL
(
child_graphs
));
}
void
AscendControlParser
::
LinkGraph
(
NotNull
<
KernelGraphPtr
>
kg
)
{
std
::
set
<
KernelGraphPtr
>
memo
;
std
::
vector
<
std
::
pair
<
AnfNodePtr
,
AnfNodePtr
>>
link_list
;
// Insert Assign
ChildGraphDataAssign
(
kg
,
NOT_NULL
(
&
link_list
),
NOT_NULL
(
&
memo
));
memo
.
clear
();
// Reuse Parameter
ReuseParameter
(
kg
,
link_list
);
// replace call by label goto / label switch
memo
.
clear
();
(
void
)
ProcessKernelGraph
(
kg
,
nullptr
,
nullptr
,
NOT_NULL
(
&
memo
));
memo
.
clear
();
// assign label resource
device
::
ascend
::
AscendLabelAssign
::
GetInstance
().
AssignLabel
(
kg
);
AttachChildGraphToReturnNode
(
kg
,
NOT_NULL
(
&
memo
));
}
void
AscendControlParser
::
EraseParameter
(
NotNull
<
KernelGraphPtr
>
root_graph
,
...
...
mindspore/ccsrc/backend/session/ascend_control_parser.h
浏览文件 @
23cc01f2
...
...
@@ -66,7 +66,8 @@ class AscendControlParser {
static
AnfNodePtr
InsertAssignToGraph
(
NotNull
<
KernelGraphPtr
>
kg
,
NotNull
<
AnfNodePtr
>
from
,
NotNull
<
AnfNodePtr
>
to
);
static
std
::
vector
<
std
::
pair
<
KernelGraphPtr
,
std
::
vector
<
AnfNodePtr
>>>
ParseCallNode
(
NotNull
<
CNodePtr
>
call_node
);
static
std
::
tuple
<
KernelGraphPtr
,
std
::
vector
<
AnfNodePtr
>>
ParsePartial
(
NotNull
<
AnfNodePtr
>
node
);
static
void
AttachChildGraphToReturnNode
(
NotNull
<
KernelGraphPtr
>
graph
,
const
NotNull
<
std
::
set
<
KernelGraphPtr
>
*>
memo
);
// root graph order
static
bool
CheckLabelIndex
(
uint32_t
order_index
,
uint32_t
label_index
,
const
CNodePtr
&
cnode
,
NotNull
<
KernelGraphPtr
>
graph
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录