問題の概要:CUDA環境構築時の互換性エラー
CUDAを使用したAI開発、特に深層学習フレームワーク(PyTorch, TensorFlowなど)の環境構築時に、以下のようなエラーメッセージに遭遇したことはありませんか?
RuntimeError: CUDA error: no kernel image is available for execution on the device
torch.cuda.is_available() が False を返す
This TensorFlow binary is optimized to use available CPU instructions...
Your CPU supports instructions that this TensorFlow binary was not compiled to use...
これらのエラーの根本原因の一つは、インストールしたCUDA Toolkitや深層学習ライブラリのバージョンが、お使いのGPUの「計算能力(Compute Capability)」に対応していないことです。CUDAのバイナリ(カーネルイメージ)は特定の計算能力向けにコンパイルされており、互換性がないGPUでは実行できません。この問題を解決する第一歩が、自分のGPUの計算能力を正確に確認することです。
原因の解説:計算能力(Compute Capability)とは?
計算能力(Compute Capability)は、NVIDIA GPUのアーキテクチャの世代と機能セットを表すバージョン番号です。主要な形式は X.Y(例: 7.5, 8.6)で、Xはメジャーバージョン(アーキテクチャ世代)、Yはマイナーバージョン(機能強化)を意味します。
- メジャーバージョン例: 3.x (Kepler), 5.x (Maxwell), 6.x (Pascal), 7.x (Volta/Turing), 8.x (Ampere), 9.x (Ada Lovelace)
- 重要性: PyTorchやTensorFlowなどのプリコンパイル済みパッケージは、特定の計算能力範囲(例: 3.7〜8.6)のGPU向けにビルドされています。自分のGPUの計算能力がこの範囲外、または範囲内でも対応ビルドがなければ、冒頭のエラーが発生します。
例えば、計算能力8.6のGPU(GeForce RTX 30シリーズ等)に対して、計算能力7.5までしかサポートしていない古いCUDA 10.xベースのPyTorchをインストールすると、「no kernel image」エラーが発生します。
解決方法:計算能力を確認する4つのステップ
ここからは、お使いのGPUの計算能力を確認する具体的な方法を、ステップバイステップで解説します。
方法1: NVIDIA公式ドキュメントで確認(最も確実)
GPUのモデル名が分かっている場合、NVIDIAの公式テクニカル仕様ページで確認するのが最も確実です。
手順:
- 使用しているGPUの正確なモデル名を確認します(例: 「NVIDIA GeForce RTX 4070」)。
- ブラウザで「[GPUモデル名] specifications」と検索し、NVIDIA公式サイトのページを開きます。
- ページ内の「Technical Specifications」セクションにある「CUDA Cores」の近くや、詳細仕様表に「CUDA Compute Capability」の記載があります。
方法2: nvidia-smiコマンドと公式リストの組み合わせ
GPUモデル名を取得し、公式リストと照合する方法です。
手順:
- ターミナル(WindowsならコマンドプロンプトまたはPowerShell)を開きます。
- 以下のコマンドを実行して、GPUの名前を確認します。
nvidia-smi -L
出力例:
GPU 0: NVIDIA GeForce RTX 3060 (UUID: GPU-xxxx...)
- 取得したモデル名(例: 「GeForce RTX 3060」)をもとに、NVIDIAが提供する公式の「CUDA対応GPUリスト」で計算能力を検索します。
方法3: CUDAサンプルプログラム (deviceQuery) を使用する
CUDA Toolkitがインストールされている環境であれば、最も正確な情報を取得できる方法です。
手順:
- CUDA Toolkitのサンプルプログラムをビルド・実行します。サンプルは通常、
C:ProgramDataNVIDIA CorporationCUDA Samples(Windows) や/usr/local/cuda/samples(Linux) にあります。 - ターミナルで、
deviceQueryサンプルのディレクトリに移動し、ビルドして実行します。
# Linuxの例
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
# Windows (Visual Studio Developer Command Promptの例)
cd "C:ProgramDataNVIDIA CorporationCUDA Samplesv11.81_UtilitiesdeviceQuery"
msbuild deviceQuery_vs2019.sln /property:Configuration=Release
cd binx64Release
deviceQuery.exe
出力例(抜粋):
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA GeForce RTX 3080"
CUDA Driver Version / Runtime Version 12.2 / 11.8
CUDA Capability Major/Minor version number: 8.6 <-- これが計算能力
Total amount of global memory: 10240 MBytes
(略)
この出力の「CUDA Capability Major/Minor version number」が、あなたのGPUの計算能力(この例では8.6)です。
方法4: Pythonスクリプトで確認する(PyTorch/TensorFlow環境向け)
AI開発環境が既に構築されている場合、Pythonから直接確認する方法です。
PyTorchを使用する場合:
import torch
if torch.cuda.is_available():
# GPUの数を取得
device_count = torch.cuda.device_count()
for i in range(device_count):
# 各GPUの計算能力を取得
capability = torch.cuda.get_device_capability(i)
name = torch.cuda.get_device_name(i)
print(f"GPU {i}: {name}, Compute Capability: {capability[0]}.{capability[1]}")
else:
print("CUDA is not available.")
出力例:
GPU 0: NVIDIA GeForce RTX 4060 Laptop GPU, Compute Capability: 8.9
NVIDIA提供のpynvmlライブラリを使用する場合:
# まずインストール: pip install nvidia-ml-py
from pynvml import *
nvmlInit()
handle = nvmlDeviceGetHandleByIndex(0) # 0番目のGPU
device_name = nvmlDeviceGetName(handle)
# 計算能力は直接取得できないため、device_nameから方法1,2で調べる必要があります
print(f"GPU Name: {device_name.decode('utf-8')}")
nvmlShutdown()
コード例・コマンド例:確認後の環境構築への応用
計算能力が分かったら、それを元に適切なCUDAバージョンとライブラリを選択します。
例:計算能力8.6のGPU (RTX 3060, 3080等) 向けのPyTorchインストール
PyTorch公式サイトのインストールコマンド生成ツールでは、CUDA 11.8が広くサポートされています。計算能力8.6はCUDA 11.xで十分サポートされています。
# PyTorch 2.0+ と CUDA 11.8 のインストール例 (conda使用)
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
# pipを使用する場合
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
例:計算能力9.0のGPU (RTX 40シリーズ等) 向けの最新環境構築
計算能力9.0は比較的新しいため、最新のCUDA 12.xをサポートするバージョンを選ぶ必要があります。
# PyTorch 2.3+ と CUDA 12.1 のインストール例
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
# pipを使用する場合
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
注意点: インストールするCUDA Toolkitのバージョンと、GPUドライバのバージョンの互換性にも注意してください。nvidia-smiで表示される「CUDA Version」はドライバがサポートする最高のCUDA Runtimeバージョンです。これより低いバージョンのCUDA Toolkitは動作します。
まとめ・補足情報
GPUの計算能力を確認することは、CUDAを用いたAI開発環境をスムーズに構築するための必須の第一歩です。特に、自作PCやノートPC、クラウド上の様々なGPUインスタンスを利用する際には、最初にこの確認を行うことで、後の互換性エラーを大幅に減らせます。
主要なGPUシリーズと計算能力の目安:
- GeForce RTX 40シリーズ (Ada): 8.9 (4060 Ti/4070等), 9.0 (4080/4090等)
- GeForce RTX 30シリーズ (Ampere): 8.6 (3060/3070/3080/3090等)
- GeForce RTX 20シリーズ (Turing): 7.5 (2060/2070/2080等)
- GeForce GTX 10シリーズ (Pascal): 6.1 (1080 Ti等)
- Tesla/データセンター向け: V100 (7.0), A100 (8.0), H100 (9.0)
環境構築でエラーに遭遇した際は、まず本記事の方法でGPUの計算能力を特定し、使用しようとしているフレームワークの公式ドキュメントでサポートされている計算能力の範囲を確認してください。この2つの情報を照合することで、適切なCUDAバージョン、フレームワークバージョンを選択する道筋が明確になります。計算能力はハードウェア固有の値なので、一度確認しておけば、今後同じGPUを使う限りは環境構築のたびに参照できる強力な情報となります。