| 796 | } |
| 797 | |
| 798 | GraphLoader::LoadResult GraphLoaderOSSV2::OprLoadContextImpl::load_oprs() { |
| 799 | // load oprs |
| 800 | const auto* oprs = m_loader->m_model->oprs(); |
| 801 | { |
| 802 | // inplace arith graph optimization is disabled during opr load |
| 803 | // it tries to restore the same graph as it was dumped |
| 804 | // see test TestSerializer2.LOGEXP for example |
| 805 | GraphLoader::ScopedGraphOptDisabler _(m_graph); |
| 806 | for (flatbuffers::uoffset_t i = 0; i < oprs->size(); ++i) { |
| 807 | m_current_opr = oprs->Get(i); |
| 808 | load_single_opr(m_current_opr); |
| 809 | } |
| 810 | } |
| 811 | |
| 812 | // batched loading device values |
| 813 | m_device_value_loader.apply(); |
| 814 | |
| 815 | LoadResult ret; |
| 816 | ret.graph = m_graph; |
| 817 | ret.tensor_map = m_tensor_map; |
| 818 | |
| 819 | const auto* outputs = m_loader->m_model->output_vars_idx(); |
| 820 | ret.output_var_list.resize(outputs->size()); |
| 821 | for (flatbuffers::uoffset_t i = 0; i < outputs->size(); i++) { |
| 822 | auto out = outputs->Get(i); |
| 823 | auto var = m_id2varnode.at(out->compact_id()); |
| 824 | ret.output_var_map[var->name()] = var; |
| 825 | ret.output_var_map_id[out->original_id()] = var; |
| 826 | ret.output_var_list[i] = var; |
| 827 | } |
| 828 | mgb_assert(m_cur_shared_tensor_idx <= m_loader->m_shared_tensor_map.size()); |
| 829 | return ret; |
| 830 | } |
| 831 | |
| 832 | void GraphLoaderOSSV2::OprLoadContextImpl::load_middle_tensor() { |
| 833 | auto model = m_loader->m_model; |