!27011 adjust comm executor order

Merge pull request !27011 from kisnwang/adjust-comm-execute-order
This commit is contained in:
i-robot 2021-12-21 13:32:29 +00:00 committed by Gitee
commit 5645acee6c
1 changed files with 13 additions and 4 deletions

View File

@ -254,12 +254,17 @@ void KernelGraph::SetExecOrderByDefault() {
}
// delay execute comm ops that need optimize
bool is_fused_comm = AnfAlgo::IsFusedCommunicationOp(node);
bool is_comm = AnfAlgo::IsCommunicationOp(node);
bool optimize_comm = false;
if (is_fused_comm && optimized_comm_group.empty()) {
if (is_fused_comm) {
auto node_group = GetNodeGroup(node);
if (node_group.find(kSyncBnGroup) == string::npos) {
optimized_comm_group = node_group;
optimize_comm = true;
if (optimized_comm_group.empty()) {
optimized_comm_group = node_group;
optimize_comm = true;
} else if (optimized_comm_group == node_group) {
optimize_comm = true;
}
}
}
if (optimize_comm) {
@ -268,7 +273,11 @@ void KernelGraph::SetExecOrderByDefault() {
delay_comm_stack.pop();
}
delay_comm_stack.push(node);
} else if (is_fused_comm) {
} else if (is_comm) {
if (delay_comm_stack.size() > 1) {
EnqueueActiveNodes(delay_comm_stack.front(), &communication_descendants, &visited_nodes, false);
delay_comm_stack.pop();
}
delay_comm_stack.push(node);
} else if (is_communication_descendant) {
EnqueueActiveNodes(node, &communication_descendants, &visited_nodes);