Are you sure this is due to CUDArt? For me, this works as many times as I care
to try it (note that I'm not using CURAND):
using CUDArt
result = devices(dev->capability(dev)[1]>=2; nmax = 1) do devlist
device(devlist[1])
h = rand(Float32, 1000)
d_a = CudaArray(h)
a = to_host(d_a)
end
But I can replicate the bug if I use CURAND. I'd suggest filing an issue with
that package. Most likely it needs to (and, you need to) initialize resources
according to these instructions:
https://github.com/JuliaGPU/CUDArt.jl#initializing-and-freeing-ptx-modules
Best,
--Tim
On Saturday, November 07, 2015 02:52:16 PM Jason Eckstein wrote:
> I've had the same errors on MacOS, Windows 10, and Linux using the
> devices() do loop with CUDArt package. All of the programs I run I place
> inside the outer do loop including all the repetitions because as soon as
> that block ends I cannot use any other CUDA functions without some type of
> pointer or memory error. The only solution I've found is to restart Julia,
> but I noticed that if I run a program like yours with a julia command in
> the terminal rather than a REPL session, even if I just run one loop and I
> close the session I still get the memory errors when the script ends.
> Perhaps someone involved in developing CUDArt can give some insight as to
> why the outer do-block loop cannot be ended cleanly.
>
> On Friday, November 6, 2015 at 12:46:54 PM UTC-7, Joaquim Masset Lacombe
>
> Dias Garcia wrote:
> > I was playing with the GPU (in both windows and mac) libraries and I came
> > up with the following errors:
> > The first time I execute the do loop, every thing goes well.
> > But If i try a second time in a row I get this invalid pointer error.
> >
> > I got the same error in all my do loops, any ideas?
> >
> > best,
> > Joaquim
> >
> > *My code running on terminal:*
> >
> > julia> using CUDArt
> > julia> using CURAND
> > julia> result = devices(dev->capability(dev)[1]>=2) do devlist
> >
> > d_a = curand(Float32, 1000);
> > a = to_host(d_a);
> >
> > end
> >
> > 1000-element Array{Float64,1}:
> > 0.438451
> > 0.460365
> > 0.250215
> > 0.494744
> > 0.0530111
> > 0.337699
> > 0.396763
> > 0.874419
> > 0.482167
> > 0.0428398
> > ?
> > 0.563937
> > 0.80706
> > 0.190015
> > 0.334969
> > 0.622164
> > 0.710596
> > 0.0125895
> > 0.990388
> > 0.467796
> > 0.24313
> >
> > julia> result = devices(dev->capability(dev)[1]>=2) do devlist
> >
> > d_a = curand(Float32, 1000);
> > a = to_host(d_a);
> >
> > end
> >
> > WARNING: CUDA error triggered from:
> > in checkerror at
> >
> > C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\libcudart-6.5.jl
> >
> > :15
> > :
> > in copy! at C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\arrays.jl:152
> > in to_host at C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\arrays.jl:87
> > in anonymous at none:3
> > in devices at
> >
> > C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\device.jl:61ERROR:
> > Launch failed, perhaps due to an invalid pointer
> >
> > in checkdrv at C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\module.jl:6
> > in close at C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\device.jl:136
> > in devices at C:\Users\joaquimgarcia\.julia\v0.4\CUDArt\src\device.jl:63