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

Method update_on_opr_auto_replace

src/gopt/impl/framework.cpp:219–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217 : m_var2nr_val_dep{graph.get_var2nr_val_dep_oprs()} {}
218
219void UniqReaderCheck::update_on_opr_auto_replace(
220 OperatorNodeBase* opr, OperatorNodeBase* repl_opr) {
221 auto non_volatile_size = [](const VarNodeArray& vars) -> size_t {
222 size_t size = 0;
223 for (size_t i = 0; i < vars.size(); ++i) {
224 if (!vars[i]->contain_flag(VarNode::Flag::VOLATILE_CONTENT)) {
225 size++;
226 }
227 }
228 return size;
229 };
230 if (opr != repl_opr) {
231 auto &&o0 = opr->output(), &&o1 = repl_opr->output();
232 mgb_assert(non_volatile_size(o0) == non_volatile_size(o1));
233 for (size_t i = 0; i < o0.size(); ++i) {
234 auto iter = m_var2nr_val_dep.find(o0[i]);
235 if (iter != m_var2nr_val_dep.end()) {
236 auto n = iter->second;
237 m_var2nr_val_dep[o1[i]] = n;
238 }
239 }
240 }
241}
242
243/* ================ OptState ================ */
244

Callers 8

after_replace_varMethod · 0.80
applyMethod · 0.80
do_replaceMethod · 0.80
on_oprMethod · 0.80
on_oprMethod · 0.80
on_opr_visit_finishedMethod · 0.80

Calls 5

sizeMethod · 0.45
contain_flagMethod · 0.45
outputMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected