LoginSignup
3
6

More than 3 years have passed since last update.

nvidia cudaセットアップ

Last updated at Posted at 2021-01-09

Ubuntu 20.04LTSに、NVIDIAドライバ(version 450)、CUDA11対応のCUDA ToolkitcuDNN SDK 8.0.4をインストールする方法をメモしておきます。TensorFlowを動かすのが目的です。

image.png
https://www.tensorflow.org/install/gpu

nouveauをblacklistする

インストール直後はOSSのnouveauドライバがロードされています。

$ lsmod | grep nouveau
nouveau              1949696  1
mxm_wmi                16384  1 nouveau
video                  49152  1 nouveau
ttm                   106496  2 drm_vram_helper,nouveau
drm_kms_helper        184320  4 ast,nouveau
i2c_algo_bit           16384  2 ast,nouveau
drm                   491520  8 drm_kms_helper,drm_vram_helper,ast,ttm,nouveau
wmi                    32768  2 mxm_wmi,nouveau

CUDAを使えるようにするにはNVIDIAのドライバが必要なので、nouveaublacklistに記載し、initramfsからも抜いてNVIDIAのドライバが使えるようにします。再起動後にnouveauがロードされていないのを確認します。

$ sudo echo "blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf
$ sudo echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist-nouveau.conf
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-5.8.0-36-generic
$ sudo reboot
$ lsmod | grep nouveau
$ 

インストールするドライバのバージョンを確認する

次にubuntuで配布しているドライバのバージョンを確認します。

$ ubuntu-drivers devices
== /sys/devices/pci0000:5d/0000:5d:00.0/0000:5e:00.0 ==
modalias : pci:v000010DEd00001DB4sv000010DEsd00001214bc03sc02i00
vendor   : NVIDIA Corporation
model    : GV100GL [Tesla V100 PCIe 16GB]
driver   : nvidia-driver-450 - distro non-free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-460 - distro non-free recommended
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-440-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin
$
$
$ sudo apt info nvidia-driver-450 | grep -i version

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Version: 450.102.04-0ubuntu0.20.04.1
$
$
$ sudo apt info nvidia-driver-450-server | grep -i version

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Version: 450.80.02-0ubuntu0.20.04.3
$

NVIDIAのウェブサイトを確認すると450.80.02を配布しているので、このバージョンをインストールできるnvidia-driver-450-serverをインストールすることにします。

image.png

image.png

ドライバのインストールと起動確認

ドライバをインストールして、リブート後にnvidia-smiでドライバの起動確認します。

$ sudo apt install nvidia-driver-450-server
$ sudo reboot
$ 
$ lsmod | grep nvidia
nvidia_uvm           1003520  0
nvidia_drm             49152  0
nvidia_modeset       1183744  1 nvidia_drm
nvidia              19718144  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        217088  5 drm_vram_helper,ast,nvidia_drm
drm                   552960  7 drm_kms_helper,drm_vram_helper,ast,drm_ttm_helper,nvidia_drm,ttm
$ 
$ nvidia-smi 
Fri Jan  8 16:11:05 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100-PCIE...  Off  | 00000000:5E:00.0 Off |                    0 |
| N/A   33C    P0    37W / 250W |      0MiB / 16160MiB |      4%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
$

CUDA Toolkitのインストール

次にCUDA Toolkitをインストールするのですが、Ubuntuではまだ11.0を配布していません。

$ sudo apt info nvidia-cuda-toolkit | grep -i version

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Version: 10.1.243-3
$ 

NVIDIAのウェブサイトに行き、Ubuntu 20.04を選ぶと表示されるインストール手順を実行します。

image.png

インストールのコマンドはcuda-11-0のようにバージョンを指定する必要があります。これなしで実行したらcudaの11.2がインストールされてしまいました。

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get install cuda-11-0
$ sudo reboot

リブート後、CUDA Toolkitがちゃんとインストールできているかnvcc -Vコマンドで確認します。入っていないと言われるのですが、パスが通っていないようなので通します。

$ nvcc -V

Command 'nvcc' not found, but can be installed with:

sudo apt install nvidia-cuda-toolkit

$ /usr/local/cuda/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Wed_Jul_22_19:09:09_PDT_2020
Cuda compilation tools, release 11.0, V11.0.221
Build cuda_11.0_bu.TC445_37.28845127_0
$
$ echo "export PATH="/usr/local/cuda/bin:$PATH" >> /etc/bash.bashrc

cuDNNのインストール

cuDNN SDK 8.0.4をNVIDIAのウェブサイトからダウンロードします。ダウンロードにはNVIDIAデベロッパーアカウント(無料登録)が必要です。

image.png

Ubuntu 20.04用のダウンロードがないのでcuDNN Library for Linux(x86_64)をダウンロードします。解凍してみるとフォルダ2個にヘッダーファイルやライブラリが入っているものの、コピー先の指示がありません。txtファイルはライセンス契約書です。。。

$ ls
include  lib64  NVIDIA_SLA_cuDNN_Support.txt
$
$ ls include/
cudnn_adv_infer.h  cudnn_cnn_infer.h  cudnn_ops_infer.h
cudnn_adv_train.h  cudnn_cnn_train.h  cudnn_ops_train.h
cudnn_backend.h    cudnn.h            cudnn_version.h
$
$ ls lib64/
libcudnn_adv_infer.so        libcudnn_cnn_train.so.8.0.4
libcudnn_adv_infer.so.8      libcudnn_ops_infer.so
libcudnn_adv_infer.so.8.0.4  libcudnn_ops_infer.so.8
libcudnn_adv_train.so        libcudnn_ops_infer.so.8.0.4
libcudnn_adv_train.so.8      libcudnn_ops_train.so
libcudnn_adv_train.so.8.0.4  libcudnn_ops_train.so.8
libcudnn_cnn_infer.so        libcudnn_ops_train.so.8.0.4
libcudnn_cnn_infer.so.8      libcudnn.so
libcudnn_cnn_infer.so.8.0.4  libcudnn.so.8
libcudnn_cnn_train.so        libcudnn.so.8.0.4
libcudnn_cnn_train.so.8      libcudnn_static.a
$

ググったら公式ドキュメントがすぐに見つかり、コピー先の指定とファイル権限の変更の指示がありました。パスも通しておきます。

$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
$ echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> /etc/bash.bashrc
$ echo 'export LD_LIBRARY_PATH="/usr/lib/cuda/include:$LD_LIBRARY_PATH"' >> /etc/bash.bashrc

インストールがちゃんとできたかの確認にはmnistCUDNNをコンパイルするらしい。必要なファイルはcuDNN Code Samples and User Guide ~にあるらしいので、Ubuntu18.04用のdebファイルをダウンロードしてきて解凍します。

$ mkdir libcudnn8-samples
$ dpkg-deb -x libcudnn8-samples_8.0.4.30-1+cuda11.0_amd64.deb libcudnn8-samples
$
$ cd libcudnn8-samples/usr/src/cudnn_samples_v8/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
mnistCUDNN 
Executing: mnistCUDNN
cudnnGetVersion() : 8004 , CUDNN_VERSION from cudnn.h : 8004 (8.0.4)
Host compiler version : GCC 9.3.0

There are 1 CUDA capable devices on your machine :
device 0 : sms 80  Capabilities 7.0, SmClock 1380.0 Mhz, MemSize (Mb) 16160, MemClock 877.0 Mhz, Ecc=1, boardGroupID=0
Using device 0
...
...
0.0000012 0.0000006 

Result of classification: 1 3 5

Test passed!
$

無事コンパイルに成功しました。これでCUDAの設定は完了です。

3
6
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
3
6