I'm not having much luck filling a CUDArt.CudaArray matrix with a value.
julia> C = CUDArt.CudaArray(Float64, (10,10))
CUDArt.CudaArray{Float64,2}(CUDArt.CudaPtr{Float64}(Ptr{Float64} @
0x0000000b034a0e00),(10,10),0)
julia> fill!(C, 2.0)
ERROR: KeyError: (0,"fill_contiguous",Float64) not found
[inlined code] from essentials.jl:58
in getindex at dict.jl:719
in fill! at /home/mcp50/.julia/v0.5/CUDArt/src/arrays.jl:158
The fill! code works when matrix C is created by copying data to the gpu.
This suggested to me the problem was one of memory allocation. However,
I've tried variations on this which haven't worked, such as taking some of
the source code:
julia> function NewCudaArray(T::Type, dims::Dims)
n = prod(dims)
p = CUDArt.malloc(T, n)
CudaArray{T,length(dims)}(p, dims, device())
end
NewCudaArray (generic function with 1 method)
julia> C = NewCudaArray(Float64, (10,10))
CUDArt.CudaArray{Float64,2}(CUDArt.CudaPtr{Float64}(Ptr{Float64} @
0x0000000b034a1200),(10,10),0)
julia> fill!(C, 2.0)
ERROR: KeyError: (0,"fill_contiguous",Float64) not found
[inlined code] from essentials.jl:58
in getindex at dict.jl:719
in fill! at /home/mcp50/.julia/v0.5/CUDArt/src/arrays.jl:158
Copying things across unnecessarily sounds slow, so thoughts appreciated.