JLD2.jl
JLD2.jl copied to clipboard
Error when loading `CuArray`
Code and error message
using JLD2
using CUDA
test=CuArray([1,2])
jldsave("example.jld2";test)
julia> data=load("example.jld2")
Dict{String, Any} with 1 entry:Error showing value of type Dict{String, Any}:
ERROR: UndefRefError: access to undefined reference
Stacktrace:
[1] current_device
@ C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\lib\cudadrv\devices.jl:24 [inlined]
[2] context!(ctx::CuContext)
@ CUDA C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\lib\cudadrv\state.jl:150
[3] #context!#63
@ C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\lib\cudadrv\state.jl:162 [inlined]
[4] context!
@ C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\lib\cudadrv\state.jl:161 [inlined]
[5] unsafe_copyto!(dest::Vector{Int64}, doffs::Int64, src::CuArray{Int64, 1, CUDA.Mem.DeviceBuffer}, soffs::Int64, n::Int64)
@ CUDA C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\src\array.jl:406
[6] copyto!
@ C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\src\array.jl:360 [inlined]
[7] copyto!
@ C:\Users\Baiyi Yu\.julia\packages\CUDA\tTK8Y\src\array.jl:364 [inlined]
[8] copyto_axcheck!
@ .\abstractarray.jl:1104 [inlined]
[9] Vector{Int64}(x::CuArray{Int64, 1, CUDA.Mem.DeviceBuffer})
@ Base .\array.jl:563
[10] Array
@ .\boot.jl:481 [inlined]
[11] convert
@ .\array.jl:554 [inlined]
[12] adapt_storage
@ C:\Users\Baiyi Yu\.julia\packages\GPUArrays\gok9K\src\host\abstractarray.jl:23 [inlined]
[13] adapt_structure
@ C:\Users\Baiyi Yu\.julia\packages\Adapt\wASZA\src\Adapt.jl:42 [inlined]
[14] adapt
@ C:\Users\Baiyi Yu\.julia\packages\Adapt\wASZA\src\Adapt.jl:40 [inlined]
[15] show_vector
@ C:\Users\Baiyi Yu\.julia\packages\GPUArrays\gok9K\src\host\abstractarray.jl:34 [inlined]
[16] show(io::IOContext{IOBuffer}, X::CuArray{Int64, 1, CUDA.Mem.DeviceBuffer})
@ Base .\arrayshow.jl:481
[17] sprint(f::Function, args::CuArray{Int64, 1, CUDA.Mem.DeviceBuffer}; context::IOContext{Base.TTY}, sizehint::Int64)
@ Base .\strings\io.jl:112
[18] show(io::IOContext{Base.TTY}, #unused#::MIME{Symbol("text/plain")}, t::Dict{String, Any})
@ Base .\show.jl:112
[19] display(d::REPL.REPLDisplay{REPL.LineEditREPL}, mime::MIME{Symbol("text/plain")}, x::Dict{String, Any})
@ OhMyREPL C:\Users\Baiyi Yu\.julia\packages\OhMyREPL\oDZvT\src\output_prompt_overwrite.jl:8
[20] display(d::REPL.REPLDisplay, x::Any)
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:271
[21] display(x::Any)
@ Base.Multimedia .\multimedia.jl:328
[22] #invokelatest#2
@ .\essentials.jl:716 [inlined]
[23] invokelatest
@ .\essentials.jl:714 [inlined]
[24] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:293
[25] (::REPL.var"#45#46"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:277
[26] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:510
[27] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:275
[28] (::REPL.var"#do_respond#66"{Bool, Bool, REPL.var"#77#87"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:846
[29] #invokelatest#2
@ .\essentials.jl:716 [inlined]
[30] invokelatest
@ .\essentials.jl:714 [inlined]
[31] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
@ REPL.LineEdit C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\LineEdit.jl:2493
[32] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
@ REPL C:\Users\Baiyi Yu\AppData\Local\Programs\Julia-1.7.3\share\julia\stdlib\v1.7\REPL\src\REPL.jl:1232
[33] (::REPL.var"#49#54"{REPL.LineEditREPL, REPL.REPLBackendRef})()
@ REPL .\task.jl:429
Hi @Lightup1 ,
this is tricky. I suppose, CUDA
might be able to implement storing and reconstructing of CuArray
s with JLD2.
However, currently, you are just telling JLD2 to store a CuArray
which (in CPU RAM) just contains information about the GPU and where to find data on the GPU. This is not useful for storing and loading.
The easy solution would be to just convert your data to regular arrays.