diff --git a/mindspore/ccsrc/backend/optimizer/somas/somas.cc b/mindspore/ccsrc/backend/optimizer/somas/somas.cc index b93c300481..122c6d6129 100644 --- a/mindspore/ccsrc/backend/optimizer/somas/somas.cc +++ b/mindspore/ccsrc/backend/optimizer/somas/somas.cc @@ -213,6 +213,7 @@ void Somas::InitCommonNodeInputs(bool is_all_nop_node, const CNodePtr &kernel) { // Input Tensor auto input_tensor_num = AnfAlgo::GetInputTensorNum(kernel); + size_t real_input_index = 0; for (size_t i = 0; i < input_tensor_num; i++) { auto input_node = kernel->input(i + 1); session::KernelWithIndex prenode_index; @@ -232,7 +233,8 @@ void Somas::InitCommonNodeInputs(bool is_all_nop_node, const CNodePtr &kernel) { continue; } auto parameter = GetSomasParameters(prenode_index.first, prenode_index.second); - node->input_parameters_map_[i] = parameter; + node->input_parameters_map_[real_input_index] = parameter; + real_input_index++; MS_LOG(DEBUG) << "Input [" << prenode_index.first->fullname_with_scope() << "] is not a real cnode kernel."; continue; } @@ -251,6 +253,7 @@ void Somas::InitCommonNodeInputs(bool is_all_nop_node, const CNodePtr &kernel) { auto input_somas_tensor = pre_somas_node->output_tensors_[prenode_index.second]; MS_EXCEPTION_IF_NULL(input_somas_tensor); node->input_tensors_.push_back(input_somas_tensor); + real_input_index++; if (input_somas_tensor->type_ == kOutputOnly) { input_somas_tensor->type_ = kCommon; } @@ -1135,26 +1138,21 @@ void Somas::DumpNodes(std::ofstream &ofs) const { auto scope_name = node->scope_full_name_; std::string split_name = GetSplitName(scope_name); ofs << "$" << node->GetId() << "\t" << split_name << "\t" << static_cast(node->GetType()) << "\t"; - std::vector> input_list; - std::transform( - node->input_tensors_.begin(), node->input_tensors_.end(), std::back_inserter(input_list), - [](SomasTensorPtr in) -> std::pair { return std::make_pair("Tensor", in->GetId()); }); - for (const auto ¶m : node->input_parameters_map_) { - auto index = param.first; - auto iter = input_list.begin(); - std::advance(iter, index); - input_list.insert(iter, std::make_pair("Parameter", param.second->id_)); - } + auto input_num = node->input_tensors_.size() + node->input_parameters_map_.size(); ofs << "inputs["; - for (const auto &in : input_list) { - if (in.first == "Tensor") { - ofs << "%" << in.second << "T" + size_t tensor_index = 0; + for (size_t input_index = 0; input_index < input_num; input_index++) { + auto iter = node->input_parameters_map_.find(input_index); + if (iter != node->input_parameters_map_.end()) { + ofs << "%" << iter->second->id_ << "P" << ", "; - } else if (in.first == "Parameter") { - ofs << "%" << in.second << "P" + } else { + ofs << "%" << node->input_tensors_[tensor_index]->GetId() << "T" << ", "; + tensor_index++; } } + ofs << "]"; ofs << "\toutputs["; for (const auto &out : node->output_tensors_) {