| @@ -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<int>(node->GetType()) << "\t"; | |||
| std::vector<std::pair<string, size_t>> input_list; | |||
| std::transform( | |||
| node->input_tensors_.begin(), node->input_tensors_.end(), std::back_inserter(input_list), | |||
| [](SomasTensorPtr in) -> std::pair<string, size_t> { 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_) { | |||