| 829 | } |
| 830 | |
| 831 | GraphLoader::LoadResult GraphLoaderOSS::OprLoadContextImpl::load_oprs() { |
| 832 | // load oprs |
| 833 | const auto* oprs = m_loader->m_graph->oprs(); |
| 834 | { |
| 835 | // inplace arith graph optimization is disabled during opr load |
| 836 | // it tries to restore the same graph as it was dumped |
| 837 | // see test TestSerializer2.LOGEXP for example |
| 838 | GraphLoader::ScopedGraphOptDisabler _(m_graph); |
| 839 | for (flatbuffers::uoffset_t i = 0; i < oprs->size(); ++i) { |
| 840 | m_current_opr = oprs->Get(i); |
| 841 | load_single_opr(m_current_opr); |
| 842 | } |
| 843 | } |
| 844 | |
| 845 | // batched loading device values |
| 846 | m_device_value_loader.apply(); |
| 847 | |
| 848 | LoadResult ret; |
| 849 | ret.graph = m_graph; |
| 850 | ret.tensor_map = m_tensor_map; |
| 851 | |
| 852 | const auto* outputs = m_loader->m_graph->output_vars_idx(); |
| 853 | ret.output_var_list.resize(outputs->size()); |
| 854 | for (flatbuffers::uoffset_t i = 0; i < outputs->size(); i++) { |
| 855 | auto out = outputs->Get(i); |
| 856 | auto var = m_id2varnode.at(out->compact_id()); |
| 857 | ret.output_var_map[var->name()] = var; |
| 858 | ret.output_var_map_id[out->original_id()] = var; |
| 859 | ret.output_var_list[i] = var; |
| 860 | } |
| 861 | mgb_assert(m_cur_shared_tensor_idx <= m_loader->m_shared_tensor_map.size()); |
| 862 | return ret; |
| 863 | } |
| 864 | |
| 865 | GraphLoader::LoadResult GraphLoaderOSS::load(const LoadConfig& config, bool rewind) { |
| 866 | mgb_assert(m_file); |