Browse Source

fix cmetric

pull/277/head
wangxiaotian22 4 years ago
parent
commit
95af966294
2 changed files with 12 additions and 6 deletions
  1. +10
    -6
      ge/graph/build/memory/block_mem_assigner.cc
  2. +2
    -0
      ge/graph/build/memory/block_mem_assigner.h

+ 10
- 6
ge/graph/build/memory/block_mem_assigner.cc View File

@@ -415,6 +415,15 @@ BlockMemAssigner::~BlockMemAssigner() {
} }
} }


void BlockMemAssigner::MarkContinuousAllocedForOneInput(OpDescPtr &node_op_desc) {
// if input size just one, no need to reassign continuous memory
bool is_input_continuous = false;
(void)ge::AttrUtils::GetBool(node_op_desc, ATTR_NAME_CONTINUOUS_INPUT, is_input_continuous);
if (is_input_continuous && (node_op_desc->GetInputsSize() <= 1)) {
(void)ge::AttrUtils::SetBool(node_op_desc, ATTR_NAME_CONTINUOUS_INPUT_ALLOC, true);
}
}

void BlockMemAssigner::GetOutAndWorkSpaceMem(vector<int64_t> &all_memory_size) { void BlockMemAssigner::GetOutAndWorkSpaceMem(vector<int64_t> &all_memory_size) {
vector<int64_t> temp; vector<int64_t> temp;
for (const NodePtr &n : compute_graph_->GetAllNodes()) { for (const NodePtr &n : compute_graph_->GetAllNodes()) {
@@ -425,12 +434,7 @@ void BlockMemAssigner::GetOutAndWorkSpaceMem(vector<int64_t> &all_memory_size) {
atomic_addr_clean_id_ = node_op_desc->GetId(); atomic_addr_clean_id_ = node_op_desc->GetId();
} }


// if input size just one, no need to reassign continuous memory
bool is_input_continuous = false;
(void)ge::AttrUtils::GetBool(node_op_desc, ATTR_NAME_CONTINUOUS_INPUT, is_input_continuous);
if (is_input_continuous && (node_op_desc->GetInputsSize() <= 1)) {
(void)ge::AttrUtils::SetBool(node_op_desc, ATTR_NAME_CONTINUOUS_INPUT_ALLOC, true);
}
MarkContinuousAllocedForOneInput(node_op_desc);


for (auto &out_anchor : n->GetAllOutDataAnchors()) { for (auto &out_anchor : n->GetAllOutDataAnchors()) {
GeTensorDesc output_desc = node_op_desc->GetOutputDesc(out_anchor->GetIdx()); GeTensorDesc output_desc = node_op_desc->GetOutputDesc(out_anchor->GetIdx());


+ 2
- 0
ge/graph/build/memory/block_mem_assigner.h View File

@@ -409,6 +409,8 @@ class BlockMemAssigner : public MemAssigner {


MemoryBlock *ApplyContinuousMemory(const NodePtr &n, const vector<int64_t> &ranges, const bool is_op_reuse_mem); MemoryBlock *ApplyContinuousMemory(const NodePtr &n, const vector<int64_t> &ranges, const bool is_op_reuse_mem);


void MarkContinuousAllocedForOneInput(OpDescPtr &node_op_desc);

std::unordered_map<int64_t, std::unordered_map<int64_t, std::vector<MemoryBlock *>>> reusable_blocks_; std::unordered_map<int64_t, std::unordered_map<int64_t, std::vector<MemoryBlock *>>> reusable_blocks_;


std::map<std::string, uint64_t> reusable_block_counts_; std::map<std::string, uint64_t> reusable_block_counts_;


Loading…
Cancel
Save