按照其他教程安装基本没有问题,但是前几天升级了一下ubuntu内核,然后TensorFlow报错
ImportError: libnvidia-fatbinaryloader.so.384.130: cannot open shared object file: No such file or directory
看起来是nvidia驱动的问题,可能是因为内核升级导致的,所以打算重装驱动。
重装驱动
先尝试.run安装方式,安装失败:
Failed to run `/sbin/dkms build -m nvidia -v 384.90 -k …
然后用apt-get:
sudo apt-get install nvidia-384
安装成功,但是重启后登陆界面循环。并且报错:
nvidia-smi 未找到命令
怀疑是驱动版本过低,有安装了430:
sudo apt-get install nvidia-430
重启报错:
nvidia driver the system is running in low-graphics mode
无奈又装回了384,这次添加了几个包,没有了登陆循环的问题,且nvidia-smi正常:
sudo apt-get install nvidia-384 nvidia-settings nvidia-prime
可能是因为我电脑是双显卡,所以会有这个问题。
然而再次运行tf程序,仍然报错:
import error:libnppi.so.7.5: cannot open shared object file: No such file or directory
检查了/usr/local/cuda/lib64下确实没有这个so,于是决定重装cuda
重装cuda
先装了cuda 8.0,装完后依然报错:
ImportError: libcudart.so.9.0: cannot open shared object file: No such file or directory
虽然cuda的lib里有libcudart.so.8.0,但是为啥要用9.0?全局搜了一下这个文件:
find / -name libcudart.so.9.*
结果:
/home/xxlyu/.cache/bazel/_bazel_xxlyu/8fa709ebf344796d539e4e2cfed28084/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/cc/ops/candidate_sampling_ops_gen_cc.runfiles/org_tensorflow/_solib_local/_U@local_Uconfig_Ucuda_S_Scuda_Ccudart___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Scuda_Slib/libcudart.so.9.0
/home/xxlyu/.cache/bazel/_bazel_xxlyu/8fa709ebf344796d539e4e2cfed28084/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/cc/ops/candidate_sampling_ops_gen_cc.runfiles/org_tensorflow/external/local_config_cuda/cuda/cuda/lib/libcudart.so.9.0
因为我之前用的是9.0的cuda,估计TensorFlow的缓存没清…懒得管了,还是用原来的9.0吧。重装过程中有报错:
Error: libcudart.so.9.0: cannot open shared object file: No such file or directory
这个so是存在的,环境变量也设置了,原因是没有更新动态链接:
sudo ldconfig /usr/local/cuda/lib64
参考:https://blog.csdn.net/mumoDM/article/details/79502848
后面安装cudnn后,提示找不到libcudnn.so也是同样的解决方法。