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

Method VarSanityCheck

src/plugin/impl/var_sanity_check.cpp:14–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12#define LOG_DETAILS_ENV_VAR_NAME "MGB_DEBUG_VAR_SANITY_CHECK_LOG"
13
14VarSanityCheck::VarSanityCheck(cg::ComputingGraph* graph) : PluginBase(graph) {
15 auto on_exec_start = [this](const cg::event::OprExecKernelStart& event) {
16 setup_input_checker(
17 true, event.opr, *event.env, &VarSanityCheck::on_var_received);
18 };
19
20 auto on_exec_finish = [this](const cg::event::OprExecKernelEnd& event) {
21 for (VarNode* var : event.opr->output()) {
22 auto&& recv = var->owner_graph()->var_receiver_in_current_comp_seq(var);
23 auto check_var_basic = [var, recv = &recv]() {
24 check_var_after_exec(var, *recv);
25 };
26 event.env->dispatch_on_comp_node(var->comp_node(), check_var_basic);
27
28 // skip unused vars
29 if (!recv.dev_value || var->contain_flag(VarNode::Flag::VOLATILE_CONTENT))
30 continue;
31
32 m_debug_log.add_producer(var);
33 auto callback = [this, var]() { on_var_produced(var); };
34 event.env->dispatch_on_comp_node(var->comp_node(), callback);
35 }
36
37 setup_input_checker(
38 false, event.opr, *event.env, &VarSanityCheck::check_input_unmodified);
39 };
40
41 add_event_handler(graph->event().register_receiver<cg::event::OprExecKernelStart>(
42 on_exec_start));
43 add_event_handler(graph->event().register_receiver<cg::event::OprExecKernelEnd>(
44 on_exec_finish));
45}
46
47std::string VarSanityCheck::str(const ChecksumResult& chk) {
48 return ssprintf(

Callers

nothing calls this directly

Calls 6

add_producerMethod · 0.80
outputMethod · 0.45
owner_graphMethod · 0.45
dispatch_on_comp_nodeMethod · 0.45
comp_nodeMethod · 0.45
contain_flagMethod · 0.45

Tested by

no test coverage detected