Macでビルドできないよ、という報告を受けたのでMacでビルドできないか探っていたのですが、実はマシンにnVidia GPUがなくてもビルドはできることがわかったので、そのときやったことを報告をします。この記事は必ずしも、Macで 動作することを保証しません 。残念ながら、nVidia GPUの乗ったMacを持っていません・・・。
CUDAのインストール
公式サイトに行って、Mac用のCUDA 7.5をダウンロードします。インストーラーを起動すると、nVidiaのドライバとCUDAのインストールが促されますが、両方共インストールできます。とりあえず入れてみます。実はこれで入ります。
注目すべきは、ディレクトリ構成です。別件で書きましたが、以下のようになっています。注目すべきは、libcuda.dylib
が/usr/local/cuda/lib
にしか入っていないことです。他のファイルは、/Developer
ディレクトリ以下へのシンボリックリンクになっているようです。そのため、Chainerでは、このディレクトリを強制的にライブラリのパスに追加するようにしました。EI Capitanだとどうなるんでしょうね・・・。怖くて試していません。
+ usr
| + local
| + cuda
| + bin --> /Developer/NVIDIA/CUDA-7.5/bin
| + include --> /Developer/NVIDIA/CUDA-7.5/include
| + lib
| + libcuda.dylib
| + libcublas.dylib --> /Developer/NVIDIA/CUDA-7.5/lib/libcublas.dylib
+ Developer
+ NVIDIA
+ CUDA-7.5
+ bin
| + nvcc
+ include
| + cublas.h
+ lib
+ libcublas.dylib
インストール
あとは普通にインストールします。ふつうにCythonが走ってインストールできます。pyenv推奨。
$ pip install chainer
動作確認
動作しないのをわかっていながら動かしてみたら、実行時エラーになりました。Macbook Airだしね。動いた方はご報告を(?)・・・。
% python
Python 3.4.1 (default, Sep 15 2014, 13:51:31)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cupy
>>> cupy.array([1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/unno/.pyenv/versions/3.4.1/lib/python3.4/site-packages/cupy/creation/from_data.py", line 27, in array
return core.array(obj, dtype, copy, ndmin)
File "cupy/core/core.pyx", line 1524, in cupy.core.core.array (cupy/core/core.cpp:51766)
File "cupy/core/core.pyx", line 1543, in cupy.core.core.array (cupy/core/core.cpp:51519)
File "cupy/core/core.pyx", line 107, in cupy.core.core.ndarray.__init__ (cupy/core/core.cpp:5117)
File "cupy/cuda/memory.pyx", line 250, in cupy.cuda.memory.alloc (cupy/cuda/memory.cpp:5101)
File "cupy/cuda/memory.pyx", line 230, in cupy.cuda.memory._malloc (cupy/cuda/memory.cpp:5040)
File "cupy/cuda/memory.pyx", line 231, in cupy.cuda.memory._malloc (cupy/cuda/memory.cpp:4955)
File "cupy/cuda/memory.pyx", line 28, in cupy.cuda.memory.Memory.__init__ (cupy/cuda/memory.cpp:1358)
File "cupy/cuda/device.pyx", line 51, in cupy.cuda.device.Device.__init__ (cupy/cuda/device.cpp:1299)
File "cupy/cuda/runtime.pyx", line 127, in cupy.cuda.runtime.getDevice (cupy/cuda/runtime.cpp:2048)
File "cupy/cuda/runtime.pyx", line 106, in cupy.cuda.runtime.check_status (cupy/cuda/runtime.cpp:1815)
cupy.cuda.runtime.CUDARuntimeError: cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA runtime version
>>>