From a89298a0455fc8fb1f2075d76144efe4138d2004 Mon Sep 17 00:00:00 2001 From: chuxing Date: Sun, 28 Mar 2021 14:12:05 +0800 Subject: [PATCH] ensure order --- ge/hybrid/model/hybrid_model_builder.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ge/hybrid/model/hybrid_model_builder.cc b/ge/hybrid/model/hybrid_model_builder.cc index 7bd9d35c..25dabd78 100755 --- a/ge/hybrid/model/hybrid_model_builder.cc +++ b/ge/hybrid/model/hybrid_model_builder.cc @@ -1089,14 +1089,14 @@ Status HybridModelBuilder::LoadTask(NodeItem &node_item) { Status HybridModelBuilder::LoadTasks() { GE_CHK_STATUS_RET(CheckAicpuOpList(), "Check Aicpu op failed."); - std::map ordered_partitioned_calls; + std::map> ordered_partitioned_calls; for (auto &it : hybrid_model_.node_items_) { auto &node_item = it.second; if (node_item->node_type == NETOUTPUT) { continue; } if (node_item->node_type == PARTITIONEDCALL) { - ordered_partitioned_calls.emplace(node_item->node_name, node_item.get()); + ordered_partitioned_calls[node_item->node_id][node_item->node_name] = node_item.get(); continue; } GE_CHK_STATUS_RET_NOLOG(LoadTask(*node_item)); @@ -1104,7 +1104,9 @@ Status HybridModelBuilder::LoadTasks() { // HCCL operators need to be loaded in the same order across different processes for (auto &it : ordered_partitioned_calls) { - GE_CHK_STATUS_RET_NOLOG(LoadTask(*it.second)); + for (auto &it2 : it.second) { + GE_CHK_STATUS_RET_NOLOG(LoadTask(*it2.second)); + } } return SUCCESS;