|
|
@@ -436,28 +436,7 @@ void MemReuseChecker::SetAddNewMembuInfos(const KernelDef *op_def, const std::ve |
|
|
add_new_stream_ids_.push_back(op_def->stream_id()); |
|
|
add_new_stream_ids_.push_back(op_def->stream_id()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void MemReuseChecker::ExportMembufInfoIR() { |
|
|
|
|
|
std::string ir_file_name = "./mem_buf_info.ir"; |
|
|
|
|
|
std::ofstream ofs(ir_file_name); |
|
|
|
|
|
int64_t total_reuse_size = 0; |
|
|
|
|
|
if (!ofs.is_open()) { |
|
|
|
|
|
MS_LOG(ERROR) << "Open file [" << ir_file_name << "] failed!"; |
|
|
|
|
|
} |
|
|
|
|
|
ofs << "Total static size:\t" << total_ori_static_size_ << "\n"; |
|
|
|
|
|
ofs << "Graph inputs size:\t" << total_ori_input_size_ << "\n"; |
|
|
|
|
|
ofs << "Value nodes size:\t" << total_ori_value_size_ << "\n"; |
|
|
|
|
|
ofs << "Total dynamic size:\t" << total_ori_dy_size_ << "\n"; |
|
|
|
|
|
ofs << "Total workspace size:\t" << total_ori_wkspace_size_ << "\n"; |
|
|
|
|
|
// get last membuf_list |
|
|
|
|
|
if (membuf_all_infos_.empty()) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
auto last_membuf_list = membuf_all_infos_.back(); |
|
|
|
|
|
for (const auto &membuf : last_membuf_list) { |
|
|
|
|
|
auto checker_size = SizeToLong(membuf->size_); |
|
|
|
|
|
total_reuse_size += checker_size; |
|
|
|
|
|
} |
|
|
|
|
|
ofs << "After reuse size:\t" << total_reuse_size << "\n\n"; |
|
|
|
|
|
|
|
|
void MemReuseChecker::ExportEachMembufInfo(std::ofstream &ofs) { |
|
|
size_t i = 0; |
|
|
size_t i = 0; |
|
|
std::vector<size_t> each_node_used_size; |
|
|
std::vector<size_t> each_node_used_size; |
|
|
std::vector<size_t> each_node_allocated_size; |
|
|
std::vector<size_t> each_node_allocated_size; |
|
|
@@ -496,6 +475,8 @@ void MemReuseChecker::ExportMembufInfoIR() { |
|
|
ofs << "curr allocated size: \t" << curr_allocated << "\n"; |
|
|
ofs << "curr allocated size: \t" << curr_allocated << "\n"; |
|
|
ofs << "\n\n"; |
|
|
ofs << "\n\n"; |
|
|
} |
|
|
} |
|
|
|
|
|
auto optimal_iter = std::max_element(each_node_used_size.begin(), each_node_used_size.end()); |
|
|
|
|
|
ofs << "theoretical optimal size: " << *optimal_iter << "\n"; |
|
|
ofs << "each node used size: \n"; |
|
|
ofs << "each node used size: \n"; |
|
|
for (auto size : each_node_used_size) { |
|
|
for (auto size : each_node_used_size) { |
|
|
ofs << size << "\t"; |
|
|
ofs << size << "\t"; |
|
|
@@ -506,6 +487,31 @@ void MemReuseChecker::ExportMembufInfoIR() { |
|
|
ofs << size << "\t"; |
|
|
ofs << size << "\t"; |
|
|
} |
|
|
} |
|
|
ofs << "\n\n"; |
|
|
ofs << "\n\n"; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MemReuseChecker::ExportMembufInfoIR() { |
|
|
|
|
|
std::string ir_file_name = "./mem_buf_info.ir"; |
|
|
|
|
|
std::ofstream ofs(ir_file_name); |
|
|
|
|
|
int64_t total_reuse_size = 0; |
|
|
|
|
|
if (!ofs.is_open()) { |
|
|
|
|
|
MS_LOG(ERROR) << "Open file [" << ir_file_name << "] failed!"; |
|
|
|
|
|
} |
|
|
|
|
|
ofs << "Total static size:\t" << total_ori_static_size_ << "\n"; |
|
|
|
|
|
ofs << "Graph inputs size:\t" << total_ori_input_size_ << "\n"; |
|
|
|
|
|
ofs << "Value nodes size:\t" << total_ori_value_size_ << "\n"; |
|
|
|
|
|
ofs << "Total dynamic size:\t" << total_ori_dy_size_ << "\n"; |
|
|
|
|
|
ofs << "Total workspace size:\t" << total_ori_wkspace_size_ << "\n"; |
|
|
|
|
|
// get last membuf_list |
|
|
|
|
|
if (membuf_all_infos_.empty()) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
auto last_membuf_list = membuf_all_infos_.back(); |
|
|
|
|
|
for (const auto &membuf : last_membuf_list) { |
|
|
|
|
|
auto checker_size = SizeToLong(membuf->size_); |
|
|
|
|
|
total_reuse_size += checker_size; |
|
|
|
|
|
} |
|
|
|
|
|
ofs << "After reuse size:\t" << total_reuse_size << "\n\n"; |
|
|
|
|
|
ExportEachMembufInfo(ofs); |
|
|
ofs.close(); |
|
|
ofs.close(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|