@@ -2100,3 +2100,39 @@ end
21002100end
21012101
21022102end
2103+
2104+ @testset " redefine kernel method" begin
2105+ mod = @eval module $ (gensym ())
2106+ import cuTile as ct
2107+ function vadd_kernel (a:: ct.TileArray{Float32,1} , b:: ct.TileArray{Float32,1} , c:: ct.TileArray{Float32,1} )
2108+ pid = ct. bid (1 )
2109+ ta = ct. load (a, (pid,), (16 ,))
2110+ tb = ct. load (b, (pid,), (16 ,))
2111+ ct. store (c, (pid,), ta + tb)
2112+ return
2113+ end
2114+ end
2115+
2116+ a = CUDA. ones (Float32, 1024 )
2117+ b = CUDA. ones (Float32, 1024 )
2118+ c = CUDA. zeros (Float32, 1024 )
2119+
2120+ ct. launch (mod. vadd_kernel, 64 , a, b, c)
2121+
2122+ @test Array (c) ≈ Array (a) + Array (b)
2123+
2124+ @eval mod begin
2125+ function vadd_kernel (a:: ct.TileArray{Float32,1} , b:: ct.TileArray{Float32,1} , c:: ct.TileArray{Float32,1} )
2126+ pid = ct. bid (1 )
2127+ ta = ct. load (a, (pid,), (16 ,))
2128+ tb = ct. load (b, (pid,), (16 ,))
2129+ ct. store (c, (pid,), ta + tb * 2 )
2130+ return
2131+ end
2132+ end
2133+
2134+ ct. launch (mod. vadd_kernel, 64 , a, b, c)
2135+
2136+ @test Array (c) ≈ Array (a) + Array (b) * 2
2137+ end
2138+
0 commit comments