-
Notifications
You must be signed in to change notification settings - Fork 270
Open
Labels
bugSomething isn't workingSomething isn't working
Description
This issue is blocking #963 . Note if M
is accessed in the prim_func
, e.g. T.Kernel(M, threads=128)
, the problem disappear. I'm still investigating, but based on the description, it seems that when the function body do not access variable from outer scope, they'll not be included in function closure and therefore the typing annotation string cannot be resolved at runtime.
https://docs.python.org/3/reference/compound_stmts.html#annotations
If the future statement from future import annotations is present, all annotations are instead stored as strings:
One possible workaround is to create T.Tensor
before defining T.prim_func
.
Required prerequisites
- I have read the documentation https://tilelang.com.
- I have searched the Issue Tracker that this hasn't already been reported. (comment there if it has.)
What version of TileLang are you using?
main
System information
Problem description
As title
Reproducible example code
from __future__ import annotations
import tilelang
import tilelang.language as T
@tilelang.jit(out_idx=[-1])
def kernek_main(M):
@T.prim_func
def k(
X: T.Tensor((M, )),
):
with T.Kernel(128 * 128, threads=128) as (bx, ):
pass
return k
def main(M=8192):
kernel = kernek_main(M)
print(kernel.get_kernel_source())
if __name__ == "__main__":
main()
Traceback
$ python test.py
2025-10-20 17:56:08 [TileLang:tilelang.env:WARNING]: Loading tilelang libs from dev root: /home/yyc/repo/tilelang/build
error: Mismatched type on argument #1 when calling: `script.ir_builder.tir.Arg(0: ffi.String, 1: ffi.Object) -> ffi.Object`. Expected `ffi.Object` but got `const char*`
--> /home/yyc/repo/tilelang/test.py:11:5
|
11 | def k(
| ^^^^^^
note: run with `TVM_BACKTRACE=1` environment variable to display a backtrace.
Expected behavior
No response
Additional context
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working