julia v0.6.2 で CUDA9.1 を使う。

# 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