| 668 | } |
| 669 | |
| 670 | std::shared_ptr<HostTensorND> GraphLoaderOSS::OprLoadContextImpl::load_tensor() { |
| 671 | mgb_assert( |
| 672 | m_current_opr->tensors() && |
| 673 | m_cur_opr_tensor_cnt < m_current_opr->tensors()->size()); |
| 674 | auto tensor = m_current_opr->tensors()->Get(m_cur_opr_tensor_cnt++); |
| 675 | auto comp_node = load_comp_node(tensor->comp_node()); |
| 676 | auto layout = load_tensor_layout(tensor); |
| 677 | auto ret = std::make_shared<HostTensorND>(comp_node, layout); |
| 678 | if (tensor->data_size()) { |
| 679 | load_tensor_value(ret.get(), layout, tensor); |
| 680 | } |
| 681 | if (tensor->name()) { |
| 682 | m_tensor_map[tensor->name()->str()] = ret; |
| 683 | } |
| 684 | if (auto&& mod = m_loader->m_cur_load_config->tensor_modifier) { |
| 685 | mod(tensor->name() ? tensor->name()->str() : "", tensor->data_size() != 0, |
| 686 | *ret); |
| 687 | } |
| 688 | return ret; |
| 689 | } |
| 690 | |
| 691 | std::shared_ptr<DeviceTensorND> GraphLoaderOSS::OprLoadContextImpl::load_tensor_shared( |
| 692 | bool copy_immediatly) { |