| 51 | } |
| 52 | |
| 53 | void VarSanityCheck::check_var_after_exec( |
| 54 | VarNode* var, const ComputingGraph::VarReceiverInfo& recv) { |
| 55 | bool is_empty = !var->shape().ndim || |
| 56 | (var->dev_tensor_valid() && var->dev_tensor().empty()); |
| 57 | |
| 58 | if (is_empty) { |
| 59 | auto allow = var->contain_flag(VarNode::Flag::ALLOW_EMPTY_SHAPE), |
| 60 | no_alloc = var->contain_flag(VarNode::Flag::NO_ALLOC_IF_UNUSED); |
| 61 | mgb_throw_if( |
| 62 | !(allow || (no_alloc && recv.empty())) || !recv.is_empty_allowed(), |
| 63 | GraphError, |
| 64 | "empty output var after node execution: %s " |
| 65 | "(allow=%d receiver=%s)", |
| 66 | cg::dump_var_info({var}).c_str(), allow, recv.to_string().c_str()); |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | /* ================= DebugLog ================= */ |
| 71 | #if MGB_ENABLE_GETENV && MGB_ENABLE_JSON |
nothing calls this directly
no test coverage detected