diff --git a/src/pocl/backend.jl b/src/pocl/backend.jl index e4a5d27e0..0c1296571 100644 --- a/src/pocl/backend.jl +++ b/src/pocl/backend.jl @@ -87,12 +87,7 @@ Adapt.adapt_storage(::POCLBackend, x::AbstractArray) = isbits(x) ? x : Adapt.ada Adapt.adapt_storage(::KA.ConstAdaptor, a::POCL.CLDeviceArray) = Base.Experimental.Const(a) -# Initialized - -KA.@kernel function init_kernel(arr, f::F, ::Type{T}) where {F, T} - I = KA.@index(Global) - @inbounds arr[I] = f(T) -end +# Copying KA.@kernel function copy_kernel(A, @Const(B)) I = KA.@index(Global) @@ -100,19 +95,6 @@ KA.@kernel function copy_kernel(A, @Const(B)) end -function KI.zeros(backend::POCLBackend, ::Type{T}, dims::Tuple; kwargs...) where {T} - arr = KI.allocate(backend, T, dims; kwargs...) - kernel = init_kernel(backend) - kernel(arr, zero, T, ndrange = length(arr)) - return arr -end -function KI.ones(backend::POCLBackend, ::Type{T}, dims::Tuple; kwargs...) where {T} - arr = KI.allocate(backend, T, dims; kwargs...) - kernel = init_kernel(backend) - kernel(arr, one, T; ndrange = length(arr)) - return arr -end - function KI.copyto!(backend::POCLBackend, A, B) if KI.get_backend(A) == KI.get_backend(B) && KI.get_backend(A) isa POCLBackend if length(A) != length(B) diff --git a/test/runtests.jl b/test/runtests.jl index d54fc5b71..27c1334ca 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -123,6 +123,19 @@ end @test all(==(2.0f0), A) end +# not part of the shared testsuite: not every back-end supports bits-union arrays +@testset "POCL zeros/ones of bits-union types" begin + for T in (Union{Missing, Bool}, Union{Missing, Int32}) + Z = KernelAbstractions.zeros(POCLBackend(), T, 3) + @test eltype(Z) == T + @test all(x -> !ismissing(x) && iszero(x), Z) + + O = KernelAbstractions.ones(POCLBackend(), T, 3) + @test eltype(O) == T + @test all(x -> !ismissing(x) && isone(x), O) + end +end + @testset "CPU back-end" begin Testsuite.testsuite(CPU, "CPU", POCL, Array, POCL.CLDeviceArray) end