|
20 | 20 |
|
21 | 21 | function intrinsics_testsuite(backend, AT) |
22 | 22 | @testset "KernelIntrinsics Tests" begin |
| 23 | + @testset "Launch parameters" begin |
| 24 | + # 1d |
| 25 | + function launch_kernel1d(arr) |
| 26 | + i, _, _ = KI.get_local_id() |
| 27 | + gi, _, _ = KI.get_group_id() |
| 28 | + ngi, _, _ = KI.get_num_groups() |
| 29 | + |
| 30 | + arr[(gi - 1) * ngi + i] = 1f0 |
| 31 | + return |
| 32 | + end |
| 33 | + arr1d = AT(zeros(Float32, 4)) |
| 34 | + KI.@kikernel backend() numworkgroups = 2 workgroupsize = 2 launch_kernel1d(arr1d) |
| 35 | + KernelAbstractions.synchronize(backend()) |
| 36 | + @test all(Array(arr1d) .== 1) |
| 37 | + |
| 38 | + # 1d tuple |
| 39 | + arr1dt = AT(zeros(Float32, 4)) |
| 40 | + KI.@kikernel backend() numworkgroups = (2,) workgroupsize = (2,) launch_kernel1d(arr1dt) |
| 41 | + KernelAbstractions.synchronize(backend()) |
| 42 | + @test all(Array(arr1dt) .== 1) |
| 43 | + |
| 44 | + # 2d |
| 45 | + function launch_kernel2d(arr) |
| 46 | + i, j, _ = KI.get_local_id() |
| 47 | + gi, gj, _ = KI.get_group_id() |
| 48 | + ngi, ngj, _ = KI.get_num_groups() |
| 49 | + |
| 50 | + arr[(gi - 1) * ngi + i, (gj - 1) * ngj + j] = 1f0 |
| 51 | + return |
| 52 | + end |
| 53 | + arr2d = AT(zeros(Float32, 4, 4)) |
| 54 | + KI.@kikernel backend() numworkgroups = (2, 2) workgroupsize = (2, 2) launch_kernel2d(arr2d) |
| 55 | + KernelAbstractions.synchronize(backend()) |
| 56 | + @test all(Array(arr2d) .== 1) |
| 57 | + |
| 58 | + # 3d |
| 59 | + function launch_kernel3d(arr) |
| 60 | + i, j, k = KI.get_local_id() |
| 61 | + gi, gj, gk = KI.get_group_id() |
| 62 | + ngi, ngj, ngk = KI.get_num_groups() |
| 63 | + |
| 64 | + arr[(gi - 1) * ngi + i, (gj - 1) * ngj + j, (gk - 1) * ngk + k] = 1f0 |
| 65 | + return |
| 66 | + end |
| 67 | + arr3d = AT(zeros(Float32, 4, 4, 4)) |
| 68 | + KI.@kikernel backend() numworkgroups = (2, 2, 2) workgroupsize = (2, 2, 2) launch_kernel3d(arr3d) |
| 69 | + KernelAbstractions.synchronize(backend()) |
| 70 | + @test all(Array(arr3d) .== 1) |
| 71 | + end |
| 72 | + |
23 | 73 | @testset "Basic intrinsics functionality" begin |
24 | 74 |
|
25 | 75 | @test KI.max_work_group_size(backend()) isa Int |
|
0 commit comments