解决TensorFlow出现的Could not load dynamic library ‘libcurand.so.10‘等类似的问题

!!!这个问题的本质还是在环境路径中没有libcurand.so.10,但可能其他路径中有,因此需要做的就是:(1) 要么更改环境路径,也就是接下来说的方法;(2) 要么将其他路径中的该文件复制到环境路径中去。

  • 第一步:找到libcudart.so.11.0
sudo find / -name 'libcudart.so.11.0'

我得到的输出如下:

/opt/conda/envs/leesg_gpu/lib/libcudart.so.11.0
/opt/conda/envs/leesg_gpu/lib/python3.8/site-packages/nvidia/cuda_runtime/lib/libcudart.so.11.0
/opt/conda/pkgs/cudatoolkit-11.3.1-h2bc3f7f_2/lib/libcudart.so.11.0
/opt/conda/pkgs/cudatoolkit-11.8.0-h6a678d5_0/lib/libcudart.so.11.0

这里面随便选一个差不多,反正可以多试试,总有一个可以的。但是要注意,我们指定到达libcudart.so.11.0前的目录,即:/opt/conda/pkgs/cudatoolkit-11.8.0-h6a678d5_0/lib/(可以参照补充里面的,先去下载tensorrt,然后将目录指定为tensorrt所在的目录)。

  • 第二步:将第一步中找到的路径放到环境文件中:
    先编辑/etc/profile
sudo vim /etc/profile

接着在/etc/profile文件中加入:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/conda/pkgs/cudatoolkit-11.8.0-h6a678d5_0/lib/

退出并保存。

  • 第三步:运行source /etc/profile使设置后的环境文件生效,问题解决。
  • 补充,有时候还会出现Could not load dynamic library 'libcudnn.so.8'等问题,这是类似的,但是我们可以换一个思路去解决,实测有效:
# 查找libcudnn.so.8所在位置
sudo find / -name 'libcudnn.so.8'

输出:
/opt/conda/envs/leesg_gpu/lib/python3.8/site-packages/nvidia/cudnn/lib/libcudnn.so.8
/opt/conda/pkgs/cudnn-8.2.1-cuda11.3_0/lib/libcudnn.so.8

# 将任意一个`libcudnn.so.8`复制到环境路径LD_LIBRARY_PATH中去
cp /opt/conda/pkgs/cudnn-8.2.1-cuda11.3_0/lib/libcudnn.so.8 /opt/conda/pkgs/cudatoolkit-11.8.0-h6a678d5_0/lib/

# 可以去环境路径中检查是否移过去了
cd /opt/conda/pkgs/cudatoolkit-11.8.0-h6a678d5_0/lib/

输出:
cudatoolkit_config.yaml   libcuinj64.so.11.8          libnppicc.so.11          libnppitc.so.11.8.0.86
libaccinj64.so            libcuinj64.so.11.8.87       libnppicc.so.11.8.0.86   libnpps.so
libaccinj64.so.11.8       libcurand.so                libnppidei.so            libnpps.so.11
libaccinj64.so.11.8.87    libcurand.so.10             libnppidei.so.11         libnpps.so.11.8.0.86
libcublas.so              libcurand.so.10.3.0.86      libnppidei.so.11.8.0.86  libnvToolsExt.so
libcublas.so.11           libcusolver.so              libnppif.so              libnvToolsExt.so.1
libcublas.so.11.11.3.6    libcusolver.so.11           libnppif.so.11           libnvToolsExt.so.1.0.0
libcublasLt.so            libcusolver.so.11.4.1.48    libnppif.so.11.8.0.86    libnvblas.so
libcublasLt.so.11         libcusolverMg.so            libnppig.so              libnvblas.so.11
libcublasLt.so.11.11.3.6  libcusolverMg.so.11         libnppig.so.11           libnvblas.so.11.11.3.6
libcudadevrt.a            libcusolverMg.so.11.4.1.48  libnppig.so.11.8.0.86    libnvjpeg.so
libcudart.so              libcusparse.so              libnppim.so              libnvjpeg.so.11
libcudart.so.11.0         libcusparse.so.11           libnppim.so.11           libnvjpeg.so.11.9.0.86
libcudart.so.11.8.89      libcusparse.so.11.7.5.86    libnppim.so.11.8.0.86    libnvrtc-builtins.so
libcudnn.so.8             libdevice.10.bc             libnppist.so             libnvrtc-builtins.so.11.8
libcufft.so               libnppc.so                  libnppist.so.11          libnvrtc-builtins.so.11.8.89
libcufft.so.10            libnppc.so.11               libnppist.so.11.8.0.86   libnvrtc.so
libcufft.so.10.9.0.58     libnppc.so.11.8.0.86        libnppisu.so             libnvrtc.so.11.2
libcufftw.so              libnppial.so                libnppisu.so.11          libnvrtc.so.11.8.89
libcufftw.so.10           libnppial.so.11             libnppisu.so.11.8.0.86   libnvvm.so
libcufftw.so.10.9.0.58    libnppial.so.11.8.0.86      libnppitc.so             libnvvm.so.4
libcuinj64.so             libnppicc.so                libnppitc.so.11          libnvvm.so.4.0.0

测试用到的代码

import tensorflow as tf
tf.config.list_physical_devices('GPU')

# 或者:
python -c "import tensorflow as tf;print(tf.config.list_physical_devices('GPU'))"
python -c "import torch;print(torch.cuda.is_available())"

输出为True说明已经可以识别GPU咯。

补充

Could not load dynamic library 'libnvinfer.so.7'以及Could not load dynamic library 'libnvinfer_plugin.so.7'的解决方案:建立一个symbolic link from libnvinfer version 7 to 8:

cd /opt/conda/envs/leesg/lib/python3.8/site-packages/tensorrt/

# create symbolic links
ln -s libnvinfer_plugin.so.8 libnvinfer_plugin.so.7
ln -s libnvinfer.so.8 libnvinfer.so.7

# add tensorrt to library path
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/conda/envs/leesg/lib/python3.8/site-packages/tensorrt/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三只佩奇不结义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值