第1章
GPUが見えるか確かめたい
最初の一歩は、「この環境で GPU が使えるのか」を自分の目で確かめることです。
今日は何をしたい?
ROCm 版 PyTorch が入っていて、いまの PC から GPU が見えているかを短いコードで確認します。HIP・GPU available・Device count の 3 つが読めればこの章は完了です。
確認コード
import sys
import torch
print("Python:", sys.version.split()[0])
print("Torch:", torch.__version__)
print("HIP:", torch.version.hip)
print("GPU available:", torch.cuda.is_available())
print("Device count:", torch.cuda.device_count())
if torch.cuda.is_available():
print("Device[0]:", torch.cuda.get_device_name(0))このコードを check01.py というファイル名で保存して、ターミナルで python check01.py と実行します。
実行すると、たとえばこう表示されます。
このように出れば、ROCm 版 PyTorch が入っていて、GPU も見えている と考えて大丈夫です。GPU 名まで出ていれば、次の章へ進めます。
Python や Torch のバージョン番号は環境によって異なります。Torch: xxxxxx+rocm... の形式で出ていれば ROCm 版です。
結果の読み方
- HIP: に値がある → ROCm 版 PyTorch の可能性が高い
- GPU available: True → PyTorch から GPU が見えている
- Device count: 1以上 → 利用可能 GPU を列挙できている
うまくいかなかったときの読み方(クリックで開く)
- HIP あり + False: ROCm 版だが GPU が見えていない。rocminfo で amdgpu や gfx の行が出るか確認。それでも見えない場合は video / render グループへの所属を確認。
- HIP None + False: ROCm 版ではない可能性。pip show torch の Version: に +rocm が付いているか確認。
- True だが Device 名がおかしい: llvmpipe や Virtio GPU のような名前が出たら、which python で意図した Python か確認。
どこがROCm?
ROCm は GPU を動かすためのソフトウェアの集合体で、HIP はその中のプログラミング API です。torch.version.hip に値が返れば「ROCm 環境にいる」と読めます。
torch.cuda と HIP の関係(クリックで開く)
もともと CUDA 用に書かれたコードが AMD GPU でもなるべく動くよう、ROCm 版 PyTorch は torch.cuda という名前をそのまま引き継いでいます。torch.cuda と torch.version.hip が混在しているのはそういう理由です。
ここで出てきたPython
- import でライブラリを読み込む
- print() で確認したい値を出す
- if で「GPU が見えているときだけ」を分ける
- torch.version.hip のように、ドットでつながる名前をたどって情報を読む
sys.version.split()[0] の読み方(クリックで開く)
sys.version は "3.11.9 (main, Apr 2024, ...)" のような長い文字列を返します。.split() で空白で分割してリストにし、[0] で先頭の要素(バージョン番号だけ)を取り出しています。
よくあるつまずき
- GPU available: False → いまは GPU が使えていない状態。上の「うまくいかなかったとき」を参照。
- HIP: None → ROCm 版ではない PyTorch の可能性。
- GPU 名が出なくても、まず HIP と True / False を順番に見れば切り分けられます。
実行前チェック・ワンライナー版(クリックで開く)
pip show torch で torch が入っているか、バージョンに +rocm が付いているかを確認できます。
# ワンライナーで実行
./.venv/bin/python -c 'import sys, torch; print("Python:", sys.version.split()[0]); print("Torch:", torch.__version__); print("HIP:", torch.version.hip); print("GPU available:", torch.cuda.is_available()); print("Device count:", torch.cuda.device_count()); print("Device[0]:", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "(skip)")'python -c '...' は、Python ファイルを作らずに引用符の中のコードを直接実行する書き方です。
1分演習
上のコードを実際に実行して、GPU available、HIP、Device count の 3 つを確認しましょう。
確認できたら、コードの print("Device count:", ...) の行を削除して もう一度実行してみましょう。何が変わりますか? — 行を削除しても他の行は動くことが確認できれば完了です。