| @@ -871,8 +871,8 @@ MemoryBlock *BlockMemAssigner::ApplyMemory(size_t block_size, size_t real_size, | |||||
| !node_op_desc->HasAttr(kOpNoReuseMem) && reuse_mem_flag && is_op_reuse_mem; | !node_op_desc->HasAttr(kOpNoReuseMem) && reuse_mem_flag && is_op_reuse_mem; | ||||
| auto stream_id = node_op_desc->GetStreamId(); | auto stream_id = node_op_desc->GetStreamId(); | ||||
| if (is_reuse_memory && !continuous && !reusable_blocks_[memory_type].empty()) { | if (is_reuse_memory && !continuous && !reusable_blocks_[memory_type].empty()) { | ||||
| for (auto it = reusable_blocks_[memory_type][stream_id].begin(); | |||||
| it != reusable_blocks_[memory_type][stream_id].end(); ++it) { | |||||
| for (auto it = reusable_blocks_[memory_type][stream_id].rbegin(); | |||||
| it != reusable_blocks_[memory_type][stream_id].rend(); ++it) { | |||||
| MemoryBlock *reusable_block = *it; | MemoryBlock *reusable_block = *it; | ||||
| if (!IsPostReuse(reusable_block)) { | if (!IsPostReuse(reusable_block)) { | ||||
| reusable_block->reuse_mem_ = false; | reusable_block->reuse_mem_ = false; | ||||
| @@ -901,7 +901,7 @@ MemoryBlock *BlockMemAssigner::ApplyMemory(size_t block_size, size_t real_size, | |||||
| reusable_block->continuous_block_ = continuous; | reusable_block->continuous_block_ = continuous; | ||||
| reusable_block->ref_count_++; | reusable_block->ref_count_++; | ||||
| ReduceReusableBlockCount(*reusable_block, reusable_block_counts_); | ReduceReusableBlockCount(*reusable_block, reusable_block_counts_); | ||||
| reusable_blocks_[memory_type][stream_id].erase(it); | |||||
| reusable_blocks_[memory_type][stream_id].erase((++it).base()); | |||||
| return reusable_block; | return reusable_block; | ||||
| } | } | ||||
| } | } | ||||