物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

Ubuntu 18.04 LTS UEFIにNVIDIA CUDAとcuDNNをインストールする方法

ドライバのバージョンの衝突

phst.hateblo.jp

の記事を書いてから思った。CUDAに付属しているNVIDIAのドライバと、NVIDIAが出してる最新ドライバのバージョンは違うから、バージョン衝突が起きるんじゃない? と。

$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch

と出るんですね。再起動すれば治るんだが、せっかくなのでクリーンインストールしてみた。以下、前日の記事との重複もあるが、最初から作業ができるように書いておく。

Ubuntu 18.04 LTSのインストール

Windowsで使えるRufus.exeで、USBフラッシュメモリUbuntu 18.04.3 LTS デスクトップ版を入れた。

f:id:onsanai:20200211023632p:plain:w300

M/BのUSB2.0のポートに差し、UEFIでbootする*1

f:id:onsanai:20200211020431p:plain

そのまま進むと

GNU GRUB version 2.02

 Try Ubuntu without installing
*Install Ubuntu
 OEM install (for manufactures)
 Check disk or defects 

と出てくるので、Install Ubuntuを選択した状態でeを押す。

linuxから始まる行の最後、---のあとにスペースを入れてさらにnomodesetと入れる。この設定をしておかないと、画面が壊れたみたいになってインストールが進まない。(画面上で文尾に\が入っているのはwrapの意味なので実際には入力しない)

f:id:onsanai:20200211020955p:plain

F10でブートに進み、英語版をインストールする。

English-> Continue
Japanese -> Japanese -> Continue
Normal installation or Minimal installation
Download updates while installing Ubuntu -> Continue
Erase disk and install Ubuntu -> Install Now -> Continue
Tokyo -> Continue
User name, Hostname, and password を設定する

Ubuntuの更新と準備

以下のコマンドで、アップデート、アップグレード、ビルドツールのインストールしておく。

sudo apt update
sudo apt upgrade
sudo apt install build-essential

CUDAとドライバのインストール

developer.nvidia.com

から、使いたいCUDAのバージョンを選ぶ。OSやCPUを選ぶ。Installer Typeは dev(local) が良いだろう。 runtime(local) はこちらの環境だとエラーが出てうまくいかなかった*2。 とにかく、書かれているコマンド通り1行づつ実行する。下記は、CUDA10.2の例、apt-getをaptに書き換えた。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt update

cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb は約1.8GBあるので、ダウンロードにかなり時間がかかる。

sudo apt -y install cuda

を実行すると、いくつかの問いが出てくる。

UEFIセキュアブートが有効になってるから、サードパーティー製ドライバを入れるときは Enroll しなきゃいけないよ f:id:onsanai:20200211131335p:plain

パスワードを8文字~16文字で作成する。何でも良いはず。再起動後まで覚えておく。 f:id:onsanai:20200211131355p:plain

パスワードの再確認 f:id:onsanai:20200211131358p:plain

完了して再起動 f:id:onsanai:20200211131405p:plain

sudo reboot

MOKマネージメント画面。青背景で Press any key to perform MOK management と出てくる。

f:id:onsanai:20200211022853j:plain

ので素早く何かを押す。

Enroll MOK ->
Continue ->
Yes ->
パスワード ->
Reboot ->

と選択、ドライバをインストール中に作ったパスワードを入力する。

再起動後、インストールが正しく行われたことを確認するために、 nvidia-smi nvcc -Vを実行する。

f:id:onsanai:20200211140315p:plain

nvcc にはPATHが通っていないことが分かる。なので、~/.bashrc の末尾にPATHとライブラリPATHを追加する。

f:id:onsanai:20200211131420p:plain

## CUDA and cuDNN paths
export PATH=/usr/local/cuda-10.2/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:${LD_LIBRARY_PATH}

~/.bashrc を読み込む

$ source ~/.bashrc

これで、作業しているユーザーは、nvccコマンドが使えるようになる。

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

f:id:onsanai:20200211140758p:plain

cuDNNインストール

https://developer.nvidia.com/rdp/cudnn-download からNVIDIA CUDA Deep Neural Network library (cuDNN)をダウンロードする。アカウント作成とライセンスへの同意が必要。

f:id:onsanai:20200211131425p:plain

Ubuntu 18.04用のDebファイルを3つダウンロードしておく

f:id:onsanai:20200211131430p:plain

dpkg でインストール。apt install ではうまくいかなかった。

sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.2_amd64.deb

サンプルプログラムのコンパイルと実行

cuda-install-samples-10.2.sh ~
cd ~/NVIDIA_CUDA-10.2_Samples/
make -k
cd 2_Graphics/volumeRender
./volumeRender

マウスでグリグリできる3DのCGが出てくる f:id:onsanai:20200211131435p:plain

アンインストール

CUDAのアンインストール

sudo apt remove cuda-10-2
sudo apt autoremove

cuDNNのアンインストール

sudo apt remove libcudnn7 libcudnn7-dev libcudnn7-doc

参考文献、というかパクリ元

qiita.com

*1:写真は既にUbuntuを入れた後でのクリーンインストールなのでUbuntuが見えてる

*2:runtimeだとNVIDIAのドライバをインストールするかどうか選択できるが、選択しなくてもエラーが出た。エラーの原因を知ってる人は教えてほしい。