項目CUDA DriverCUDA toolkit libraryCuDNN library
名前libcuda.solibcudart.so (CUDA Runtime Library の略で cudart)libcudnn.so
バージョンの例515 (例: 515.48.07)11.7 (例: 11.7.99)8.9 (例: 8.9.2)
説明nvidia.ko などの、ホストのカーネルモジュールと通信して GPU を動かす 最下層のコンポーネント。GPU を利用するための 高レベルの API を提供するライブラリ。ディープラーニングで多用される畳み込みプーリングなどの演算を GPU で超高速に実行するためのライブラリ。CUDA Toolkit の上に構築される。
制限/互換性ホストのカーネルモジュールとバージョンがマッチしていないといけない。よって、SIF に自前の CUDA driver を入れるのは無意味Driver(左)より古いものなら何でも使える。なぜなら、より新しい driver は古い toolkit に後方互換性を持っているから。対応する CUDA Toolkit のバージョンが厳密に決まっている。Toolkit のバージョンに合わせた CuDNN バージョンを選ぶ必要がある(例:CUDA 11.7 には CuDNN 8.x 系)。Toolkit より古いものなら何でも使えるというわけではない

CUDA/CuDNN はただのライブラリであり、Driver より古ければバージョンに制約はないので、NVIDIA公式のDockerhub から特定のバージョンのものが入ったものをインストールできる。

  • Pytorch は対応している CUDA toolkit (従って CuDNN) のバージョンがコンパイル時に厳密に決まってしまうので、公開されているPytorch の pre-built binariesのリスト を確認し、使いたい Pytorch が対応しているバージョンの CUDA を持つ環境を (singularity などで) 使うのが楽
  • 対応しているものがなければ 自分でビルドする しかないが、これは逆に言うと好きなバージョンの CUDA の環境を使えるということでもある

Command to update CUDA drivers

https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/index.html#ubuntu
まず apt list --installed | grep nvidia で現在入っているパッケージを確認しておく

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install cuda-drivers
# or, to install compute-only to limit the footprint and dependencies on the system...
apt -V install libnvidia-compute-575 nvidia-dkms-575 # その時点での最新のバージョンが何であるかを確認してインストールする

Command to update CUDA toolkit library

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install cuda-toolkit

misc

cf. Failed to initialize NVML を再起動せずに解決する方法