参考 :https://stackoverflow.com/questions/41890549/tensorflow-cannot-open-libcuda-so-1
Linux (Ubuntu)下使用NVIDIA GPU来 运行TensorFlow,在安装好驱动、CUDA 和 cudnn之后,在运行tensorflow时,其他的.so文件能够运行,而libcuda.so.1文件提示打不开,
Couldn't open CUDA library libcuda.so.1. LD_LIBRARY_PATH:
原因:
先说下这个文件在哪,安装cudnn的时候提供的那些.so文件里面没有这个 libcuda.so.1.文件的,这个文件实际上在
/usr/lib/x86_64-linux-gnu 里面。而这个文件并不是真正library(这个我也不知道)。反正他指向NVIDIA GPU的驱动版本对应的.so文件,我们需要重新将这个文件对应到我们GPU实际的驱动版本.so文件。具体处理如下:
# See where the link is pointing.查看链接指向
ls /usr/lib/x86_64-linux-gnu/libcuda.so.1 -la
# My result:
# lrwxrwxrwx 1 root root 19 Feb 22 20:40 \
# /usr/lib/x86_64-linux-gnu/libcuda.so.1 -> ./libcuda.so.375.39
# Make sure it is pointing to the right version. 查看NVIDIA驱动真正使用的版本
# Compare it with the installed NVIDIA driver.
nvidia-smi
# Replace libcuda.so.1 with a link to the correct version,如果版本不对应的话,就要将链接重新对应上去
cd /usr/lib/x86_64-linux-gnu
sudo ln -f -s libcuda.so.<yournvidia.version> libcuda.so.1
# 如我的NVIDIA版本是 384.130,命令行为
#sudo ln -f -s libcuda.so.384.130 libcuda.so.1
第一个就是程序要读取打开的.so.1文件,第二个是我GPU实际上对应的版本,第三个是原来对应的版本
简化一下答案:
# 1 查看链接指向
ls /usr/lib/x86_64-linux-gnu/libcuda.so.1 -la
# 2 查看NVIDIA驱动真正使用的版本
nvidia-smi
# 3 如果版本不对应的话,就要将链接重新对应上去
cd /usr/lib/x86_64-linux-gnu
sudo ln -f -s libcuda.so.<yournvidia.version> libcuda.so.1
# 如我的NVIDIA版本是 410.78,命令行为
#sudo ln -f -s libcuda.so.410.78 libcuda.so.1
有个情况就是,我昨天设置的对应版本,机器没有重启,但是so.1却又回到了以前的状态了,即.so.1又指向了libcuda.so.430.64版本,这个有待解决