有效解决OSError: libcusparse.so.11: cannot open shared object file: No such file or directory

一、结论

        无论是OSError: libcusparse.so.11,还是OSError: libcusparse.so.10,都可以用这套流程解决,一样的思路!

        首先说结论:出现这种错误,要么是path没设置好,要么是cuda版本不对不包含libcusparse.so.11文件。

        如果是path没设置好,其中要注意,path不仅要在terminal设置好,还要修改文件~/.bashrc里的几个export PATH。

        如果是cuda版本不对不包含libcusparse.so.11文件,那就得remove current cuda,然后install new cuda。

二、问题背景

        之前我在terminal运行.py文件,会报错OSError: libcusparse.so.11,发现是我的path没设置好。在terminal设置好path之后,可以正常在terminal运行.py文件,但是竟然无法在debug时正常运行!!!每当我选择debugging的时候,又报错OSError: libcusparse.so.11,明明在terminal上已经可以正常运行,怎么回事呢???

        尝试了几十种方法,google看github、stackoverflow,百度看csdn、知乎,都看麻了。终于在pyG官方团队的github issues几百个评论中梳理拼凑出了最终正确答案,真是功夫不负有心人,凌晨2点的我在那一刻太开心了!!!

三、解决流程

        以下是解决OSError: libcusparse.so.11的流程,分为步骤1、步骤2

步骤1:在terminal设置好几个path

(1)在terminal利用locate命令,先找到libcusparse.so.11所在位置。

小tips:大家一定要学会用locate寻找文件,超级方便!我遇到的好多难缠的bug,都是依靠locate命令定位摸索出来最终解决方法的。

$ locate libcusparse.so.11

        locate命令会输出文件所在位置,如下所示:

$ locate libcusparse.so.11
/data/myname/local/cuda-11.6/targets/x86_64-linux/lib/libcusparse.so.11
/data/myname/local/cuda-11.6/targets/x86_64-linux/lib/libcusparse.so.11.7.2.124

        复制targets之前的路径/data/myname/local/cuda-11.6,用来之后设置path。每个人这段路径可能都不太一样,一般这段路径是/usr/local/cuda,总之需要按照你的targets之前的路径来!!!

        我的路径比较特殊,因为实验室很多人共用服务器,每个人都各自按照名字存的,所以和一般路径不一样,可能你的也不一样!!!

(2)在terminal进行add CUDA to PATH

        如果你的targets之前的路径是/usr/local/cuda,就可以直接copy下面的4个path设置代码。

        否则一定要把/usr/local/cuda替换成你的targets之前的路径!!!比如我要替换成/data/myname/local/cuda-11.6才正确,不能盲从,要依靠之前locate命令找到的文件位置来确定路径!

$ export PATH=/usr/local/cuda/bin:$PATH
$ echo $PATH
$ export CPATH=/usr/local/cuda/include:$CPATH
$ echo $CPATH
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
$ echo $LD_LIBRARY_PATH
$ export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
$ echo $DYLD_LIBRARY_PATH

        到这里已经可以在terminal顺利运行.py文件不报错了,但是还没有完!!想要debugging顺利还需要继续下面的步骤2!!!

步骤2:修改文件~/.bashrc里的几个export PATH

(1)在terminal利用locate命令,先找到.bashrc文件所在位置。

$ locate .bashrc

        locate命令会输出文件所在位置,如下所示:

$ locate .bashrc
/home/myname/.bashrc

(2)根据locate输出的.bashrc所在位置,去找到文件,然后手动修改.bashrc文件中的path。我的位置是在自己名字下的文件夹里,你的位置肯定和我的不一样。

        在文件末尾添加以下3个path:

        注意如果你的targets之前的路径是/usr/local/cuda,就可以直接copy下面的3行path设置。

        否则一定要把/usr/local/cuda替换成你的targets之前的路径!!!比如我要替换成/data/myname/local/cuda-11.6才正确,这里的path也不能盲从,也要依靠之前locate命令找到的文件位置来确定路径!

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

        至此,完成了步骤1与步骤2,就完全设置好了,不论是terminal运行.py文件,还是debugging,都不会再报错。完结撒花~

参考文献:OSError: libcusparse.so.11: cannot open shared object file: No such file or directory · Issue #2040 · pyg-team/pytorch_geometric · GitHub📚 Installation Error occurs when I run from torch_geometric.data import Data OSError Traceback (most recent call last) in 1 import torch —-> 2 from torch_geometric.data import Data ~/anaconda3/envs/pytorch_env/lib/python3.7/site-packag…https://github.com/pyg-team/pytorch_geometric/issues/2040Please help me with OSError: libcusparse.so.10: cannot open shared object file: No such file or directory · Issue #1125 · pyg-team/pytorch_geometric · GitHub❓ Questions & Help this is the traceback `Traceback (most recent call last): File "/home/yrwang/.local/lib/python3.6/site-packages/torch_sparse/init.py", line 15, in library, [osp.dirname(file)]).origin) File "/home/yrwang/.local/lib/pyt…https://github.com/pyg-team/pytorch_geometric/issues/1125

来源:骄傲的计算机科学家

物联沃分享整理
物联沃-IOTWORD物联网 » 有效解决OSError: libcusparse.so.11: cannot open shared object file: No such file or directory

发表评论