ドライバのバージョンの衝突
の記事を書いてから思った。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 デスクトップ版を入れた。
M/BのUSB2.0のポートに差し、UEFIでbootする*1。
そのまま進むと
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の意味なので実際には入力しない)
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とドライバのインストール
から、使いたい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
しなきゃいけないよ
パスワードを8文字~16文字で作成する。何でも良いはず。再起動後まで覚えておく。
パスワードの再確認
完了して再起動
sudo reboot
MOKマネージメント画面。青背景で Press any key to perform MOK management
と出てくる。
ので素早く何かを押す。
Enroll MOK -> Continue -> Yes -> パスワード -> Reboot ->
と選択、ドライバをインストール中に作ったパスワードを入力する。
再起動後、インストールが正しく行われたことを確認するために、 nvidia-smi
nvcc -V
を実行する。
nvcc
にはPATHが通っていないことが分かる。なので、~/.bashrc
の末尾にPATHとライブラリPATHを追加する。
## 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
cuDNNインストール
https://developer.nvidia.com/rdp/cudnn-download からNVIDIA CUDA Deep Neural Network library (cuDNN)をダウンロードする。アカウント作成とライセンスへの同意が必要。
Ubuntu 18.04用のDebファイルを3つダウンロードしておく
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が出てくる
アンインストール
CUDAのアンインストール
sudo apt remove cuda-10-2 sudo apt autoremove
cuDNNのアンインストール
sudo apt remove libcudnn7 libcudnn7-dev libcudnn7-doc
参考文献、というかパクリ元