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

Method on_var_computed

src/plugin/impl/num_range_checker.cpp:62–88  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60}
61
62void NumRangeChecker::on_var_computed(VarNode* var) {
63 if (!var->dev_tensor_valid())
64 return;
65
66 auto&& checker = m_cn2dt2checker[var->comp_node()][var->dtype().enumv()];
67 checker.init(var, m_range);
68 if (!checker.check(var)) {
69 HostTensorND hv;
70 hv.copy_from(var->dev_tensor()).sync();
71 std::string msg{mgb_ssprintf_log(
72 "float value out of range: var: %s\n",
73 cg::dump_var_info({var}).c_str())};
74 switch (hv.dtype().enumv()) {
75#define cb(_dt) \
76 case DTypeTrait<_dt>::enumv: \
77 msg += format_msg<DTypeTrait<_dt>::ctype>(hv, m_range); \
78 break;
79 MEGDNN_FOREACH_COMPUTING_DTYPE_FLOAT(cb)
80 default:
81 mgb_assert(0, "unexpected dtype");
82 }
83
84 mgb_throw_raw(
85 cg::OperatorNodeExcExtraInfo::ExcMaker{var->owner_opr()}.make<Error>(
86 msg));
87 }
88}
89
90template <typename ctype>
91std::string NumRangeChecker::format_msg(const HostTensorND& hv, float range) {

Callers

nothing calls this directly

Calls 10

dev_tensor_validMethod · 0.80
comp_nodeMethod · 0.45
enumvMethod · 0.45
dtypeMethod · 0.45
initMethod · 0.45
checkMethod · 0.45
syncMethod · 0.45
copy_fromMethod · 0.45
dev_tensorMethod · 0.45
owner_oprMethod · 0.45

Tested by

no test coverage detected