Files
tilelang/testing/python/language/test_tilelang_language_var_init.py
T
Chaofan Lin 27224884f9 [Testing] Run portable regression tests on auto targets (#2914)
[Testing] Remove stale CUDA gates from portable tests
2026-08-07 15:07:26 +08:00

59 lines
1.7 KiB
Python

import tilelang
import tilelang.language as T
import tilelang.testing
import pytest
def test_alloc_var_preserves_float64_initializer_dtype() -> None:
@T.prim_func
def kernel(A: T.Tensor((1,), T.float64)):
with T.Kernel(1):
value = T.alloc_var(T.float64, init=1e300)
A[0] = value
initializers = []
def collect_float64_initializer(node):
if isinstance(node, tilelang.tvm.tirx.FloatImm) and node.dtype == T.float64:
initializers.append(node.value)
tilelang.tvm.tirx.stmt_functor.post_order_visit(kernel.body, collect_float64_initializer)
assert 1e300 in initializers
def test_alloc_var_rejects_unrepresentable_float32_initializer() -> None:
with pytest.raises(ValueError, match="exceeds maximum of float32"):
@T.prim_func
def kernel(A: T.Tensor((1,), T.float32)):
with T.Kernel(1):
value = T.alloc_var(T.float32, init=1e300)
A[0] = value
def test_var_assign() -> None:
@tilelang.jit(out_idx=-1)
def jit_kernel():
@T.prim_func
def test_var_assign(A: T.Tensor((2,), T.int32)):
with T.Kernel(1) as _:
a = T.alloc_var(T.int32, init=1)
b = T.alloc_var(T.int32, init=a) # b gets value of a
a = 2
d = T.alloc_var(T.int32, init=a) # c gets new value of a
A[0] = b
A[1] = d
print(test_var_assign)
return test_var_assign
kernel = jit_kernel()
print(kernel.get_kernel_source())
res = kernel()
assert res[0] == 1
assert res[1] == 2
if __name__ == "__main__":
tilelang.testing.main()