1. プログラムを実行すると、「RuntimeError: cuda runtime errorr (77): an不正なメモリアクセスが発生しました」というエラーが報告されます。
解決策: コードの前に次のコマンドを追加します。
os.environ['CUDA_LAUNCH_BLOCKING'] = '1'
2. 次に、「RuntimeError: CUDA error: no kernel image is available for run on the device」というエラーが表示されます。
解決策: Python コンソールに次のテスト コードを入力します。
#1. 导入torch
import torch
# 2. 检测CUDA是否安装正确并能被Pytorch检测
torch.cuda.is_available()
#3. 查看Pytorch能不能调用cuda加速
t = torch.ones(1,1,28,28)
t = t.cuda()
t
事実は、3 番目のステップのコードが正常に実行できないことが証明されており、「RuntimeError: CUDA error: no kernel image is available for run on the device」というエラーが報告され、cuda のバージョンが GPU と一致しないことを示します。関連情報を参照する
計算能力 8.6 の 3090 グラフィックス カードを使用しています。最初に torch=1.10.1 をインストールしましたが、依存する cuda は計算能力 8.6 の GPU をサポートしていないため、コードを正常に実行できません。次のコマンドに従ってトーチのバージョンを置き換え、cuda 11 に依存すると、上記のテスト コードは正常に実行できます。
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
ただし、次のエラーが表示されます。「元のエラー: ..../lib/python3.6/site-packages/cupy_backends/cuda/api/runtime.cpython-36m-x86_64-linux-gnu.so: シンボル cudaDeviceSetMemPool バージョン」 libcudart.so.11.0 がリンク時間参照を持つファイル libcudart.so.11.0 で定義されていません」
cupy が正常にインストールされていない可能性があると考えられるので、次のコマンドを入力して cupy をインストールします。
pip install cupy-cuda111
pip install --user --no-cache-dir cupy-cuda111
Cupy 8.3.0 は cupy-cuda111 と一致しません。次のコマンドを使用して cupy を再インストールします。
conda install -c conda-forge cupy cudatoolkit=11.1 cudnn cutensor nccl
ついにうまくいきました!