Browse Source

!3631 fix subgraph maketuple ref error

Merge pull request !3631 from kisnwang/fix-subgraph-maketuple-error
tags/v0.7.0-beta
mindspore-ci-bot Gitee 5 years ago
parent
commit
b331e62400
7 changed files with 15 additions and 30 deletions
  1. +1
    -1
      mindspore/ccsrc/backend/session/session_basic.cc
  2. +1
    -2
      mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc
  3. +6
    -7
      mindspore/ccsrc/runtime/device/cpu/cpu_resource_manager.cc
  4. +3
    -4
      mindspore/ccsrc/runtime/device/cpu/cpu_resource_manager.h
  5. +2
    -9
      mindspore/ccsrc/runtime/device/cpu/cpu_simple_mem_plan.cc
  6. +1
    -6
      mindspore/ccsrc/runtime/device/cpu/cpu_simple_mem_plan.h
  7. +1
    -1
      mindspore/core/ir/anf.cc

+ 1
- 1
mindspore/ccsrc/backend/session/session_basic.cc View File

@@ -312,7 +312,7 @@ void SessionBasic::InitInternalOutputParameter(const AnfNodePtr &out_node, const
MS_LOG(INFO) << "No kernel info"; MS_LOG(INFO) << "No kernel info";
return; return;
} }
if (!AnfAlgo::OutputAddrExist(ref_real_node, ref_real_node_index)) {
if (!opt::IsNopNode(ref_real_node) && !AnfAlgo::OutputAddrExist(ref_real_node, ref_real_node_index)) {
MS_LOG(INFO) << "No kernel address"; MS_LOG(INFO) << "No kernel address";
return; return;
} }


+ 1
- 2
mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc View File

@@ -40,8 +40,7 @@ void CPUKernelRuntime::AssignKernelAddress(session::KernelGraph *kernel_graph) {
AssignValueNodeAddress(kernel_graph); AssignValueNodeAddress(kernel_graph);
AssignInputNodeAddress(kernel_graph); AssignInputNodeAddress(kernel_graph);
AssignKernelOutputAddress(kernel_graph); AssignKernelOutputAddress(kernel_graph);
resource_manager_.MemPlan(kernel_graph);
resource_manager_.MemMalloc(kernel_graph);
resource_manager_.AssignMemory(kernel_graph);
} }


void CPUKernelRuntime::AssignValueNodeAddress(session::KernelGraph *kernel_graph) { void CPUKernelRuntime::AssignValueNodeAddress(session::KernelGraph *kernel_graph) {


+ 6
- 7
mindspore/ccsrc/runtime/device/cpu/cpu_resource_manager.cc View File

@@ -34,11 +34,13 @@ void CPUResourceManager::MemFree() {
dynamic_mem_.clear(); dynamic_mem_.clear();
} }


void CPUResourceManager::MemPlan(const session::KernelGraph *graph) {
mem_plan_.MemPlan(graph);
size_t graph_mem_size = mem_plan_.GetGraphMemSize(graph);
void CPUResourceManager::AssignMemory(const session::KernelGraph *graph) {
size_t graph_mem_size = mem_plan_.MemPlan(graph);
if (graph_mem_size > mem_size_) { if (graph_mem_size > mem_size_) {
MemFree();
if (mem_size_ > 0) {
dynamic_mem_[mem_ptr_] = mem_size_;
mem_size_ = 0;
}
mem_ptr_ = reinterpret_cast<uint8_t *>(malloc(graph_mem_size)); mem_ptr_ = reinterpret_cast<uint8_t *>(malloc(graph_mem_size));
if (mem_ptr_ != nullptr) { if (mem_ptr_ != nullptr) {
mem_size_ = graph_mem_size; mem_size_ = graph_mem_size;
@@ -48,9 +50,6 @@ void CPUResourceManager::MemPlan(const session::KernelGraph *graph) {
dynamic_malloc_ = true; dynamic_malloc_ = true;
} }
} }
}

void CPUResourceManager::MemMalloc(const session::KernelGraph *graph) {
if (dynamic_malloc_) { if (dynamic_malloc_) {
return; return;
} }


+ 3
- 4
mindspore/ccsrc/runtime/device/cpu/cpu_resource_manager.h View File

@@ -17,7 +17,7 @@
#define MINDSPORE_CCSRC_RUNTIME_DEVICE_CPU_CPU_RESOURCE_MANAGER_H_ #define MINDSPORE_CCSRC_RUNTIME_DEVICE_CPU_CPU_RESOURCE_MANAGER_H_


#include <vector> #include <vector>
#include <unordered_map>
#include <map>
#include "backend/session/kernel_graph.h" #include "backend/session/kernel_graph.h"
#include "backend/session/session_basic.h" #include "backend/session/session_basic.h"
#include "runtime/device/device_address.h" #include "runtime/device/device_address.h"
@@ -30,8 +30,7 @@ class CPUResourceManager {
CPUResourceManager() = default; CPUResourceManager() = default;
~CPUResourceManager(); ~CPUResourceManager();


void MemPlan(const session::KernelGraph *graph);
void MemMalloc(const session::KernelGraph *graph);
void AssignMemory(const session::KernelGraph *graph);
void IncreaseAddressRefCount(const session::KernelGraph *graph); void IncreaseAddressRefCount(const session::KernelGraph *graph);
void DecreaseAddressRefCount(const AnfNodePtr &kernel); void DecreaseAddressRefCount(const AnfNodePtr &kernel);
void *MemMalloc(size_t mem_size); void *MemMalloc(size_t mem_size);
@@ -46,7 +45,7 @@ class CPUResourceManager {
size_t mem_size_{0}; size_t mem_size_{0};
uint8_t *mem_ptr_{nullptr}; uint8_t *mem_ptr_{nullptr};
bool dynamic_malloc_{false}; bool dynamic_malloc_{false};
std::unordered_map<void *, size_t> dynamic_mem_;
std::map<void *, size_t> dynamic_mem_;
}; };
} // namespace cpu } // namespace cpu
} // namespace device } // namespace device


+ 2
- 9
mindspore/ccsrc/runtime/device/cpu/cpu_simple_mem_plan.cc View File

@@ -19,7 +19,7 @@
namespace mindspore { namespace mindspore {
namespace device { namespace device {
namespace cpu { namespace cpu {
void CPUSimpleMemPlan::MemPlan(const session::KernelGraph *graph) {
size_t CPUSimpleMemPlan::MemPlan(const session::KernelGraph *graph) {
MS_EXCEPTION_IF_NULL(graph); MS_EXCEPTION_IF_NULL(graph);
size_t total_mem_size = 32; size_t total_mem_size = 32;
auto kernels = graph->execution_order(); auto kernels = graph->execution_order();
@@ -58,15 +58,8 @@ void CPUSimpleMemPlan::MemPlan(const session::KernelGraph *graph) {
} }
} }
} }
graph_mem_size_[graph] = total_mem_size;
}


size_t CPUSimpleMemPlan::GetGraphMemSize(const session::KernelGraph *graph) const {
auto iter = graph_mem_size_.find(graph);
if (iter != graph_mem_size_.end()) {
return iter->second;
}
return 0;
return total_mem_size;
} }


void CPUSimpleMemPlan::MemAssign(const session::KernelGraph *graph, uint8_t *base_ptr) { void CPUSimpleMemPlan::MemAssign(const session::KernelGraph *graph, uint8_t *base_ptr) {


+ 1
- 6
mindspore/ccsrc/runtime/device/cpu/cpu_simple_mem_plan.h View File

@@ -17,7 +17,6 @@
#define MINDSPORE_CCSRC_RUNTIME_DEVICE_CPU_CPU_SIMPLE_MEM_PLAN_H_ #define MINDSPORE_CCSRC_RUNTIME_DEVICE_CPU_CPU_SIMPLE_MEM_PLAN_H_


#include <vector> #include <vector>
#include <unordered_map>
#include "backend/session/kernel_graph.h" #include "backend/session/kernel_graph.h"
#include "runtime/device/device_address.h" #include "runtime/device/device_address.h"


@@ -29,12 +28,8 @@ class CPUSimpleMemPlan {
CPUSimpleMemPlan() = default; CPUSimpleMemPlan() = default;
~CPUSimpleMemPlan() = default; ~CPUSimpleMemPlan() = default;


void MemPlan(const session::KernelGraph *graph);
size_t MemPlan(const session::KernelGraph *graph);
void MemAssign(const session::KernelGraph *graph, uint8_t *base_ptr); void MemAssign(const session::KernelGraph *graph, uint8_t *base_ptr);
size_t GetGraphMemSize(const session::KernelGraph *graph) const;

private:
std::unordered_map<const session::KernelGraph *, size_t> graph_mem_size_;
}; };
} // namespace cpu } // namespace cpu
} // namespace device } // namespace device


+ 1
- 1
mindspore/core/ir/anf.cc View File

@@ -270,7 +270,7 @@ std::string GetCNodeTarget(const AnfNodePtr &node) {
} }
return target; return target;
} }
if (IsPrimitive(node, prim::kPrimMakeTuple)) {
if (IsPrimitiveCNode(node, prim::kPrimMakeTuple)) {
return GetMaketupleNodeTarget(cnode); return GetMaketupleNodeTarget(cnode);
} }
return default_target; return default_target;


Loading…
Cancel
Save