I am trying to use Knet on a supercomputer using powerpc64le
nodes with NVidia TeslaV100
GPUs. But I am not able to compile it (so no use it, with or without GPU access).
It seems the Knet version installed (1.4.2) wants to download libknet8
as an artifact, but as powerpc64le is Tier2, it is not supported in automatic artifact build.
I am able to compile libknet8.so
by using the Knet/src/libknet8/build.jl
script (with the addition of CFLAGS option stdc=c++11
, because gcc version 8.4.4 (redhat 7.6) needs it (else unsatified external _ieee).
Now I am stuck to get Julia /Knet /Pkg use this libknet8. How should I go ?
Should I add an Override.toml file in .julia/artifacts ? (with which format) ?
Should I modify .julia/packages/Knet/rgT4R/Artifacts.toml ?
Should I go directly to the code in src ?
I have tried different things but none works. Possibly someone knows better ?
For the record, here is the compiling test
[jdavid00@login01 tknet]$ julia -q --project=.
julia> versioninfo()
Julia Version 1.5.2
Commit 539f3ce943* (2020-09-23 23:17 UTC)
Platform Info:
OS: Linux (powerpc64le-unknown-linux-gnu)
CPU: unknown
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, pwr9)
Environment:
JULIA_EDITOR = vim
(tknet) pkg> st
Status `~/jl/tknet/Project.toml`
[1902f260] Knet v1.4.2
julia> using Knet
[ Info: Precompiling Knet [1902f260-5fb4-5aff-8c31-6271790ab950]
ERROR: LoadError: LoadError: Cannot locate artifact 'libknet8' in '/m100/home/userexternal/jdavid00/.julia/packages/Knet/rgT4R/Artifacts.toml'
Stacktrace:
[1] error(::String) at ./error.jl:33
[2] do_artifact_str(::String, ::Dict{String,Any}, ::String, ::Module) at /m100/home/userexternal/jdavid00/j152/julia-1.5.2/usr/share/julia/stdlib/v1.5/Pkg/src/Artifacts.jl:1023
[3] invokelatest(::Any, ::Any, ::Vararg{Any,N} where N; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at ./essentials.jl:710
[4] invokelatest(::Any, ::Any, ::Vararg{Any,N} where N) at ./essentials.jl:709
[5] top-level scope at /m100/home/userexternal/jdavid00/j152/julia-1.5.2/usr/share/julia/stdlib/v1.5/Pkg/src/Artifacts.jl:1068
[6] include(::Function, ::Module, ::String) at ./Base.jl:380
[7] include at ./Base.jl:368 [inlined]
[8] include(::String) at /m100/home/userexternal/jdavid00/.julia/packages/Knet/rgT4R/src/Knet.jl:1
[9] top-level scope at /m100/home/userexternal/jdavid00/.julia/packages/Knet/rgT4R/src/Knet.jl:11
[10] include(::Function, ::Module, ::String) at ./Base.jl:380
[11] include(::Module, ::String) at ./Base.jl:368
[12] top-level scope at none:2
[13] eval at ./boot.jl:331 [inlined]
[14] eval(::Expr) at ./client.jl:467
[15] top-level scope at ./none:3
in expression starting at /m100/home/userexternal/jdavid00/.julia/packages/Knet/rgT4R/src/libknet8/LibKnet8.jl:7
in expression starting at /m100/home/userexternal/jdavid00/.julia/packages/Knet/rgT4R/src/Knet.jl:11
ERROR: Failed to precompile Knet [1902f260-5fb4-5aff-8c31-6271790ab950] to /m100/home/userexternal/jdavid00/.julia/compiled/v1.5/Knet/f4vSz_ZtxIT.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
julia>