CUDA ToolKit 8.0 のインストール【Fedora25】

管理人は、計算化学についてのブログを開設しているにも関わらず、GPU を用いた並列計算や Deep Learning の経験がありません。

そのため、自身で自作 PC を作成し GPU 並列計算や Deep Learning をやってみようと思いました。

Amber での並列計算を行うにしても、自分で並列計算用のプログラムを書くにしても CUDA をインストールする必要があります。そこで、今回の記事では CUDA のインストールについてまとめてみたいと思います。

CUDA とは?

CUDA (Compute Unified Device Architecture) は NVIDIA 社製のGPU における汎用のデータ並列言語として開発され、2000 年ごろ開発されました。C/C++ 言語をベースに作られているので、取っつきやすそうです。

こちらのページNVIDIA 社の CUDA に対応した GPU が記載されています。また、Amber のページにも Supported GPU が記載されていますので、購入の際にはその辺を参考にするのが良いと思います。

ちなみに管理人はコスパの点から GTX 1060 6 GBを購入しましたが、GTX 1080 にすればよかったかなと少し後悔しています。

GPU 並列計算について基礎的なことを知りたい人には、ゼロから始めるGPU Computing というページが非常に有用です。

CUDA のインストールに関してのトラブル

CUDA のインストールに際して、GUI が吹っ飛ぶというエラーがよくあるそうです。実際管理人も x server に接続できなくなってしまい、.serverauth does not exist や .Xauthority does not exist から始まるエラーメッセージに何度も遭遇しました。しかも .xorg.0.log に記載されているエラーメッセージを全部解決してもGUI が起動しませんでした。。。

CUDA ToolKit のインストールでなんども GUI が消えたため、OS を何回か入れ直しました。最終的にインストールに関する情報が多くある FEDORA にしました。。。
もしも、GUI が吹っ飛んでしまったら、エラーを解決するのではなくインストールの仕方を変えたほうが良いと思います。

ちなみに、X server のエラーが起きた際は GUI が起動せずに止まると思うので、 Ctr + Alt + F2 から CUI で起動して対処します。

sudo nvidia-xconfig –allow-empty-initial-configuration
で config ファイルを再生成して、Device のところに

BusID "PCI:1:0:0"

を書き加えたり、

/etc/modprobe.d/blacklist.conf に

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

を書き加えたりするとエラーメッセージが消えます。

エラー内容が解決していないうちは、startx を入力するとエラーメッセージが表示されるのですが、エラーメッセージを全て解決した後に startx を押したらフリーズしました。。。

実際に行ったインストール方法

まずは、前回の記事に従って nVIDIA のドライバーをインストールします。
次に、 lscpi | grep VGA でグラフィックボードを確認します。

$ lspci | grep “VGA”
00:02.0 VGA compatible controller: Intel Corporation Device 5912 (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)

もしも上のように CPU の内臓 GPU が使われている場合は、bumblebee の設定をした方が良いようです。bumblebee の設定に関しては、こちらのページにまとめられています。

続いて、nVIDIA のページから CUDA ToolKit 8.0 の .run ファイルをダウンロードし、chmod で権限を書き換えてください。公式には Fedora 23 までしかサポートされていませんが、Fodora  25 でもインストールできます。

次に、dnf で必要なものを揃えます。

$ sudo dnf install libGLU-devel libXi-devel libXmu-devel
$ sudo dnf groupinstall "C Development Tools and Libraries"

そしたら、インストールを実行します。Fedora 25 は公式にはサポートされてないので、–override というオプションをつけて実行します。

$ sudo sh cuda_8.0.44_linux.run --override

いきなり 0% と表示されますが、これはインストールの進行状況ではないので待っていても進みません。Ctr + c で読み飛ばして、accept と入力してください。

インストール時にドライバーをインストールするか聞かれますが、No と答えてください。前回の記事でドライバーのインストールをしているので、今回はインストールしなくて OK です。残りの質問は全て OK と答えてください。CUDA ToolKit に含まれている nVIDIA のドライバーのバージョンは少しだけ古いものです。

インストールが完了したら path に下記のものを書き加えてください。

PATH=$PATH:/usr/local/cuda/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

この後、少し cuda のファイルを書き換える必要があります。

Fedora 25 では、gcc のバージョンは 6.3.1 であり、CUDA ToolKit 8.0 が公式に推奨しているものではありません。 /usr/local/cuda-8.0/include にある host_config.h というヘッダーファイルを開いてください。

$ sudo vi /usr/local/cuda-8.0/include/host_config.h

そして、117 行目を書き換えます。117 行目を表示するには ” :117 ” です。

$ #if __GNUC__ > 8

続いて、sample ファイルの入っているフォルダを開き、/1_Utilities/deviceQuery ディレクトリに移動し、makefile を開きます。そして 115 行目を以下のように変更します。

$ CCFLAGS := -std=c++98

そしたら、make コマンドで makefile を実行します。その後、

$ sudo optirun ./deviceQuery

を実行してください。bumblebee を設定していない人は optirun は必要ありません。

再起動して、きちんと GUI が起動すればインストール完了です。

nvcc –version と入力して CUDA ToolKit 8.0 となっていれば成功です。

実際には、どのように使うのか?

自分で並列処理プログラムを書いて CUDA でコンパイルして実行する、または、分子動力学計算などを GPU で実行すると言ったところが身近な使い方だと思います。また、最近はいろいろなライブラリーを利用して Deep Learning しているというブログもよく見かけます。

分子動力学計算に使う人は、理化学研究所が出しているベンチマークが参考になると思います。GPU による加速に関しては、Amber が最も大きな恩恵を受けているようです。5 倍ほど速くなっています。GROMACS はGPU 使ってもそれほど 1.5 倍ほどしか加速してないように思われます。

AMber の各 GPU 使用時のベンチマークはこちらのページに載っています。現実的な範囲で考えると、個人で購入できるのは GTX-1080 (約 7 万円) や Titan-X (約 18 万円) まででしょうか?研究費が潤沢な方は Tela k40 とか買えば良いのではないでしょうか?

でも、ここまでのスペック求めるなら、電源の増設や熱問題も解決しないといけないので、どこかの研究所のスパコンの利用申請をすることをお勧めしますが。。。

最近は、

  • さくらインターネットの高火力コンピューティング
  • Amazon EC2 P2 Instances

などの GPU 並列計算用サーバーをレンタル利用することもできます。。。が、結構高いです。

キーワード

次回の記事では、並列計算によく登場するキーワード CUDA, cuDNN, cuBLAS, Torch, Theano, Caffe などについてまとめたいと思います。

参考文献

関連する記事

管理人: