1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CUDA のバージョン不整合による PyTorch の ImportError 解決法

Last updated at Posted at 2025-03-28

1. 問題 (What)

PyTorch をインストールして実行しようとした際に、以下のエラーが発生した。

ImportError: /home/user/anaconda3/envs/myenv/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12

このエラーのため、import torch すらできない状態になった。

2. 原因 (Why)

このエラーは、CUDA のライブラリ (libcusparse.so.12) が PyTorch の期待するバージョンと異なっている ことが原因。

具体的には、

  1. nvidia-smi の出力では CUDA 12.7 が表示されていたが
  2. nvcc --version では CUDA 12.0 になっており
  3. PyTorch が libcusparse.so.12 をロードしようとした際に 古いバージョン (CUDA 12.0 のライブラリ) をロードしようとしてエラーが発生 していた

さらに、Anaconda 環境内にも libcusparse.so.12 が存在し、
誤って Anaconda の CUDA ライブラリがロードされることでも不整合が発生する可能性があった


3. 解決策 (How)

ステップ 1: 実際にどの CUDA バージョンが使われているか確認

まず、CUDA のバージョンをチェックする。2つのバージョンが異なっている場合は、問題が発生しているので次に進む。

nvcc --version
nvidia-smi

以下からは、CUDAのバージョンが12.7で、PyTorchが12.0を参照しているケースで考える。次に、libcusparse.so.12 がどこにあるのかを確認する。

find /usr/local -name "libcusparse.so.12"
find ~/anaconda3 -name "libcusparse.so.12"

さらに、PyTorch がどの libcusparse.so.12 を使おうとしているかを調査。

ldd ~/anaconda3/envs/myenv/lib/python3.10/site-packages/torch/lib/libtorch_cuda.so | grep cusparse

この出力を見て、間違った CUDA ライブラリがロードされているかを特定 する。筆者の場合、CUDA Toolkit のライブラリ(通常 /usr/local/cuda/lib64/ にある)を参照するべきとこを、anacondaのライブラリを参照しようとしていることがわかった。


ステップ 2: 正しい CUDA ライブラリをロードするように設定

正しい CUDA のパス (/usr/local/cuda-12.0/lib64) を 環境変数 LD_LIBRARY_PATH に指定 する。

export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64

この状態で import torch を試してみる。

python -c "import torch; print(torch.version.cuda)"

問題が解決すれば、この設定を永続化する。

echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64' >> ~/.bashrc
source ~/.bashrc

ステップ 3: PyTorch の CUDA バージョンを確認 & 修正

もし torch.version.cuda の出力が期待するバージョンでない場合、適切なバージョンの PyTorch をインストールし直す。

pip uninstall torch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu120

再び import torch を試して、エラーが消えていることを確認する。


4. まとめ

CUDA のバージョン不整合 がエラーの原因だった。
findldd誤った libcusparse.so.12 を特定 した。
LD_LIBRARY_PATH を修正して、正しい CUDA ライブラリを使用するようにした。
✅ 必要なら、PyTorch を CUDA の適切なバージョンに再インストール した。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?