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

Method on_var_computed

src/plugin/impl/var_value_checker.cpp:100–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

98}
99
100void VarValueChecker::on_var_computed(VarNode* var) {
101 if (!var->dev_tensor_valid()) {
102 if (m_init_val_dumped && var == m_vars[m_cur_var_idx]) {
103 // skip vars that are not on device
104 on_comp_seq_exec_finished({});
105 }
106 return;
107 }
108
109 if (!m_init_val_dumped) {
110#if !__DEPLOY_ON_XP_SP2__
111 m_var2val_mtx.lock();
112#endif
113 auto&& val = m_var2val[var];
114#if !__DEPLOY_ON_XP_SP2__
115 m_var2val_mtx.unlock();
116#endif
117
118 mgb_assert(!val);
119 val = std::make_shared<DeviceTensorND>();
120 val->copy_from(var->dev_tensor());
121 return;
122 }
123
124 if (var != m_vars[m_cur_var_idx])
125 return;
126
127 if (!m_checker.valid()) {
128 m_checker.init(var, m_var2val.at(var));
129 }
130 m_checker.check(var);
131}
132
133// vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}}

Callers

nothing calls this directly

Calls 9

dev_tensor_validMethod · 0.80
lockMethod · 0.45
unlockMethod · 0.45
copy_fromMethod · 0.45
dev_tensorMethod · 0.45
validMethod · 0.45
initMethod · 0.45
atMethod · 0.45
checkMethod · 0.45

Tested by

no test coverage detected