nvidia-smiとnvccで表示されるCUDAバージョンが異なる件

1 min read読了の目安(約1700字

CUDA 10.2のバージョンを指定してインストールしようとしたら、nvidia-smiとnvccコマンドで表示されたバージョンが異なり混乱したので情報整理。

環境

  • Amazon EC2 g4dnインスタンス
  • Ubuntu 18.04 LTS

インストール方法

Cuda10以降は下記ダウンロードページからCudaをダウンロードできる。

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

今回インストールタイプは、NVIDIAのパッケージリポジトリを登録してパッケージマネージャ経由でインストールをするdeb(network)を指定した。
表示されているコマンドのままだと最新版がインストールされてしまうため最後の行だけ変更。

$ 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
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get -y install cuda-10-2  ←デフォルトはcudaになってるので10.2をインストールするように書きかえる

バージョン確認方法をググるとnvidia-smiとnvcc -Vの2パターンがあった為どちらも確認すると、下記の通りnvidia-smiは最新のバージョンが表示されていた。

  • nvidia-smiのCudaバージョン:11.2
  • nvccのCudaバージョン:10.2

2つのコマンドの違い

nvidia-smi(The NVIDIA System Management Interface)

NVIDIA GPUデバイスの管理や監視を行うためのコマンドラインユーティリティで、NVIDIAドライバーによってインストールされ、NVIDIAドライバーの情報も表示される。
nvidia-smiで表示されるCUDAバージョンはドライバーが対応している最大のCUDAバージョンが表示されているが、ドライバーは下位互換があるため、指定バージョンのCUDAを使用し続ける場合でも後続のドライバーリリースも引き続き利用できる。

CUDAバージョンとドライバーバージョンの対応は下記で確認できる。

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

nvcc

CUDAToolKitとともにインストールされるコンパイラドライバー。
-V オプションでCUDAToolKitのバージョンが表示される、つまりこちらがCUDAのバージョン。

結論

CUDAのバージョンを確認する場合はnvccコマンドを使用する。
nvidia-smiはNVIDIAドライバーに対応している最大のCUDAバージョンが表示される。

補足

もしドライバーのバージョンも固定したい場合は先にcuda-driversをインストールする。

$ sudo apt install cuda-drivers-440

この後cuda-[version]でインストールすると最新のドライバーバージョンにアップデートされるためtoolkitを個別でインストールする。

$ sudo apt install cuda-toolkit-10-2