AWS Deep Learning AMI (DLAMI)に導入されているCUDAのバージョンを切り替えてみた。

2020.12.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コンサル部@大阪オフィスのTodaです。

EC2で高速コンピューティング(G4, G3)のインスタンスにはNVIDIA社のGPUが搭載されてるものがございます。
利用するAMIによっては複数バージョンのCUDAが用意されている場合があり、切換をする事ができます。
今回、切換方法をご案内します。

やりたいこと

AMIに導入されているCUDAのバージョンを変更する。
※利用されるAMIによって導入されているCUDAバージョンは変わります。
今回は AMI Deep Learning AMI (Ubuntu 18.04) Version 38.0 [ami-02ef140681509d446] を利用しています。

現在設定されているCUDAを確認

下記コマンドを利用する事で現在設定されているCUDAのバージョンが確認することができます。

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

利用可能なCUDAを確認

下記コマンドを利用する事で導入されているCUDAのバージョンを確認することができます。
確認をしたところ私の環境では5つのバージョンが利用できるようです。

$ ls -l /usr/local/ | grep "cuda"
lrwxrwxrwx  1 root root   20 Dec 18 09:00 cuda -> /usr/local/cuda-10.0
drwxr-xr-x 22 root root 4096 Nov 25 03:23 cuda-10.0
drwxr-xr-x 19 root root 4096 Nov 25 03:18 cuda-10.1
drwxr-xr-x 20 root root 4096 Nov 25 03:21 cuda-10.2
drwxr-xr-x 20 root root 4096 Nov 25 03:16 cuda-11.0
drwxr-xr-x 19 root root 4096 Nov 25 03:12 cuda-11.1

CUDAの切り替え

CUDAのバージョン切換は同ディレクトリにある「cuda」のリンクを切り替えることで対応が可能です。
現在、cuda-10.0になっているリンクを削除してcuda-11.0に変更してみます。

$ sudo unlink /usr/local/cuda
$ sudo ln -s /usr/local/cuda-11.0 /usr/local/cuda

切換後、再度バージョンを確認してみます。

$ 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

バージョンが11に変わっている事が確認できました。

注意点

nvidia-smiのバージョン表示について

nvidia-smiコマンドで表示されるCUDAバージョンは設定されているCUDAバージョンが表示されませんのでご注意ください。

$ nvidia-smi
+-----------------------------------------------------------------------------+
| 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 |
** 以下略 **

表示されているCUDAバージョンは、 ドライバに対して互換性が高いCUDAバージョンを表示する仕様になっております。 上記の場合はドライババージョン:450.80.02 で互換性の高いCUDAバージョンは 11.0 という内容になります。

■ nvidia-smi doesn’t show CUDA version even after installation
https://forums.developer.nvidia.com/t/nvidia-smi-doesnt-show-cuda-version-even-after-installation/68738

Also, be aware that the CUDA VERSION displayed by nvidia-smi associated with newer drivers is the DRIVER API COMPATIBILITY VERSION. It does not indicate anything at all about what CUDA version is actually installed. A 410.72 driver will display CUDA VERSION 10.0 even when no CUDA toolkit is installed.

設定されているCUDAのバージョンを確認する場合は、下記コマンドをご利用ください。

$ nvcc -V
OR
$ cat /usr/local/cuda/version.txt

さいごに

今回はAWS Deep Learning AMI (DLAMI)に導入されているCUDAのバージョンを変更してみました。
少しでもお客様の作りたい物の参考になればと考えております。