Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
311d8ea1
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看板
提交
311d8ea1
编写于
7月 29, 2020
作者:
H
huanghui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add exception when different communication op in one segment shared the same input
上级
9e124493
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
3 deletion
+12
-3
mindspore/ccsrc/backend/optimizer/pass/communication_op_fusion.cc
...e/ccsrc/backend/optimizer/pass/communication_op_fusion.cc
+12
-3
未找到文件。
mindspore/ccsrc/backend/optimizer/pass/communication_op_fusion.cc
浏览文件 @
311d8ea1
...
...
@@ -16,6 +16,7 @@
#include "backend/optimizer/pass/communication_op_fusion.h"
#include <vector>
#include <set>
#include <memory>
#include <unordered_map>
...
...
@@ -89,6 +90,13 @@ std::string GetFusionGroupKey(const AnfNodePtr &node) {
}
return
group
+
op
+
std
::
to_string
(
fusion
);
}
void
CheckInputs
(
const
std
::
vector
<
AnfNodePtr
>
&
fusion_inputs
)
{
std
::
set
<
AnfNodePtr
>
inputs_set
(
fusion_inputs
.
begin
(),
fusion_inputs
.
end
());
if
(
inputs_set
.
size
()
<
fusion_inputs
.
size
())
{
MS_LOG
(
EXCEPTION
)
<<
"Different communication op in one segment cannot share the same input"
;
}
}
}
// namespace
bool
CommunicationOpFusion
::
GetSplitSegments
(
const
CommunicationOpInfo
&
communication_op_info
,
size_t
*
segment_num
,
...
...
@@ -163,6 +171,7 @@ AnfNodePtr CommunicationOpFusion::CreateFusedCommunicationOp(const FuncGraphPtr
MS_EXCEPTION_IF_NULL
(
cnode
);
fusion_inputs
.
insert
(
fusion_inputs
.
end
(),
cnode
->
inputs
().
begin
()
+
1
,
cnode
->
inputs
().
end
());
}
CheckInputs
(
fusion_inputs
);
AnfNodePtr
fused_node
=
func_graph
->
NewCNode
(
fusion_inputs
);
MS_EXCEPTION_IF_NULL
(
fused_node
);
auto
kernel_info
=
std
::
make_shared
<
device
::
KernelInfo
>
();
...
...
@@ -172,9 +181,6 @@ AnfNodePtr CommunicationOpFusion::CreateFusedCommunicationOp(const FuncGraphPtr
for
(
size_t
idx
=
start_index
;
idx
<=
end_index
;
++
idx
)
{
auto
cnode
=
communication_op_info
.
communication_op_nodes
[
idx
];
MS_EXCEPTION_IF_NULL
(
cnode
);
AnfAlgo
::
CopyNodeAttr
(
"fusion"
,
cnode
,
fused_node
);
AnfAlgo
::
CopyNodeAttr
(
"op"
,
cnode
,
fused_node
);
AnfAlgo
::
CopyNodeAttr
(
"group"
,
cnode
,
fused_node
);
abstract_list
.
push_back
(
cnode
->
abstract
());
}
auto
kernel_build_info
=
GenerateKernelBuildInfo
(
communication_op_info
,
start_index
,
end_index
);
...
...
@@ -182,6 +188,9 @@ AnfNodePtr CommunicationOpFusion::CreateFusedCommunicationOp(const FuncGraphPtr
auto
abstract_tuple
=
std
::
make_shared
<
abstract
::
AbstractTuple
>
(
abstract_list
);
MS_EXCEPTION_IF_NULL
(
abstract_tuple
);
fused_node
->
set_abstract
(
abstract_tuple
);
AnfAlgo
::
CopyNodeAttr
(
"fusion"
,
communication_op_info
.
communication_op_nodes
[
end_index
],
fused_node
);
AnfAlgo
::
CopyNodeAttr
(
"op"
,
communication_op_info
.
communication_op_nodes
[
end_index
],
fused_node
);
AnfAlgo
::
CopyNodeAttr
(
"group"
,
communication_op_info
.
communication_op_nodes
[
end_index
],
fused_node
);
return
fused_node
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录