【CUDA】GPUの計算能力(Compute Capability)を確認する3つの方法とエラー解決策

問題の概要:CUDA対応GPUの計算能力(Compute Capability)確認の必要性

CUDAを用いたAI開発や深層学習の環境構築において、特にPyTorchやTensorFlowなどのフレームワークをインストール・実行する際、以下のようなエラーメッセージに遭遇することがあります。

RuntimeError: CUDA error: no kernel image is available for execution on the device
torch.cuda.is_available() が False を返す
This version of PyTorch is not compiled with CUDA capability 3.5 support.

これらのエラーの根本原因の一つは、インストールしたCUDA ToolkitやPyTorch/TensorFlowのバイナリが、お使いのGPUの「計算能力(Compute Capability)」に対応していないことです。計算能力は、GPUのアーキテクチャ世代と機能を表すバージョン番号(例: 3.5, 5.2, 6.1, 7.5, 8.6, 9.0)です。フレームワークは、特定の計算能力範囲向けに事前コンパイルされており、GPUの能力がその範囲外だと実行できません。本記事では、自身のGPU計算能力を確認する複数の実践的方法と、関連するエラーの解決策を詳しく解説します。

原因の解説:なぜ計算能力が重要なのか?

計算能力(Compute Capability)は、NVIDIA GPUのハードウェアアーキテクチャの世代と機能セットを定義する番号です。メジャーバージョンとマイナーバージョンの組み合わせ(例: 7.5)で表され、数値が大きいほど新しいアーキテクチャです。

深層学習フレームワークは、CUDAコードを含んでいます。パフォーマンスと利便性のため、公式配布されるPyTorchやTensorFlowのpipインストール用バイナリは、ある範囲の計算能力(例: 3.7〜9.0)向けに事前にコンパイルされています。もしあなたのGPUの計算能力が、インストールしたフレームワークバイナリのサポート範囲よりも古すぎる(例: 3.5)場合、または新しすぎる(例: 9.0が範囲外のバイナリ)場合、上記の「no kernel image」エラーが発生し、CUDAが利用できなくなります。

したがって、環境構築前に自身のGPU計算能力を確認し、それに合ったフレームワークバージョンを選択することが、トラブルを未然に防ぐ第一歩です。

解決方法:計算能力を確認する3つの実践的手順

方法1:NVIDIA公式ドライバとnvidia-smiによる確認(最も簡単)

NVIDIAドライバが正常にインストールされていれば、コマンドラインツールnvidia-smiを使ってGPUモデルを特定し、公式仕様表から計算能力を調べる方法です。

手順:

  1. ターミナル(WindowsならコマンドプロンプトまたはPowerShell)を開く。
  2. 以下のコマンドを実行する。
nvidia-smi

出力例:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.154.05   Driver Version: 535.154.05   CUDA Version: 12.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce RTX 4090    Off| 00000000:01:00.0  On |                  N/A |
|  0%   43C    P8    11W / 450W |    689MiB / 24564MiB |      0%      Default |

この例では「NVIDIA GeForce RTX 4090」がGPUモデルです。

  1. 特定したGPUモデル名(例: “GeForce RTX 4090″)をもとに、NVIDIAの公式ドキュメント「CUDA GPUs」ページで検索し、計算能力を確認します。RTX 4090の場合は「Compute Capability: 8.9」です。

方法2:CUDA Toolkit付属のdeviceQueryサンプルプログラムによる確認(最も正確)

CUDA Toolkitがインストールされている環境では、付属のサンプルコードをコンパイル・実行することで、詳細なGPU情報と計算能力を直接取得できます。これが最も確実な方法です。

手順:

  1. CUDA Toolkitのサンプルコードがあるディレクトリに移動します。典型的なパスは以下の通りです。
    • Windows: C:ProgramDataNVIDIA CorporationCUDA SamplesvXX.Xbinwin64Debug (事前ビルド済みバイナリがある場合)
    • Linux: /usr/local/cuda/samples/
  2. サンプルをビルド・実行します。

Linuxの場合:

# サンプルディレクトリに移動
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
# サンプルをコンパイル
sudo make
# 実行
./deviceQuery

出力例 (一部抜粋):

Detected 1 CUDA Capable device(s)

Device 0: "NVIDIA GeForce RTX 3060"
  CUDA Driver Version / Runtime Version          12.2 / 12.2
  CUDA Capability Major/Minor version number:    8.6  <-- これが計算能力
  Total amount of global memory:                 12288 MBytes
  (..以下略..)

この「CUDA Capability Major/Minor version number: 8.6」が、そのGPUの計算能力(この場合は8.6)です。

方法3:Pythonスクリプト(PyTorch/TensorFlow)による確認(開発者向け)

Python環境が構築済みで、PyTorchまたはTensorFlowが(CPU版でも可)インストールされている場合、簡単なスクリプトで計算能力を確認できます。

PyTorchを使用する場合:

import torch
if torch.cuda.is_available():
    gpu_count = torch.cuda.device_count()
    for i in range(gpu_count):
        gpu_name = torch.cuda.get_device_name(i)
        compute_capability = torch.cuda.get_device_capability(i) # (major, minor)のタプル
        print(f"GPU {i}: {gpu_name}, Compute Capability: {compute_capability[0]}.{compute_capability[1]}")
else:
    print("CUDA is not available. Checking GPU info via torch might not work.")
    # 代替手段: pynvmlライブラリを試す
    # !pip install pynvml
    # import pynvml
    # pynvml.nvmlInit()
    # handle = pynvml.nvmlDeviceGetHandleByIndex(0)
    # name = pynvml.nvmlDeviceGetName(handle)
    # print(f"GPU Name: {name}")

出力例:

GPU 0: NVIDIA GeForce RTX 4070 Ti, Compute Capability: 8.9

コード例・コマンド例:計算能力に基づくフレームワークの適切なバージョン選択

計算能力が判明したら、それに合ったフレームワークをインストールします。PyTorchの公式インストールコマンド生成ページ(https://pytorch.org/get-started/locally/)では、CUDAのバージョンを選択しますが、裏側で計算能力の互換性も考慮されています。

例:計算能力が6.1のGPU(例: GeForce GTX 1050 Ti)の場合

  • サポート外の新しいPyTorchをインストールするとエラーが発生する可能性が高いです。
  • 計算能力6.1は「Pascal」アーキテクチャで、比較的古いため、新しいPyTorchバイナリのサポート範囲外になることがあります。
  • 解決策: 無理に最新版をインストールせず、GPUの計算能力をサポートしている古いバージョンのPyTorchをインストールします。または、ソースからコンパイルする選択肢もあります(上級者向け)。

インストールコマンド例(PyTorch 1.12.1 + CUDA 11.3、比較的広い計算能力をサポート):

# CUDA 11.3用のPyTorch 1.12.1をインストール(計算能力3.7-8.6をサポートする可能性が高い)
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

例:計算能力が8.9の新しいGPU(例: RTX 40シリーズ)でエラーが出る場合

  • 計算能力8.9は「Ada Lovelace」アーキテクチャで非常に新しいため、古いCUDA Toolkitやフレームワークバージョンではサポートされていない可能性があります。
  • 解決策: CUDA Toolkit 12.1以降および、それに対応する新しいバージョンのPyTorch(v2.0以降)をインストールします。

インストールコマンド例(最新のPyTorch 2.x + CUDA 12.1):

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

まとめ・補足情報

CUDAを利用したAI開発では、ハードウェア(GPUの計算能力)・ドライバ・CUDA Toolkit・深層学習フレームワークのバージョン互換性が成功の鍵です。その第一歩として、本記事で紹介した以下の方法で自身のGPU計算能力を必ず確認しましょう。

  1. nvidia-smi + 公式仕様表確認: 最も手軽で、ドライバさえ入っていれば可能。
  2. deviceQueryサンプルの実行: CUDA Toolkitインストール後なら最も正確。
  3. Pythonスクリプトによる確認: 開発環境から直接確認できる便利な方法。

計算能力が判明した後は、フレームワークの公式ドキュメントやインストールガイドを確認し、自分のGPUがサポートされているかどうかをチェックしてください。万が一、自分のGPU計算能力が希望するフレームワークのプリビルドバイナリのサポート範囲外であった場合の最終手段は、ソースコードからのフレームワークのコンパイルです。この際、コンパイルオプションで自身のGPUの計算能力を指定することで、最適化されたコードを生成できますが、時間と技術的知識を要する作業である点に注意が必要です。

環境構築時の「CUDAが使えない!」という問題は、その多くがこの計算能力の不一致に起因しています。最初の一手間でGPUの計算能力を確認し、適切なソフトウェアスタックを構築することで、スムーズなAI開発のスタートを切りましょう。

この記事は役に立ちましたか?