Ubuntu 16.04にnVidia GPUドライバーとCUDAをインストールする

この記事のまとめ:
  • Ubuntu 16.04環境でのnVidia GPUカードのドライバーのインストール方法をまとめています。
背景:

Linux (Ubuntu 16.04)環境でこれまでnVidia製GPUを使ってマイニングを行っていましたが、GPUカードを追加したらこれまで使えていたnVidia GPUのドライバーを認識しなくなったのでいちから入れ直したところ、結構手こずったのでドライバーとCUDA SDKのインストール方法を残しておきます。

PC構成

GPUカード1枚のときは、iGPUを使ってオンボードGPUで映像出力をしていたのですが、2枚に増設するとオンボードGPUからの映像出力がされなくなりました。さらに、そのあと1枚に戻してもオンボードGPUから出力されず、起動後OSが立ち上がらないという謎の現象が起こり、ハマりました。

結果的に、iGPUはDesableにしてメインのGPUカード(ASUS DC2O6G)から映像出力しています。そうすると2枚差しでも起動することができました。ただ、そのときになぜかこれまで認識していたnVidiaのドライバーを認識しなくなっていました。

nVidia GPUドライバーのインストール手順

nVidiaドライバーから、CUDAまでの入れ直した手順を下記に記します。

nVidia GPUドライバーをダウンロード

ひとまず適切なドライバーをnVidiaのホームページからダウンロードしておきます。 ここではまだインストールしません、というか既存のグラフィックドライバーが動いている状態ではできません。追って説明しますが、グラフィックドライバーを止めるとブラウザーからダウンロードできなくなるため、ここで予めダウンロードしておきます。

http://www.nvidia.co.jp/Download/index.aspx?lang=jp

nVidia CUDA Toolkitをダウンロード

GPUドライバーと同様にnVidiaのホームページからCUDA Toolkitをダウンロードしておきます。

https://developer.nvidia.com/cuda-downloads

すべてのnVidiaとCUDA関連のパッケージを削除する

(もし、OSのクリーンインストール後など、nVidia GPUドライバーがインストールされていない場合はこの手順を飛ばして構いません。)

$ sudo apt-get remove nvidia*
$ sudo apt-get remove cuda*
$ sudo apt autoremove
nouveauカーネルドライバーを使用しないカーネルのビルドを行う

カーネルのビルド用に必要なパッケージをインストールします。

$ sudo apt-get install dkms build-essential linux-headers-generic

nouveauドライバーをブロックします。

$ sudo sed -e '$ a blacklist nouveau' /etc/modprobe.d/blacklist.conf
$ sudo sed -e '$ a blacklist lbm-nouveau' /etc/modprobe.d/blacklist.conf
$ sudo sed -e '$ a options nouveau modeset=0' /etc/modprobe.d/blacklist.conf
$ sudo sed -e '$ a alias nouveau off' /etc/modprobe.d/blacklist.conf
$ sudo sed -e '$ a alias lbm-nouveau off' /etc/modprobe.d/blacklist.conf

カーネルnouveauを使用しないようにします。

$ echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

新しいカーネルをビルドします。

$ sudo update-initramfs -u
システムを再起動する
$ sudo reboot
Virtual consoleを起動する

このあと、X11を停止するため、Virtual consoleを起動してログインします。 ログイン画面でAlt+Ctrl+F1を押下するとVirtual consoleを起動できます。

X11を停止する
$ sudo /etc/init.d/lightdm stop
nVidiaドライバーをインストールする

nVidiaのドライバーをダウンロードしたディレクトリーに移動し、下記のコマンドを実行します。バージョン番号は一例です。

$ sudo ./NVIDIA-Linux-x86_64-384.69.run
$ sudo apt update

ここまででnVidiaドライバーのインストールは完了です。 リブートして通常起動できるかを確認し、nvidia-smiコマンド等で正しくGPUを認識しているか確認します。

CUDA SDKをインストールする

CUDA Toolkitをダウンロードしたディレクトリーに移動し、下記のコマンドを実行します。バージョン番号は一例です。

$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-rc_9.0.103-1_amd64.deb
$ sudo apt update
$ sudo apt install cuda-9-0

問題がなければ下記のコマンドでCUDAのバージョンを確認できるはずです。

$ nvcc -V

ここで、インストールしたバージョンと異なるバージョンが表示された場合には、パスが通っていない可能性があります。

通常であれば、usr/local/配下にCUDAディレクトリがあるのでそれを確認し、そのパスをもとに.bashrcに下記のように記載します。

export PATH=/usr/local/cuda-9.0/bin:$PATH
export CUDA_ROOT=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CPATH=/usr/local/cuda-9.0/include:$CPATH

記載が終わったら、読み込みを行って完了です。

$ . ~/.bashrc
nVidiaドライバーを再インストールする

私の環境だけかもしれませんが、CUDAをインストールするとnVidia GPUが再度認識しなくなったり、nvidia-smiがなくなったりしていたため、上の手順でnVidiaドライバーをインストールし直します。

これでnVidia GPUのドライバーのインストールは完全に完了です。

参考

本記事を作成するに辺り、下記を参考にしました。


今回は以上です。 最後まで読んでいただき、ありがとうございます。
関連記事

GPUチューニングも一緒にやってみるのはどうですか?




コメント

このブログの人気の投稿

Python + dlibで顔検出を行う

LinuxでのnVidia GPUのオーバークロック・電力チューニング方法