-
Notifications
You must be signed in to change notification settings - Fork 80
Closed
Description
I have been playing around with the following code:
module revise_tests
export vadd
using KernelAbstractions, CUDA
if has_cuda_gpu()
CUDA.allowscalar(false)
end
@kernel function vadd_kernel(c, a, b)
cI = @index(Global)
c[cI] = a[cI] + b[cI]
end
function vadd(c, a, b)
if isa(c, Array)
kernel! = vadd_kernel(CPU(), 8)
else
kernel! = vadd_kernel(CUDADevice(),256)
end
kernel!(c, a, b, ndrange=size(c))
end
end # module
If I do
julia> a = ones(100)
julia> c = zeros(100)
julia> revise_tests.vadd(c, a, a)
KernelAbstractions.CPUEvent(Task (done) @0x00007f673bfd2710)
c is correctly a set of 100 2s. If I modify the line above such that c[cI] = a[cI] + b[cI] is now c[cI] = a[cI] + 2*b[cI] (or somethign similar, I get the following error:
julia> revise_tests.vadd(c, a, a)
ERROR: MethodError: no method matching vadd_kernel(::KernelAbstractions.CPU, ::Int64)
Stacktrace:
[1] vadd(::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at /home/leios/projects/revise_tests/src/revise_tests.jl:18
[2] top-level scope at REPL[7]:1
[3] run_backend(::REPL.REPLBackend) at /home/leios/.julia/packages/Revise/BqeJF/src/Revise.jl:1184
[4] top-level scope at REPL[2]:0
As a note, changing the kernel names seems to be fine. If we %s/vadd_kernel/check/g, Revise does know the code is changed.
I don't mind poking around a bit, but do not really know where to look.
Metadata
Metadata
Assignees
Labels
No labels