This is an automated email from the ASF dual-hosted git repository.
lunderberg pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new cb31cb3e4f [Debug] Improve error message in VMShapeLower (#16806)
cb31cb3e4f is described below
commit cb31cb3e4f06f4752df35ea3f0eb233634afc931
Author: Eric Lunderberg <[email protected]>
AuthorDate: Thu Mar 28 16:52:56 2024 -0500
[Debug] Improve error message in VMShapeLower (#16806)
If `VMShapeLower` raises an error, specify which function produced the
error.
---
src/relax/backend/vm/vm_shape_lower.cc | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/relax/backend/vm/vm_shape_lower.cc
b/src/relax/backend/vm/vm_shape_lower.cc
index 5875ad5562..06c2e31767 100644
--- a/src/relax/backend/vm/vm_shape_lower.cc
+++ b/src/relax/backend/vm/vm_shape_lower.cc
@@ -224,6 +224,7 @@ class VMShapeLowerMutator
// prepare mapping and heap var
slot_vec_.clear();
slot_map_.clear();
+ current_gvar_ = gvar;
PrimExprSlotCollector::Collect(func, &slot_vec_, &slot_map_);
heap_size_ = IntImm(ShapeDType(), static_cast<int64_t>(slot_vec_.size()));
VarBinding shape_heap_binding = this->AllocShapeHeapBinding(heap_size_);
@@ -285,6 +286,9 @@ class VMShapeLowerMutator
}
auto new_body = builder_->Normalize(SeqExpr(blocks, body_seq->body));
+
+ current_gvar_ = NullOpt;
+
// create a new function
return Function(func->params, new_body, func->ret_struct_info,
func->is_pure, func->attrs);
}
@@ -357,7 +361,8 @@ class VMShapeLowerMutator
auto it = slot_map_.find(expr);
ICHECK(it != slot_map_.end());
auto* slot = it->second;
- ICHECK(slot->value_computed) << "PrimExpr " << expr << " has not been
computed";
+ ICHECK(slot->value_computed)
+ << "PrimExpr " << expr << " in function " << current_gvar_ << " has
not been computed";
return {PrimValue::Int64(static_cast<int>(MakeShapeCode::kLoadShape)),
PrimValue::Int64(slot->index)};
}
@@ -772,6 +777,7 @@ class VMShapeLowerMutator
std::vector<std::unique_ptr<PrimExprSlot>> slot_vec_;
/*! \brief Expr => slot. */
PrimExprSlotMap slot_map_;
+ Optional<GlobalVar> current_gvar_ = NullOpt;
/*!
* \brief List of vars that are being defined but
* have not go through outstanding shape compute check.