julia v0.6.2 で CUDAnative (CUDA9.1)を使えるようにする(した、というか出来た)。
結論から言うと、juliaのパッケージプロジェクトである、CUDAnative を利用する為には、
julia が使っている llvm を v4.0 以上にする必要があり、 julia の環境構築(build)が必要。
julia の llvmをv4.0.0以上にすれば、REPLで
julia> Pkg.add("CUDAnative")
を行うだけで動く。
とりあえずの一報です。これだけで判る人には判ると思うので。
動いた環境
OS
user@SannaiMaruyama:/usr/source/julia$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
julia
julia v0.6.2
juliaが使用しているllvm v4.0.1
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: https://docs.julialang.org
_ _ _| |_ __ _ | Type "?help" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.6.2 (2017-12-13 18:08 UTC)
_/ |\__'_|_|_|\__'_| |
|__/ | x86_64-linux-gnu
julia> versioninfo()
Julia Version 0.6.2
Commit d386e40* (2017-12-13 18:08 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: AMD Ryzen 7 1700 Eight-Core Processor
WORD_SIZE: 64
BLAS: libopenblas (NO_LAPACKE DYNAMIC_ARCH NO_AFFINITY Barcelona)
LAPACK: liblapack
LIBM: libopenlibm
LLVM: libLLVM-4.0.1 (ORCJIT, znver1)
juliaのパッケージ
julia> Pkg.status()
7 required packages:
- ArrayFire 0.1.0
- CUDAapi 0.3.0
- CUDAdrv 0.7.4
- CUDAnative 0.5.4
- Compat 0.45.0
- Decimals 0.2.1
- LLVM 0.5.1
4 additional packages:
- BinDeps 0.8.3
- SHA 0.5.2
- SpecialFunctions 0.3.7
- URIParser 0.3.0
CUDA
CUDA v9.1
user@SannaiMaruyama:/usr/source/julia$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
Make.inc
user@SannaiMaruyama:/usr/source/julia$ cat Make.user
#override CC = gcc-7
#override CXX = g++-7
override USECLANG = 1
override USE_SYSTEM_BLAS = 1
#override OPENBLAS_USE_THREAD=0
#override USE_BLAS64 = 1
override LLVM_VER = 4.0.1
#override USE_SYSTEM_LLVM = 1
override USE_LLVM_SHLIB = 1
#override BUILD_LLVM_CLANG = 1
override USE_SYSTEM_SUITESPARSE = 1
override USE_SYSTEM_PCRE = 1
override USE_SYSTEM_GMP = 1
override USE_SYSTEM_MPFR = 1
override USE_SYSTEM_ARPACK = 1
override USE_SYSTEM_LAPACK = 1
override USE_SYSTEM_CURL = 1
#override USE_SYSTEM_MBEDTLS = 1
#override USE_SYSTEM_LIBSSH2 = 1
#override USE_SYSTEM_LIBGIT2 = 1
#override USE_SYSTEM_LIBUNWIND = 1
#override DISABLE_LIBUNWIND = 1
#override USE_SYSTEM_UTF8PROC = 1
#override USE_SYSTEM_LIBUV = 1
#override USE_SYSTEM_LIBM = 1
#override USE_SYSTEM_OPENLIBM = 1
#override UNTRUSTED_SYSTEM_LIBM = 1
#override USE_SYSTEM_DSFMT = 1
最後に
とりあえず動いたので、一報として上げ後で追記すれば良いと思っていたのですが、Cudaを動作させるビルド環境を作るには、全てのツールチェーンの一貫性を維持しないと駄目なので、色々四苦八苦してます。
まとまったら、また改めて記事にします。
julia CUDAnative