LoginSignup
4
5

More than 5 years have passed since last update.

Ubuntu14.04にCUDA8.0とChainerをインストール

Last updated at Posted at 2017-04-07

概要

Chainer で GPU を利用できるようにするため、NVIDIA の GPU を利用するためのライブラリ CUDA をインストールしてみました。

環境

  • Ubuntu 14.04 64bit
  • gcc 4.8.4
  • Intel Core i3-2370M
  • NVIDIA GeForce 610M

準備

英語ですが、NVIDIA 本家のインストールガイドはきちんと読んでおいた方がいいと思います。CUDA のインストールはそれなりに落とし穴が多いので。

インストール手順

1. NVIDIA のグラフィックドライバーを導入

Ubuntu の場合、デフォルトで Nouveau というオープンソースのドライバが使われていますが、これが CUDA とは相性が悪く、そのままインストールすると大変なことになるようです。

私は、Software & Updates の Additional Drivers タブで、Nouveau ではなく nvidia-375 という NVIDIA 純正ドライバを選んで Apply Changes ボタンを押したあと、マシンを再起動したところ、うまく動きました(ドライバ名は GPU の種類によって異なるかもしれません)。英語表示で使っているので日本語の画面名がわかりませんが・・・。

image

(ちなみに、NVidia-375 にはバグがあるようで、サスペンド後にウィンドウのボーダーがおかしくなることがあります。その場合は、この記事を参考にしてみてください。どうやら、Compiz 周りの問題らしいです)

2. CUDA Toolkit 8.0 のインストール

NVIDIA 公式サイトからダウンロードしました。私は deb(network) を選びました。最初、ごく小さい deb ファイルをダウンロードして、dpkg -i したあと、本体が自動的にダウンロード、ビルド、デプロイされるようです。

image

インストールは上の画像の解説のとおり、ダウンロードした deb ファイルに対して、dpkg -i ... ; apt-get update; apt-get install cuda するだけです。gcc がらみで問題を起こる場合があるようですが、私の環境 gcc 4.8.4 では問題なくインストールできました。

3. cuDNN のインストール

cuDNN は、NVIDIA 純正のディープラーニングに特化したライブラリで、GPU の性能をさらに引き出すことが可能なようです。本来は、CUDA とセットでインストールすべきところなのですが、今回はインストールできませんでした。実は、NVIDIA の GPU には、Compute Capability という性能の指標があり、これが 3 以上ではないと、cuDNN は使用できないらしいのです。私の使っている GeForce 610M は 2.1 でした(…という話はネットのいろんなところに書き込みがあるのですが、cuDNN の本家サイトでは見つけることができませんでした…)。

私の場合、CUDA + cuDNN + Chainer のインストール自体はうまく行ったものの、その後サンプルコードを走らせたとき、

cupy.cuda.cudnn.CuDNNError: CUDNN_STATUS_ARCH_MISMATCH: b'CUDNN_STATUS_ARCH_MISMATCH'

というエラーメッセージが出て、Capability が足りないことに気づいたのです。

cuDNN のダウンロードには、NVIDIA の Accelerated Computing Developer Program への登録が必要です。無料ですが、英語でいくつかの簡単な質問に答える必要があります。

cuDNN のインストールページに行くと、cuDNN v6.0 Library for LinuxcuDNN v6.0 Runtime Library for Ubuntu14.04(Deb) と2種類のファイルがあります。前者はバイナリーのファイルが何個か入っていて、それを特定のディレクトリーにコピーするだけです。結論からいうと、前者を使ったほうが良さそうです。deb を使うと、Chainer がうまくインストールできませんでした(私の場合、結局、インストールできても、エラーが出て使えなかったわけですが…)

4. Chainer のインストール

すでに Chainer がインストール済みの場合も、インストールし直す必要があります。

$ pip uninstall chainer # インストール済の場合
$ pip install chainer --no-cache-dir

念のため--no-cache-dir を指定して、前回インストールされたときに使ったファイルを使わないようにしたほうがよいかもしれません。

CPU vs GPU 性能比較

Chainer のサンプルコード(MNIST)を走らせてみました。

CPU

$ python train_mnist.py -e 1      
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 1

epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           0.188208    0.100633              0.943217       0.9679                    53.8063       

GPU

$ python train_mnist.py -e 1 -g 0
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 1

epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           0.189797    0.0891953             0.9423         0.9715                    24.1826      

CPUでは約54秒かかっているのに対して、GPUでは24秒とおよそ2倍程度に速くなっていることがわかります。GeForce 610Mはモバイル用の骨董品のように古いGPUなのですが、それでもCPUの2倍速いわけで、GPUのありがたみがよくわかりました。

いずれ性能の高いGPUを入手して、cuDNNも使ってみたいですね。

参考文献

Ubuntu16.04にCUDA8.0とChainerをインストールする
内容だけでなく、タイトルと構成も真似させていただきました。ありがとうございます!

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5