問題の概要: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モデルを特定し、公式仕様表から計算能力を調べる方法です。
手順:
- ターミナル(WindowsならコマンドプロンプトまたはPowerShell)を開く。
- 以下のコマンドを実行する。
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モデルです。
- 特定したGPUモデル名(例: “GeForce RTX 4090″)をもとに、NVIDIAの公式ドキュメント「CUDA GPUs」ページで検索し、計算能力を確認します。RTX 4090の場合は「Compute Capability: 8.9」です。
方法2:CUDA Toolkit付属のdeviceQueryサンプルプログラムによる確認(最も正確)
CUDA Toolkitがインストールされている環境では、付属のサンプルコードをコンパイル・実行することで、詳細なGPU情報と計算能力を直接取得できます。これが最も確実な方法です。
手順:
- CUDA Toolkitのサンプルコードがあるディレクトリに移動します。典型的なパスは以下の通りです。
- Windows:
C:ProgramDataNVIDIA CorporationCUDA SamplesvXX.Xbinwin64Debug(事前ビルド済みバイナリがある場合) - Linux:
/usr/local/cuda/samples/
- Windows:
- サンプルをビルド・実行します。
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計算能力を必ず確認しましょう。
- nvidia-smi + 公式仕様表確認: 最も手軽で、ドライバさえ入っていれば可能。
- deviceQueryサンプルの実行: CUDA Toolkitインストール後なら最も正確。
- Pythonスクリプトによる確認: 開発環境から直接確認できる便利な方法。
計算能力が判明した後は、フレームワークの公式ドキュメントやインストールガイドを確認し、自分のGPUがサポートされているかどうかをチェックしてください。万が一、自分のGPU計算能力が希望するフレームワークのプリビルドバイナリのサポート範囲外であった場合の最終手段は、ソースコードからのフレームワークのコンパイルです。この際、コンパイルオプションで自身のGPUの計算能力を指定することで、最適化されたコードを生成できますが、時間と技術的知識を要する作業である点に注意が必要です。
環境構築時の「CUDAが使えない!」という問題は、その多くがこの計算能力の不一致に起因しています。最初の一手間でGPUの計算能力を確認し、適切なソフトウェアスタックを構築することで、スムーズなAI開発のスタートを切りましょう。