Browse Source

handle getnext output tensor as normal lifelong tensor

tags/v1.1.0
laiyongqiang 5 years ago
parent
commit
b8821bb2f3
3 changed files with 6 additions and 13 deletions
  1. +3
    -7
      mindspore/ccsrc/backend/optimizer/somas/somas.cc
  2. +0
    -3
      mindspore/ccsrc/backend/optimizer/somas/somas.h
  3. +3
    -3
      mindspore/ccsrc/backend/optimizer/somas/somas_tensor.h

+ 3
- 7
mindspore/ccsrc/backend/optimizer/somas/somas.cc View File

@@ -273,8 +273,6 @@ void Somas::GetNextOutputProcess(const session::KernelGraph *graph) {
if (iter != nodes_map_.end()) {
auto getnext_output_tensors = iter->second->output_tensors_;
for (auto &tensor : getnext_output_tensors) {
if (tensor->contiguous_) continue;
tensor->offset_ = total_size;
total_size += tensor->GetAlignedSize();
tensor->lifelong_value_ = kLifeLongGraphAll;
tensor->type_ = kGetNextOutput;
@@ -282,8 +280,6 @@ void Somas::GetNextOutputProcess(const session::KernelGraph *graph) {
}
}

this->get_next_size_ = total_size;

MS_LOG(INFO) << "Special Tensor total size: GetNext Output " << total_size;
}

@@ -947,7 +943,7 @@ bool Somas::Assign(const session::KernelGraph *graph) {
// Solver info -- moved here because we set sizes to zero in ref node preprocessing (was before in GetSomasTensors())
MS_LOG(INFO) << "Start Loop to create solver info";
for (auto tensor : tensors_list_) {
if (tensor->GetSolverTensorDesc() != nullptr && tensor->type_ != kGetNextOutput) {
if (tensor->GetSolverTensorDesc() != nullptr) {
SomasSolverTensorDescPtr pSolverTensor = tensor->GetSolverTensorDesc();
solver_tensor_desc_list_.insert(
std::pair<size_t, SomasSolverTensorDescPtr>(pSolverTensor->index_, pSolverTensor));
@@ -972,7 +968,7 @@ bool Somas::Assign(const session::KernelGraph *graph) {

// Update solver_tensor_desc offset to tensors list
for (const auto &tensor : tensors_list_) {
tensor->SetOffset(get_next_size_);
tensor->SetOffset();
}

// Ref Node Postprocessing
@@ -995,7 +991,7 @@ bool Somas::Assign(const session::KernelGraph *graph) {
MS_LOG(INFO) << "\nEnd Solving Postprocessing for Ref Node";

// Set mem_offset_ value by solver result
mem_offset_ = static_cast<size_t>(somas_solver_->GetMaxOffset()) + get_next_size_;
mem_offset_ = static_cast<size_t>(somas_solver_->GetMaxOffset());

if (save_graphs_) {
std::string mem_pool_file_path =


+ 0
- 3
mindspore/ccsrc/backend/optimizer/somas/somas.h View File

@@ -81,9 +81,6 @@ class Somas {
// total Offset
size_t mem_offset_;

// getnext op output size
size_t get_next_size_;

// Memory base addr
uint8_t *mem_base_addr_{nullptr};



+ 3
- 3
mindspore/ccsrc/backend/optimizer/somas/somas_tensor.h View File

@@ -108,9 +108,9 @@ class SomasTensor {
bool IsGap() { return type_ == kGap; }

// Computing functions
void SetOffset(size_t start_offset = 0) {
if (aligned_size_ != 0 && type_ != kGetNextOutput) {
offset_ = start_offset + solver_tensor_desc_->offset_;
void SetOffset() {
if (aligned_size_ != 0) {
offset_ = solver_tensor_desc_->offset_;
}
}
SomasSolverTensorDescPtr GetSolverTensorDesc();


Loading…
Cancel
Save