@@ -13,14 +13,15 @@ addprocs(2, exeflags="--project")
1313 catch end
1414
1515 using Distributed, Dagger, DaggerGPU
16+ import DaggerGPU: Kernel
1617 using KernelAbstractions
1718end
1819@everywhere begin
1920 function isongpu (X)
2021 return ! (X isa Array)
2122 end
2223
23- KernelAbstractions . @kernel function fill_kernel (A, x)
24+ @kernel function fill_kernel (A, x)
2425 idx = @index (Global, Linear)
2526 A[idx] = x
2627 end
3233 return A, typeof (A)
3334 end
3435
36+ @kernel function copy_kernel (B, A)
37+ idx = @index (Global, Linear)
38+ B[idx] = A[idx]
39+ end
40+
3541 # Create a function to perform an in-place operation.
3642 function addarray! (x)
3743 x .= x .+ 1.0f0
5359 DA, T = fetch (Dagger. @spawn fill_thunk (A, 2.3f0 ))
5460 @test all (DA .== 2.3f0 )
5561 @test T <: Array
62+
63+ A = rand (Float64, 128 )
64+ B = zeros (Float64, 128 )
65+ Dagger. with_options (scope= Dagger. scope (worker= 1 ,thread= 1 )) do
66+ fetch (Dagger. @spawn Kernel (copy_kernel)(B, A; ndrange= length (A)))
67+ end
68+ @test all (B .== A)
5669 end
5770end
5871
8194 end
8295 @test all (DA .== 2.3f0 )
8396 @test T <: CuArray
97+
98+ A = CUDA. rand (128 )
99+ B = CUDA. zeros (128 )
100+ Dagger. with_options (;scope= Dagger. scope (worker= 1 ,cuda_gpu= 1 )) do
101+ fetch (Dagger. @spawn Kernel (copy_kernel)(B, A; ndrange= length (A)))
102+ end
103+ @test all (B .== A)
84104 end
85105 end
86106end
110130 end
111131 @test all (DA .== 2.3f0 )
112132 @test T <: ROCArray
133+
134+ A = AMDGPU. rand (128 )
135+ B = AMDGPU. zeros (128 )
136+ Dagger. with_options (;scope= Dagger. scope (worker= 1 ,rocm_gpu= 1 )) do
137+ fetch (Dagger. @spawn Kernel (copy_kernel)(B, A; ndrange= length (A)))
138+ end
139+ @test all (B .== A)
113140 end
114141 end
115142end
139166 end
140167 @test all (DA .== 2.3f0 )
141168 @test T <: MtlArray
169+
170+ A = Metal. rand (128 )
171+ B = Metal. zeros (128 )
172+ Dagger. with_options (;scope= Dagger. scope (worker= 1 ,metal_gpu= 1 )) do
173+ fetch (Dagger. @spawn Kernel (copy_kernel)(B, A; ndrange= length (A)))
174+ end
175+ @test all (B .== A)
142176 end
143177
144178 @testset " In-place operations" begin
0 commit comments