久しぶりにchainerを使ってモデルを組んでみたら
cupy.cuda.driver.CUDADriverError: CUDA_ERROR_INVALID_PTX: a PTX JIT compilation failed
が出た。。。
らしいが、それでも治らない場合はcupyのバージョンと、CUDAのバージョンがずれているということだ。
https://docs-cupy.chainer.org/en/latest/install.html
なので、まずcupyのバージョンとCUDAのバージョンをチェックしよう。
nvcc -V & pip freeze | grep cupy
自分はcupy-cuda100をダウンロードしてて、CUDA が9.1になっていた。
人によって、バージョン状況は異なると思うが、
- cupy.cuda.driver.CUDADriverError: CUDA_ERROR_INVALID_PTX: a PTX JIT compilation failed
- original error: libcublas.so.10.0: cannot open shared object file: No such file or directory
などのエラーが出ていれば、cupyとCUDAのバージョンミスマッチによるエラーであることの可能性があるので、以下の手順を試すと直るかもしれません(僕は直りました)。
1 複数バージョンのcupyがある場合は不要なバージョンをアンインストール(僕はcupy-cuda100だけにしました)。
pip uninstall cupy-cudaxxx
(CUDA10.0用のcupyをダウンロードする場合)
pip install cupy-cuda100
2 CUDA 10.0のダウンロード
3 CUDA 10.0へ切り替える
switch-cudaをダウンロードして、実行する。
git clone https://github.com/phohenecker/switch-cuda
cd switch-cuda
source switch-cuda 10.0
これでcupy とCUDAのバージョンがあうので上記のエラーなく実行できるはずである。