【CUDA】GPUの計算能力(Compute Capability)を確認する方法:環境構築エラー「no kernel image is available for execution」の解決策

問題の概要: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の公式テクニカル仕様ページで確認するのが最も確実です。

手順:

  1. 使用しているGPUの正確なモデル名を確認します(例: 「NVIDIA GeForce RTX 4070」)。
  2. ブラウザで「[GPUモデル名] specifications」と検索し、NVIDIA公式サイトのページを開きます。
  3. ページ内の「Technical Specifications」セクションにある「CUDA Cores」の近くや、詳細仕様表に「CUDA Compute Capability」の記載があります。

方法2: nvidia-smiコマンドと公式リストの組み合わせ

GPUモデル名を取得し、公式リストと照合する方法です。

手順:

  1. ターミナル(WindowsならコマンドプロンプトまたはPowerShell)を開きます。
  2. 以下のコマンドを実行して、GPUの名前を確認します。
nvidia-smi -L

出力例:

GPU 0: NVIDIA GeForce RTX 3060 (UUID: GPU-xxxx...)
  1. 取得したモデル名(例: 「GeForce RTX 3060」)をもとに、NVIDIAが提供する公式の「CUDA対応GPUリスト」で計算能力を検索します。

方法3: CUDAサンプルプログラム (deviceQuery) を使用する

CUDA Toolkitがインストールされている環境であれば、最も正確な情報を取得できる方法です。

手順:

  1. CUDA Toolkitのサンプルプログラムをビルド・実行します。サンプルは通常、C:ProgramDataNVIDIA CorporationCUDA Samples (Windows) や /usr/local/cuda/samples (Linux) にあります。
  2. ターミナルで、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を使う限りは環境構築のたびに参照できる強力な情報となります。

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