問題:
在使用tensorflow跑深度學習程序時遇到Could not dlopen library 'libcudart.so.10.0'以及類似的問題。
作者的是cuda10.0和cudnn7.5,讀者的cuda、cudnn可能和作者不一致,導致文件位置和文件名不同,但是方法是一樣的。
類似的問題有:
libcublas.so.10.0
libcudart.so.10.0
libcufft.so.10.0
libcurand.so.10.0
libcusolver.so.10,0
libcusparse.so.10.0
分析
使用了CUDA進行加速計算,CUDA在加載libxx.so.10.0遇到了困難,可能是文件不匹配,可能是文件有問題。
解決方法
正確安裝CUDA和對應CUDNN
到/usr/local/lib/文件下,把libxx.so.10.0文件全部刪除(視個人情況定)
將/usr/local/cuda-10.0/lib64/libxx.so.10.0文件複製到/usr/local/lib/下,可以手動複製,也可以使用命令複製。(這裏的cuda-10.0視個人裝的CUDA決定)【根據個人情況修改命令的位置和文件名】下面列出兩條參考。
sudo cp /usr/local/cuda-10.0/lib64/libcudart.so.10.0 /usr/local/lib/ && sudo ldconfig
sudo cp /usr/local/cuda-10.0/lib64/libcusolver.so.10.0 /usr/local/lib && sudo ldconfig
注意
- 作者這裏文件來自cuda-10.0文件夾,這和作者安裝的cuda有關,請更具自己的cuda修改這個文件名;
- 在輸入命令時,libxx.so.10.0,根據問題的文件,修改這個名字(例如,筆者這裏是libcublas.so.10.0,讀者可能是libcudart.so.8.0);
- 建議先把/usr/local/lib/裏的原libxx.so.10.0文件刪除,筆者在複製後遇到:複製成功,但是跑程序的時候仍舊報錯;
- 每次複製一次文件,可以運行程序觀察,看是否複製成功,再進行下一步操作。