CodeLab技術ブログ

プログラミング技術まとめ

CentOS7+NVIDIA Driver+CUDAのインストールは結構めんどくさい。

古いNVIDA製のグラフィックボードが余っていたので、同じく余っていた古いPCに入れてpython+Tensowflow+CUDAのテスト環境を作ってみようかと初めて見たのだが、これがいまいち手間取ったのでメモっておく。

NVIDA GeforceGTX

NVIDA GeforceGTXロゴ

Windowsとかならドライバを入れて順番にセットアップファイルを実行していけばいいのだが、Linux系の場合はビルドが必要なようで、gccなどの開発用ツールを入れたり、そのほかライブラリもいろいろ入れないといけません。

ちなみに環境は
CentOS7+GTX560+Intel C2D
とかなり古めの構成です。

グラフィックドライバのインストール

とりあえず、最近のOSなら何もしなくても映ります。
CUDAの動作に必要なのかどうかわかりませんが、ここはとりあえず公式のドライバを入れてみることにしました。

1)ドライバのダウンロードとCUIログインモードに変更
まず、NVIDIAのHPに行ってドライバのダウンロードをしましょう。
NVIDIA-Linux-x86_64-??????.run というようなファイルがダウンロードされますのでどこか読めるところに保存しておきましょう。
また、表示がうまくいかなくなった場合に備え、外部からSSHログインができるように設定しておくと安心です。

次に、起動時にGUIでログインしている場合は、ドライバのインストールに失敗すると面倒なことになるのでとりあえずランレベルを下げてコンソールログインにしておきます。

# systemctl set-default multi-user.target
# systemctl get-default
multi-user.target

multi-user.targetと表示されればOKです。再起動するとCUIモードでログインできるはずですので、再起動してみましょう。

2)現在のドライバを無効にする
次にのドライバを無効にします。
デフォルトのものはいったんバックアップとして残しておいて、デフォルトのドライバをロードしない起動イメージを作成します。
#mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
#dracut --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)

この後、再起動しても自動的にデフォルトの設定が復活してしまうので、それを禁止する設定を入れます。
下記のように二つのファイルに設定を記載します。

# vi /etc/modprobe.d/modprobe.conf
blacklist nouveau
# vi /etc/modprobe.d/nouveau_blacklist.conf
blacklist nouveau

3)NVIDA製ドライバをインストール
最初の項目でダウンロードした.runファイルを実行すると自動的に作業が始まります。
が、ここで様々なものが必要になるため、メッセージに合わせてyumでインストールしていきましょう。

途中、いくつか選択肢が出ますが、まぁ見ればわかるかと思います。
Would you like to run the nvidia-xconfig utility to automatically update your …。
は、設定ファイルを書き換えるかどうかということですので、YESを選択しておくといいでしょう。

4)設定を元に戻す
インストール完了後、再起動して
#startx
でGUIが起動できればおそらく大丈夫だと思います。

GUIのメニューのその他の中にNVIDIA X Server Settings というアプリが入っていました。
Windowsにもあるようなやつですね。これでちゃんと認識していたら大丈夫でしょう。

必要なら、ランレベルを下記のコマンドで元に戻します。
graphical.targetと表示されていれば変更完了なので、リブートして確認します。

#systemctl set-default graphical.target
#systemctl get-default
graphical.target
#reboot

次にCUDAのインストールです
まず、NVIDAのHPで自分のOSにあったrpmファイルをダウンロードします。
CentOS7の場合は、cuda-repo-rhel7-x.x.xx-x86_64.rpm というような名前だと思います。
あとは、ダウンロードしたページにあるように・・・
#rpm -i cuda-repo-rhel7-x.x.xx-x86_64.rpm
#yum clean all
#yum install cuda

という感じでインストールすれば問題ないのですが、ここでもやっぱりいろいろ足りないものがあるようで、これもyumでインストールしていきます。

たしかipaフォント関連でモジュールの競合があった気がしますが、いったん消して置きましたが、cudaインストール時に勝手に別のやつがインストールされたようだった。再起動後特に日本語の表示で問題はなかったので問題はなさそうです。

ちょっとこまったのがdkmsというモジュールでepel-releaseリポジトリから入れなければならないようです。

#yum install epel-release
#yum install dkms

cuda本体も数ギガ単位でファイルがあるので、気長に待ちましょう。

インストール終了後

#/usr/local/cuda/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61

といった感じでバージョンが表示できればとりあえず終了かと思います。

もしコンパイルなどをするのであれば、必要であればライブラリを読みこめるようにexportもしておいた方がいいかもしれません。

#vi .bashrc
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

というわけで完了です。

あとでTensorflowも入れてみよう!

コメントは受け付けていません。