Mac OS X High Sierra に Chainer + CuPy をインストールする。
CuPy (クーパイ)は CUDA (クーダ)の Python ラッパーで、 NumPy の代わりに使うことで GPU で計算出来るようになる。
CuPy解説 - SlideShare で概要を把握。
開発機の場合はGPUパワーよりも「CuPyで動く」という事が重要。一通り実装できたら、ちゃんとしたGPUを積んだマシンで動かすという手順になる。
尚、自分の開発機の場合は、作業開始時点で最新の Xcode と、 Command Line Tools for Xcode をインストール済。その他、brew
, python
, pip
, pyenv
などは既に入っている状態だった。
Chainer と CuPy のインストール(今回やりたい事)
pip install chainer
pip install cupy
chainer は問題なかったが、cupy が fatal error: 'cublas_v2.h' file not found
で止まった。
先ずは CUDA を入れる必要がある。
CUDAインストール
CUDA を入れる為に、先ずは brew cask を入れる。brew install brew-cask
はエラーになるので、homebrew-caskがErrorになると思ったら本家に移行してた - Qiita を参考にインストール。
xcode-select --install
brew uninstall --force brew-cask; brew update
brew tap caskroom/cask
これで brew cask がインストールできたので、続けて CUDA を入れる。
brew upgrade
brew install coreutils
brew install swig
brew install bazel
# brew cask install cuda の代わりに下記
brew tap caskroom/drivers
brew cask install nvidia-cuda
NVIDIAのインストーラが出てくるので、インストールする。
インストールが終わると、システム環境設定に「CUDA」のメニューが追加され、CUDAのバージョンやGPU情報などが確認できるようになる。
Xcode Command Line Tools のダウングレード
再び CuPy インストールを試みる。
pip install cupy
nvcc fatal : The version ('90100') of the host compiler ('Apple clang') is not supported
今度はコンパイラーのバージョンエラーが出た。nvcc fatal : The version (‘90000’) of the host compiler (‘Apple clang’) is not supported · Issue #137 · fireice-uk/xmr-stak-nvidia によると、自分のXcodeが新しすぎるらしい。
Xcodeのアップデートの度に同じ様なバージョンエラーが出て困る人が居るようだ。NVCC does not support Apple Clang version 8.x · Issue #1384 · arrayfire/arrayfire · GitHub に解決方法が書いてあった。
- https://developer.apple.com/downloads/ にログイン
- Xcode CLT (Command Line Tools) の前のバージョンをダウンロード(今回は8.3)
- Xcode CLT をインストール
-
sudo xcode-select --switch /Library/Developer/CommandLineTools
を実行してバージョンを切り替える - clang がダウングレードされたことを確認する為
clang --version
で確認
CLTのバージョン下げると他に影響あるかもしれないが、問題あればアップグレードし直せば良い。(App Store のソフトウェア・アップデートに出て来る)
これでバージョンが clang のバージョンが 8.3 になった。
CuPy インストール
改めて CuPy をインストール。
pip install cupy
10分ほど待つ。
Successfully installed cupy-4.0.0
というメッセージが出て、インストール完了!
これで、eGPU で GeForce を繋げばきっと動く様になる。
参考:MacBook Air(or Pro)でGPUを外付けしChainerを動作させるまでの手順