denizyuret/Knet.jl

Building Knet fails in 1.5.1

Closed this issue · 4 comments

I tried building Knet with Julia 1.5.1 and got:

│ ERROR: LoadError: LoadError: LoadError: UndefVarError: AddrSpacePtr not defined
Stacktrace:
│ [1] getproperty(::Module, ::Symbol) at ./Base.jl:26
│ [2] top-level scope at /home/phil/.julia/packages/CUDA/5t6R9/src/device/cuda/wmma.jl:52
│ [3] include(::Function, ::Module, ::String) at ./Base.jl:380
│ [4] include at ./Base.jl:368 [inlined]
│ [5] include(::String) at /home/phil/.julia/packages/CUDA/5t6R9/src/CUDA.jl:1
│ [6] top-level scope at /home/phil/.julia/packages/CUDA/5t6R9/src/device/cuda.jl:15
│ [7] include(::Function, ::Module, ::String) at ./Base.jl:380
│ [8] include at ./Base.jl:368 [inlined]
│ [9] include(::String) at /home/phil/.julia/packages/CUDA/5t6R9/src/CUDA.jl:1
│ [10] top-level scope at /home/phil/.julia/packages/CUDA/5t6R9/src/CUDA.jl:39
│ [11] include(::Function, ::Module, ::String) at ./Base.jl:380
│ [12] include(::Module, ::String) at ./Base.jl:368
│ [13] top-level scope at none:2
│ [14] eval at ./boot.jl:331 [inlined]
│ [15] eval(::Expr) at ./client.jl:467
│ [16] top-level scope at ./none:3
│ in expression starting at /home/phil/.julia/packages/CUDA/5t6R9/src/device/cuda/wmma.jl:52
│ in expression starting at /home/phil/.julia/packages/CUDA/5t6R9/src/device/cuda.jl:14
│ in expression starting at /home/phil/.julia/packages/CUDA/5t6R9/src/CUDA.jl:39
│ ERROR: LoadError: Failed to precompile CUDA [052768ef-5323-5732-b1bb-66c8b64840ba] to /home/phil/.julia/compiled/v1.5/CUDA/oWw5k_FwBAL.ji.
│ Stacktrace:
│ [1] error(::String) at ./error.jl:33
│ [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1305
│ [3] _require(::Base.PkgId) at ./loading.jl:1030
│ [4] require(::Base.PkgId) at ./loading.jl:928
│ [5] require(::Module, ::Symbol) at ./loading.jl:923
│ [6] include(::String) at ./client.jl:457
│ [7] top-level scope at none:5

I had moved the Project.toml from .julia/environments/v1.4 over to .julia/environments/v1.5 and this seems to have been the cause of the problem. I started over without a Project.toml in v1.5 and it seems to build fine.

I found that Knet 1.4.1 works with Julia 1.5.1, but Knet 1.3.7 did not build. As I added packages to my 1.5.1 Julia installation, I found that after I added CuArrays, Knet was downgraded to 1.3.7 and again failed to build again:

Julia> using Knet
[ Info: Precompiling Knet [1902f260-5fb4-5aff-8c31-6271790ab950]
ERROR: LoadError: LoadError: UndefVarError: find_toolkit not defined
Stacktrace:
[1] top-level scope at /home/phil/.julia/packages/Knet/V526D/src/gpu.jl:3
[2] include(::Function, ::Module, ::String) at ./Base.jl:380
[3] include at ./Base.jl:368 [inlined]
[4] include(::String) at /home/phil/.julia/packages/Knet/V526D/src/Knet.jl:1
[5] top-level scope at /home/phil/.julia/packages/Knet/V526D/src/Knet.jl:112
[6] include(::Function, ::Module, ::String) at ./Base.jl:380
[7] include(::Module, ::String) at ./Base.jl:368
[8] top-level scope at none:2
[9] eval at ./boot.jl:331 [inlined]
[10] eval(::Expr) at ./client.jl:467
[11] top-level scope at ./none:3
in expression starting at /home/phil/.julia/packages/Knet/V526D/src/gpu.jl:3
in expression starting at /home/phil/.julia/packages/Knet/V526D/src/Knet.jl:112
ERROR: Failed to precompile Knet [1902f260-5fb4-5aff-8c31-6271790ab950] to /home/phil/.julia/compiled/v1.5/Knet/f4vSz_w4Ghn.ji.
Stacktrace:
[1] error(::String) at ./error.jl:33
[2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1305
[3] _require(::Base.PkgId) at ./loading.jl:1030
[4] require(::Base.PkgId) at ./loading.jl:928
[5] require(::Module, ::Symbol) at ./loading.jl:923

So seems like some kind of interaction between CuArrays version and Knet version requirements.

Yes, I found this, thanks. I think the advice to copy the v1.4 Project.toml to v1.5 is probably not the best, but this seems to be what is advised when updating to a newer version of Julia.