LeiWang1999 commented on PR #16250:
URL: https://github.com/apache/tvm/pull/16250#issuecomment-1902608872
Hi @Lunderberg , I encountered some issues around the verify_well_formed
analysis. it may have some conflicts with the f16 mma tensorcore tensorization.
```bash
Traceback (most recent call last):
File
"/home/t-leiwang/ladder_workspace/tvm_gpu_gemm/tensorirscript_imma/7.padding_mma_f16_f16_nt.py",
line 235, in <module>
sch.tensorize(loop_a, intrin_group["load_a"])
File
"/home/t-leiwang/mlc_workspace/mma_verify/python/tvm/tir/schedule/_type_checker.py",
line 340, in wrap
return func(*args, **kwargs)
File
"/home/t-leiwang/mlc_workspace/mma_verify/python/tvm/tir/schedule/schedule.py",
line 2921, in tensorize
_ffi_api.ScheduleTensorize( # type: ignore # pylint: disable=no-member
File
"/home/t-leiwang/mlc_workspace/mma_verify/python/tvm/_ffi/_ctypes/packed_func.py",
line 239, in __call__
raise_last_ffi_error()
File "/home/t-leiwang/mlc_workspace/mma_verify/python/tvm/_ffi/base.py",
line 481, in raise_last_ffi_error
raise py_err
ValueError: Traceback (most recent call last):
54:
tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::runtime::TypedPackedFunc<void
(tvm::tir::Schedule, tvm::runtime::ObjectRef, tvm::runtime::String,
bool)>::AssignTypedLambda<tvm::tir::{lambda(tvm::tir::Schedule,
tvm::runtime::ObjectRef, tvm::runtime::String,
bool)#14}>(tvm::tir::{lambda(tvm::tir::Schedule, tvm::runtime::ObjectRef,
tvm::runtime::String, bool)#14}, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs
const&, tvm::runtime::TVMRetValue*)#1}> >::Call(tvm::runtime::PackedFuncObj
const*, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, tvm::runtime::TVMRetValue)
53: tvm::tir::TracedScheduleNode::Tensorize(tvm::tir::LoopRV const&,
tvm::runtime::String const&, bool)
52: tvm::tir::ConcreteScheduleNode::Tensorize(tvm::tir::LoopRV const&,
tvm::runtime::String const&, bool)
51: tvm::tir::ScheduleStateNode::DebugVerify() const
50: tvm::tir::VerifyCachedFlags(tvm::tir::ScheduleState const&)
49: tvm::tir::ScheduleState::ScheduleState(tvm::IRModule, int, bool)
48: tvm::tir::VerifyWellFormed(tvm::tir::PrimFunc const&, bool)
47: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::PrimFunc const&,
tvm::ObjectPath)
46: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
45: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#18}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
44: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::BlockRealizeNode
const*, tvm::ObjectPath)
43: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
42: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#17}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
41: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::BlockNode const*,
tvm::ObjectPath)
40: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
39: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
38: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
37: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
36: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
35: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
34: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
33: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
32: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
31: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
30: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
29: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
28: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
27: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#13}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
26: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::SeqStmtNode const*,
tvm::ObjectPath)
25: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
24: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
23: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
22: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#13}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
21: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::SeqStmtNode const*,
tvm::ObjectPath)
20: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
19: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
18: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
17: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
16: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
15: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
14: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#4}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
13: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::ForNode const*,
tvm::ObjectPath)
12: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
11: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#13}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
10: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::SeqStmtNode const*,
tvm::ObjectPath)
9: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#18}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
8: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::BlockRealizeNode
const*, tvm::ObjectPath)
7: tvm::tir::TIRVisitorWithPath::Visit(tvm::tir::Stmt const&,
tvm::ObjectPath)
6: tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#17}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::StmtFunctor<void (tvm::tir::Stmt const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
5: tvm::tir::TIRVisitorWithPath::VisitStmt_(tvm::tir::BlockNode const*,
tvm::ObjectPath)
4: tvm::tir::TIRVisitorWithPath::EnterDef(tvm::tir::Buffer const&,
tvm::ObjectPath)
3: tvm::tir::TIRVisitorWithPath::Visit(tvm::PrimExpr const&,
tvm::ObjectPath)
2: tvm::tir::ExprFunctor<void (tvm::PrimExpr const&,
tvm::ObjectPath)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&,
tvm::tir::ExprFunctor<void (tvm::PrimExpr const&, tvm::ObjectPath)>*,
tvm::ObjectPath)#1}::_FUN(tvm::runtime::ObjectRef const&,
tvm::tir::ExprFunctor<void (tvm::PrimExpr const&, tvm::ObjectPath)>*,
tvm::ObjectPath)
1: tvm::tir::UndefinedVarVerifier::VisitExpr_(tvm::tir::VarNode const*,
tvm::ObjectPath)
0: tvm::tir::(anonymous
namespace)::Verifier<tvm::tir::UndefinedVarVerifier>::VerifyStream::~VerifyStream()
File
"/home/t-leiwang/mlc_workspace/mma_verify/src/tir/analysis/verify_well_formed.cc",
line 100
ValueError: Invalid use of undefined variable elem_offset at
<root>.body.block.body.body.body.body.body.seq[1].body.seq[2].body.body.body.seq[0].block.match_buffers[0].buffer.elem_offset.
```
code to reproduce:
https://gist.github.com/LeiWang1999/1b008e1d6f780291b45037fc9756bf8c
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]