MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / graph_compile_ahead

Method graph_compile_ahead

src/serialization/impl/serializer.cpp:57–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

55}
56
57void GraphLoader::LoadResult::graph_compile_ahead() {
58 //! when force_output_use_user_specified_memory is set, the output var may
59 //! be changed by gopt, then the var in LoadResult can not exist, so here
60 //! just do basic optimize_for_inference ahead, and replace the var in
61 //! LoadResult
62 if (graph->options().force_output_use_user_specified_memory) {
63 //! if the output var is like dimshuffle, reshape, it maybe memory forward to
64 //! the output, so add a Copy operator in the end.
65 for (auto& var : output_var_list) {
66 if (is_opr_memforward_var(var.node())) {
67 std::string name = var.node()->name();
68 var = opr::Copy::make(var, name);
69 }
70 }
71 auto options = gopt::OptimizeForInferenceOptions{};
72 auto new_vars = gopt::optimize_for_inference(output_var_list, options);
73 output_var_list = new_vars;
74 output_var_map.clear();
75 for (auto& var : new_vars) {
76 output_var_map[var.node()->cname()] = var;
77 }
78 std::unordered_map<size_t, SymbolVar> var_map_id;
79 for (auto& var : new_vars) {
80 bool found = false;
81 for (auto& old_var_it : output_var_map_id) {
82 if (old_var_it.second.node()->name() == var.node()->name()) {
83 found = true;
84 var_map_id[old_var_it.first] = var;
85 }
86 }
87 mgb_assert(
88 found, "can't find var name %s when optimize_for_inference. ",
89 var.node()->cname());
90 }
91 output_var_map_id = var_map_id;
92 }
93}
94
95GraphLoader::SharedTensorNameMap GraphLoader::shared_tensor_name_map() {
96 SharedTensorNameMap ret;

Callers 2

loadMethod · 0.80
loadMethod · 0.80

Calls 7

is_opr_memforward_varFunction · 0.85
makeFunction · 0.50
optimize_for_inferenceFunction · 0.50
nodeMethod · 0.45
nameMethod · 0.45
clearMethod · 0.45
cnameMethod · 0.45

Tested by

no test coverage detected