| 515 | } |
| 516 | |
| 517 | void ComputingGraphImpl::ComputingSequence::do_regist() const { |
| 518 | // regist weights |
| 519 | auto& recorder = StaticMemRecorder::Instance(); |
| 520 | if (recorder.valid() && recorder.weight_chunk_id() == 0) { |
| 521 | size_t addr_base = recorder.peak_mem_size(); |
| 522 | size_t chunk_id = recorder.set_weight_chunk_id(); |
| 523 | for (auto&& i : *(this->m_opr_seq)) { |
| 524 | auto op = i->output(); |
| 525 | for (auto&& j : op) { |
| 526 | auto& mp = j->mem_plan(); |
| 527 | if (mp.valid()) { |
| 528 | auto& mc = mp.chunk(); |
| 529 | if (mp.valid() && mc.mem_alloc_status.is_from_owner_var()) { |
| 530 | auto size = mgb::get_aligned_power2( |
| 531 | mp.layout().span().dist_byte(), |
| 532 | j->comp_node().get_mem_addr_alignment()); |
| 533 | |
| 534 | recorder.regist_memory_chunk( |
| 535 | {chunk_id++, size, 0, this->m_opr_seq->size(), |
| 536 | addr_base, addr_base + size, 0, false, |
| 537 | mc.owner_var->name()}); |
| 538 | |
| 539 | addr_base += size; |
| 540 | } |
| 541 | } |
| 542 | } |
| 543 | } |
| 544 | recorder.set_sum_mem_size(addr_base); |
| 545 | recorder.dump_to_json(); |
| 546 | } |
| 547 | } |
| 548 | #endif |
| 549 | #endif |
| 550 | AsyncExecutable& ComputingGraphImpl::ComputingSequence::wait() { |
nothing calls this directly
no test coverage detected