CentOS6.7での chainer 1.7.0 with CUDA のインストール


はじめに

インストールのハマりどころ

  • python 2.7系でも python 3.5系でもインストールは楽だった
  • しかし、Chainerの最新版では gcc 4.8 以上が必要とされているが、CentOS6.7のでは 4.4 どまりである
  • ちなみに、GPGPU (CUDA)を使わない場合は4.4でも問題ないがpython train_mnist.py -g 0 をすると死ぬ
    • core がない、などのエラーがでる
    • あれ自分の環境は?と思った人は、とりあえず python -c 'import cupy'をして何もエラーがなければ問題は無い
  • Chainerをインストール(コンパイル)するときだけgcc-4.8が使えれば良く、実行時には必要とされないようだ

インストール手順のメモ

gcc 4.8を使えるようにする

wgetを使う方法がやたらと見つかるが、ここではyumからSCL (Software Collection; devtools-3) を使う方法で試してみる。

$ sudo yum install centos-release-scl-rh
$ sudo yum install devtoolset-3-gcc-c++

1行目でリポジトリが追加される。なお、鍵はない模様。/etc/repos.d/を眺めておくと良い。
2行目でscl-utilsdevtoolset-3-gccdevtoolset-3-binutilsあたりもインストールされる。
なお、gccなどがインストールされる先は/opt/rh/devtoolset-3/以下であり、既存のgccが上書きされたりパスを自動で通すことはない。

今回は一時的に新しいgccg++が使いたいのだが、他のSCLコレクションとは違ってshellを動かす必要があるみたい。ということで、

$ scl enable devtoolset-3 bash

これで動く。バージョンを一応確認しておくと、

$ gcc -v

4.9という文字が見えるはず。

Chainerのインストール

いろいろ試行錯誤したあとにこのページを見つけていると思われるので、キャッシュ消しつつインストールする。

$ pip unistall chainer
$ pip install chainer --no-cache

終わったらちょっとだけ確認。

$ python -c 'import cupy'

何もエラーが出なければOK。

後は、mnist回してみましょう。

最後に

年のため、ログアウトしてからもう一度ログインしても、動くことをテストしておいた方が良いかもしれません。