2 minute read

Ubuntu Server 24.04 LTS に CUDA Toolkit 12.8 および cuDNN 9.8 をインストールしたときの備忘録

はじめに

Ubuntu Server 24.04 LTS をインストール した実機PCに NVIDIA Driver と CUDA Toolkit 12.8 をインストールする.

PCのスペック:

  • CPU: AMD Ryzen 5950X 16Core/32Threads
  • Memory: DDR4 32GB
  • SSD: 1TB
  • GPU: NVIDIA RTX 3080Ti 12GB

準備

PC には Ubuntu Server 24.04 LTS が既にインストールされているものとする.

バージョンの古い NVIDIA Driver と CUDA Toolkit が既にインストールされている場合は,あらかじめこれらをアンインストールしておく必要がある.

既存の NVIDIA Driver 及び CUDA Toolkit 等のアンインストール

sudo apt --purge remove -y nvidia-*
sudo apt --purge remove -y cuda-*
sudo apt --purge remove -y libcudnn*
sudo apt --purge remove -y cudnn-*
sudo apt autoremove -y

最後のコマンド apt autoremove はパッケージの削除に伴い不要と判断されたパッケージを削除する.

NVIDIA Driver のインストール

nvidia-driver-*のどれをインストールすればよいかは ubuntu-drivers を実行することで分かる.

ubuntu-drivers を使うために ubuntu-drivers-common をインストールする.

sudo apt install -y ubuntu-drivers-common


ubuntu-drivers の確認

sudo ubuntu-drivers --help


インストール可能なGPUドライバー一覧を出力する.

$ sudo ubuntu-drivers --gpgpu list
nvidia-driver-550, (kernel modules provided by linux-modules-nvidia-550-generic)
nvidia-driver-535, (kernel modules provided by linux-modules-nvidia-535-generic)
nvidia-driver-470, (kernel modules provided by linux-modules-nvidia-470-generic)
nvidia-driver-535-server, (kernel modules provided by linux-modules-nvidia-535-server-generic)
nvidia-driver-470-server, (kernel modules provided by linux-modules-nvidia-470-server-generic)
nvidia-driver-570-server-open, (kernel modules provided by linux-modules-nvidia-570-server-open-generic)
nvidia-driver-550-open, (kernel modules provided by linux-modules-nvidia-550-open-generic)
nvidia-driver-535-open, (kernel modules provided by linux-modules-nvidia-535-open-generic)
nvidia-driver-570-server, (kernel modules provided by linux-modules-nvidia-570-server-generic)
nvidia-driver-535-server-open, (kernel modules provided by linux-modules-nvidia-535-server-open-generic)

上の出力は,執筆時点で実際に上記 PC で実行したときのものである.

表示されている中で最も新しく open のついていないドライバー(nvidia-driver-570-server)をインストールする.

sudo apt install -y nvidia-driver-570-server


再起動

sudo reboot

CUDAのインストール

nvidia-smi を実行すると,GPUドライバーが対応している最大のCUDAバージョンが表示される.

$ nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15              Driver Version: 570.86.15      CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| 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  NVIDIA GeForce RTX 3080 Ti     Off |   00000000:07:00.0 Off |                  N/A |
|  0%   32C    P8              9W /  350W |      39MiB /  12288MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

⇒ CUDA バージョンは 12.8

CUDA Toolkit Archive にアクセスし,上で確認したバージョン(12.8)を選択する.
さらに,以下のように選択
Operating System: Linux
Architecture: x86_64
Distribution: Ubuntu
Version: 24.04
Installer Type: deb(network)

CUDA Toolkit 12.8 の場合,インストール方法が以下のように提示されるので,実行する

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


CUDA ライブラリへの Path を通すため,/etc/profile.d/cuda.sh を作成し,以下を記述し保存する.

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

cuda-samples を用いてセットアップができたかどうか確認

CUDA Toolkit の機能をデモするサンプル集をセットアップする.

git clone https://github.com/NVIDIA/cuda-samples.git
sudo apt install cmake (cmakeがインストールされていなければ)
cd cuda-samples
mkdir build && cd build
cmake ..
make -j$(nproc)


デモの実行例
・CUDAデバイスのプロパティの参照

./Samples/1_Utilities/deviceQuery/deviceQuery

・GPU のコピー帯域幅と PCI-e 間のコピー帯域幅を測定

./Samples/1_Utilities/bandwidthTest/bandwidthTest

最後に「Result = PASS」と表示されれば正しく動作している.

cuDNN (CUDA Deep Neural Network library) のインストール

NVIDIA cuDNNにアクセスし,Download cuDNN Libraryに進む.
以下のように選択
Operating System: Linux
Architecture: x86_64
Distribution: Ubuntu
Version: 24.04
Installer Type: deb(network)

cuDNN 9.8.0 の場合,インストール方法が以下のように提示されるので,実行する(上の3行はCUDAインストール時に実行済みなので省略可).

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

NVIDIA Container Toolkit のインストール

Docker コンテナで NVIDIA GPU を利用する場合は NVIDIA Container Toolkit をインストールする必要がある.

まだ,Docker がインストールされていなければ,以下のコマンドでインストールする(https://get.docker.com で配布されているDockerインストール用shellスクリプトを利用).

curl https://get.docker.com | sudo sh


NVIDIA Container Toolkit の手順に従ってインストールする.

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt-get install -y nvidia-container-toolkit


Docker で NVIDIA Container Runtime を認識させる

daemon.json の作成

sudo vi /etc/docker/daemon.json

以下を記述

{
   "runtimes" : {
      "nvidia" : {
         "path" : "/usr/bin/nvidia-container-runtime",
         "runtimeArgs" : []
      }
   }
}

Docker デーモンの設定

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker


サンプルCUDAコンテナを実行して,Docker 内で GPU が動作するか確認する.

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi