| @@ -470,41 +470,45 @@ void Somas::GenContiguousList(const session::KernelGraph *graph) { | |||||
| if (node->GetType() != kCommunicationNode) { | if (node->GetType() != kCommunicationNode) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| std::vector<size_t> inputs; | |||||
| auto input_before_gap = CreateGapTensor(gap_tensor_id); | |||||
| input_before_gap->contiguous_ = true; | |||||
| gap_tensor_id++; | |||||
| inputs.push_back(input_before_gap->GetId()); | |||||
| for (const auto &input_tensor : node->input_tensors_) { | |||||
| comm_input_total_size_ += input_tensor->aligned_size_; | |||||
| input_tensor->contiguous_ = true; | |||||
| inputs.push_back(input_tensor->GetId()); | |||||
| } | |||||
| auto input_after_gap = CreateGapTensor(gap_tensor_id); | |||||
| gap_tensor_id++; | |||||
| input_after_gap->contiguous_ = true; | |||||
| inputs.push_back(input_after_gap->GetId()); | |||||
| contiguous_tensors_list_.push_back(inputs); | |||||
| std::vector<size_t> outputs; | |||||
| auto output_before_gap = CreateGapTensor(gap_tensor_id); | |||||
| gap_tensor_id++; | |||||
| output_before_gap->contiguous_ = true; | |||||
| outputs.push_back(output_before_gap->GetId()); | |||||
| for (const auto &output_tensor : node->output_tensors_) { | |||||
| comm_output_total_size_ += output_tensor->aligned_size_; | |||||
| output_tensor->contiguous_ = true; | |||||
| outputs.push_back(output_tensor->GetId()); | |||||
| } | |||||
| auto output_after_gap = CreateGapTensor(gap_tensor_id); | |||||
| gap_tensor_id++; | |||||
| output_after_gap->contiguous_ = true; | |||||
| outputs.push_back(output_after_gap->GetId()); | |||||
| contiguous_tensors_list_.push_back(outputs); | |||||
| if ((!node->input_tensors_.empty()) && (!node->input_tensors_[0]->contiguous_)) { | |||||
| std::vector<size_t> inputs; | |||||
| auto input_before_gap = CreateGapTensor(gap_tensor_id); | |||||
| input_before_gap->contiguous_ = true; | |||||
| gap_tensor_id++; | |||||
| inputs.push_back(input_before_gap->GetId()); | |||||
| for (const auto &input_tensor : node->input_tensors_) { | |||||
| comm_input_total_size_ += input_tensor->aligned_size_; | |||||
| input_tensor->contiguous_ = true; | |||||
| inputs.push_back(input_tensor->GetId()); | |||||
| } | |||||
| auto input_after_gap = CreateGapTensor(gap_tensor_id); | |||||
| gap_tensor_id++; | |||||
| input_after_gap->contiguous_ = true; | |||||
| inputs.push_back(input_after_gap->GetId()); | |||||
| contiguous_tensors_list_.push_back(inputs); | |||||
| } | |||||
| if ((!node->output_tensors_.empty()) && (!node->output_tensors_[0]->contiguous_)) { | |||||
| std::vector<size_t> outputs; | |||||
| auto output_before_gap = CreateGapTensor(gap_tensor_id); | |||||
| gap_tensor_id++; | |||||
| output_before_gap->contiguous_ = true; | |||||
| outputs.push_back(output_before_gap->GetId()); | |||||
| for (const auto &output_tensor : node->output_tensors_) { | |||||
| comm_output_total_size_ += output_tensor->aligned_size_; | |||||
| output_tensor->contiguous_ = true; | |||||
| outputs.push_back(output_tensor->GetId()); | |||||
| } | |||||
| auto output_after_gap = CreateGapTensor(gap_tensor_id); | |||||
| gap_tensor_id++; | |||||
| output_after_gap->contiguous_ = true; | |||||
| outputs.push_back(output_after_gap->GetId()); | |||||
| contiguous_tensors_list_.push_back(outputs); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||