You need to sign in or sign up before continuing.
test_tilelang_issue_1115.py 1.4 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
import torch
import tilelang
import tilelang.language as T


def test_int64_address():
    @tilelang.jit
    def set_cache_kernel(
        S,
        D,
11
        pos_ty="int64",
12
13
14
15
        dtype="float32",
    ):
        @T.prim_func
        def main(
16
            pos: T.Tensor(
17
18
                [
                    S,
19
20
                ],
                pos_ty,
21
            ),  # type: ignore  `TypeError: Check failed: (a.dtype() == b.dtype()) is false: mismatched types. int64 vs. int32`
22
23
            value: T.Tensor([S, D], dtype),  # type: ignore
            cache: T.Tensor([S, D], dtype),  # type: ignore
24
25
26
27
28
29
30
31
32
33
34
        ):
            with T.Kernel(S, threads=128) as bx:
                slot = pos[bx]
                for i in T.Parallel(D):
                    cache[slot, i] = value[bx, i]

        return main

    D = 2
    S = 10
    cache = torch.rand((S, D), device="cuda", dtype=torch.float32)
35
36
37
38
39
    value = torch.rand((S, D), device="cuda", dtype=torch.float32)
    pos_int64 = torch.arange(S, device="cuda", dtype=torch.int64)
    pos_int32 = torch.arange(S, device="cuda", dtype=torch.int32)
    kernel_int64 = set_cache_kernel(S, D, "int64")
    kernel_int32 = set_cache_kernel(S, D, "int32")
40
41
42
43
44
45
46
47
    kernel_int64(pos_int64, value, cache)
    torch.testing.assert_close(cache, value)
    kernel_int32(pos_int32, value, cache)
    torch.testing.assert_close(cache, value)


if __name__ == "__main__":
    tilelang.testing.main()