GPUの型番にあったCUDAバージョンの選び方
はじめに
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は、以下の公式サイトから調べることができます。
例えば使用するGPUがGeforce RTX 3080
の場合、Compute Capabilityは8.6
となります。
2. CUDA Version
CUDA(Compute Unified Device Architecture)は、NVIDIAのGPUを利用して高度な計算処理を高速に実行するためのアーキテクチャです。ディープラーニングを行う上で、このアーキテクチャは不可欠です。
Nvidia公式ページでまとまっているページが見つからなかったので、ここではWikipediaに頼ることにします。
上記のリンクを開くと、以下のような表があるかと思います。
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の対応表があります。
以下の表から、CUDA 12.2をUbuntuで使用する場合、Nvidia Driverはバージョン 535.54.03 以上が必要であることがわかります。これにより、ドライバがこのバージョン以上であれば、問題なく動作すると考えられます。
なおNvidiaDriver自体は、以下のリンクからダウンロードできます。
Dockerイメージを用いたCUDA/TensorRT環境構築
以上の内容で、GPUの種類に合わせてNvidia DriverおよびCUDAのバージョンを選定することができます。あとはPCにインストールするだけです。
ただし、私自身はローカルPCにCUDAをインストールしていません。ではどの様にしているかというと、ローカルPCにはNvidia Driverのみをインストールし、CUDAについてはNvidia公式が提供するDockerイメージを使用しています。
この方法を採用することで、ローカルPCの環境をクリーンに保ちつつ、開発タスクに応じて必要なCUDAのバージョンを柔軟に選択することができます。そして何よりややこしいインストール手順が省くことができます。
CUDA環境が整備されたDockerイメージについては、以下のリンクからアクセスできます。
さらに、TensorRT環境を含むDockerイメージも提供されています。
TensorRT Container Release Notesには比較表もあるので、こちらから適切なDockerイメージを選択すると良いです。
最後に
皆様の参考になれば幸いです。間違った内容があればコメントいただけると助かります。
Discussion