PyTorchのモジュールでlibcusparse.so.10がないと言われる


自分用メモ

OS : Ubuntu 18.04 LTS
PyTorch : 1.5.0, 1.6.0
CUDA : 10.2
NVIDIA-driver : 440

もともとは,PyTorch Geometricをimportしたときに起きたエラー.公式の通りにインストールしたのにおかしいな...と思ったが,結論から言うと,NVIDIA-driverはちゃんとインストールされていたが,NVCCがインストールされていなかったため.

症例

import torch_geometric.transforms as T

OSError: libcusparse.so.10: cannot open shared object file: No such file or directory

tensorflow-gpuで libcublas.so.10.0のImportError
https://qiita.com/Uejun/items/fbb579374eafab8633d6

こちらも似たような症例だが,単にパスを通すだけで済むらしい.しかし,私のパソコンには,どこを探しても,libcusparse.so.10なるライブラリはなかった.
公式のissueにこのようなものがあった.

libcusparse.so.10 error when importing
https://github.com/rusty1s/pytorch_geometric/issues/1092

問題の状況は違うけど,/usr/local/cuda/lib64下に,libcusparse.so.10があること,また,$ nvcc -Vがちゃん通ることが必要なようである.私の場合,$ nvcc -Vがそもそも通っていなかった.このコマンドを叩いたときには,

$ nvcc -V

Command 'nvcc' not found, but can be installed with:

sudo apt install nvidia-cuda-toolkit

と表示されたが,$ sudo apt install nvidia-cuda-toolkit
では目的のライブラリは入らなかった.それ以前に,cuda10.2をインストールする必要があるらしい.

解決策

 cuda10.2を入れ直す.

$  sudo apt purge nvidia-cuda-* 

の後(なくてもいけるが念の為),公式をもとに,cuda10.2をインストールする.これに関しては,各デバイスごとに違うと思うので割愛.この後,.bashrcに

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

を書き込んだら,$ nvcc -Vが通り,PyTorch Geometricも使えるようになった.また,libucusparse.so.10.0などのモジュールがある場合は$ ln -s libucusparse.so.10.0 libucusparse.so.10などの対処で行ける場合もあるらしいが,自分の場合はエラーが起きた.