🍇

GPUの型番にあったCUDAバージョンの選び方

2024/05/01に公開

はじめに

GPUを利用したディープラーニング環境を構築する際、これまではNvidia DriverやCUDAのバージョンを何となくで選んでいました…
そこで、どのようにこれらのバージョンを選定すべきか整理しましたので紹介します。また後半にはこれら環境が整ったDockerイメージを紹介します。

手順

1. Compute Capability

まずは使用するGPUのCompute Capabilityを調べる必要があります。
Compute Capabilityとは、NVIDIAのCUDAプラットフォームにおいて、GPUの機能やアーキテクチャのバージョンを示す指標です。この値によって、特定のGPUがどのCUDAにサポートしているかが決まります。Compute Capabilityは、7.x, 8.xといったようにバージョン管理されています。

GPU毎のCompute Capabilityは、以下の公式サイトから調べることができます。

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

例えば使用するGPUがGeforce RTX 3080の場合、Compute Capabilityは8.6となります。

2. CUDA Version

CUDA(Compute Unified Device Architecture)は、NVIDIAのGPUを利用して高度な計算処理を高速に実行するためのアーキテクチャです。ディープラーニングを行う上で、このアーキテクチャは不可欠です。

Nvidia公式ページでまとまっているページが見つからなかったので、ここではWikipediaに頼ることにします。

https://en.wikipedia.org/wiki/CUDA#GPUs_supported

上記のリンクを開くと、以下のような表があるかと思います。


Geforce RTX 3080の場合を想定して解説していきます。
まず下表によると、RTX3080の場合、Micro-architectureはAmpereということがわかります。(またこの表からもCompute Capabilityは8.6であることは確認できます)。
次に上表を確認します。Ampereの列においてCompute Capabilityが8.6となっているマスではCUDAは11.1-11.4となっており、これらバージョンが利用可能とわかります。またAmpereの列において、8.6と記載されたマスより下の行も緑枠に塗られており、これらCUDAバージョンについても利用可能となります。つまり11.1-12.4まで使用可能とわかります。

3. Nvidia Driver

Nvidia GPUを動作させるためにはNvidia Driverをインストールする必要があります。
以下のページにCUDAとDriverの対応表があります。

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

以下の表から、CUDA 12.2をUbuntuで使用する場合、Nvidia Driverはバージョン 535.54.03 以上が必要であることがわかります。これにより、ドライバがこのバージョン以上であれば、問題なく動作すると考えられます。

なおNvidiaDriver自体は、以下のリンクからダウンロードできます。

https://www.nvidia.co.jp/Download/index.aspx?lang=jp

Dockerイメージを用いたCUDA/TensorRT環境構築

以上の内容で、GPUの種類に合わせてNvidia DriverおよびCUDAのバージョンを選定することができます。あとはPCにインストールするだけです。

ただし、私自身はローカルPCにCUDAをインストールしていません。ではどの様にしているかというと、ローカルPCにはNvidia Driverのみをインストールし、CUDAについてはNvidia公式が提供するDockerイメージを使用しています。
この方法を採用することで、ローカルPCの環境をクリーンに保ちつつ、開発タスクに応じて必要なCUDAのバージョンを柔軟に選択することができます。そして何よりややこしいインストール手順が省くことができます。

CUDA環境が整備されたDockerイメージについては、以下のリンクからアクセスできます。
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda

さらに、TensorRT環境を含むDockerイメージも提供されています。
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorrt

TensorRT Container Release Notesには比較表もあるので、こちらから適切なDockerイメージを選択すると良いです。

最後に

皆様の参考になれば幸いです。間違った内容があればコメントいただけると助かります。

Discussion