ubuntu下tensorflow 報錯 libcusolver.so.8.0: cannot open shared object file: No such file or directory


解決方法1. 在終端執行:

export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64”
export CUDA_HOME=/usr/local/cuda 

但是每次要運行tensorflow時都得執行此命令,而且在Spyder、jupyter notebook中仍然報錯。

 

解決方法2.  在bashrc中寫入路徑:

sudo vim ~/.bashrc
export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64”
export CUDA_HOME=/usr/local/cuda
source ~/.bashrc

但是這還沒解決我的問題。

 

解決方法3. 徹底解決

  • 檢查LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH

我的結果: ”:/usr/local/cuda/lib64”

再執行命令:

sudo ldconfig /usr/local/cuda/lib64

問題完美解決,此時不管在終端、Spyder、jupyter notebook中 import tensorflow、import keras都不報錯。

 

export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64”
export CUDA_HOME=/usr/local/cuda

 

************************************轉載************************

CUDA,CUDNN工具箱多版本安裝、多版本切換

《CUDA,CUDNN工具箱多版本安裝、多版本切換》

前言

cuda版本最新是10.0。

但目前最適合我們的則是9.2或者9.1。

如果我們因為某些原因想同時使用兩個版本的話,應該怎么樣呢?

很簡單!一起按步驟來吧。

《CUDA,CUDNN工具箱多版本安裝、多版本切換》

安裝cuda和cudnn

關於具體的安裝步驟可以查看這個網址:https://oldpan.me/archives/pytorch-gpu-ubuntu-nvidia-cuda90

之前已經詳細地說明了,不同版本其實也是大同小異,我們唯一需要注意的是,之前已經安裝過一個版本,繼續安裝新版本的時候,我們的設置選擇需要稍微修改一下:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 396.80?
(y)es/(n)o/(q)uit: n #如果在這之前已經安裝好更高版本的顯卡驅動就不需要再重復安裝,如果需要重復安裝就選擇 yes,注意需要關閉圖形界面。 Install the CUDA 9.0 Toolkit? (y)es/(n)o/(q)uit: y Enter Toolkit Location [ default is /usr/local/cuda-9.0 ]: #一般選擇默認即可,也可以選擇安裝在其他目錄,在需要用的時候指向該目錄或者使用軟連接 link 到 /usr/local/cuda。 Do you want to install a symbolic link at /usr/local/cuda? # 這個看你自己,看當前是想用現在按照的cuda版本還是之前已經安裝的cuda版本,這里我選擇使用之前的cuda版本 (y)es/(n)o/(q)uit: n --------------------- # 其他設置和之前相同即可 

安裝過程與之前無異,cudnn放到相應的文件夾中即可。

修改.bashrc

安裝好兩個版本的cuda之后,我們需要修改.bashrc文件,和官方說明的一樣,我們在.bashrc文件中添加配置路徑,一般來說如果我們按照cuda-9.1需要這樣寫:

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

如果我們同時安裝了cuda-9.1cuda-9.2的時候,可能想到是這樣寫:

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

這樣寫並沒有什么問題,因為我們的深度學習庫是按照/usr/local/cuda這個鏈接來進行尋找cuda模塊的,只要我們將cuda進行正確的軟連接,那么在實際運行中並沒有什么問題。

但是這樣並不是很優雅,而且在使用一些其他cuda命令的時候很有可能尋找錯誤,為此我們將配置文件直接改成如下即可:

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

這樣我們在切換軟連接的時候,系統就可以自動根據我們的軟連接查找相應的路徑了。

切換軟連接

切換軟連接還是比較容易的,按照下方的命令即可:

# 查看cuda此刻的鏈接
prototype@prototype-X299-UD4-Pro:/usr/local$ stat cuda File: 'cuda' -> '/usr/local/cuda-9.1' Size: 19 Blocks: 0 IO Block: 4096 symbolic link Device: 802h/2050d Inode: 14288660 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-11-29 09:55:32.198913134 +0800 Modify: 2018-11-29 09:55:04.186653444 +0800 Change: 2018-11-29 09:55:04.186653444 +0800 Birth: - # 切換cuda-9.1 為 cuda-9.2 prototype@prototype-X299-UD4-Pro:/usr/local$ sudo ln -s /usr/local/cuda-9.2 /usr/local/cuda prototype@prototype-X299-UD4-Pro:/usr/local$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2018 NVIDIA Corporation Built on Tue_Jun_12_23:07:04_CDT_2018 Cuda compilation tools, release 9.2, V9.2.148 # 切換 cuda-9.2 為 cuda-9.1 prototype@prototype-X299-UD4-Pro:/usr/local$ sudo rm -rf cuda prototype@prototype-X299-UD4-Pro:/usr/local$ sudo ln -s /usr/local/cuda-9.1 /usr/local/cuda prototype@prototype-X299-UD4-Pro:/usr/local$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2017 NVIDIA Corporation Built on Fri_Nov__3_21:07:56_CDT_2017 Cuda compilation tools, release 9.1, V9.1.85 

需要注意的小細節

顯卡驅動問題

注意不同cuda版本對顯卡驅動版本的要求也不同。

對於我的情況來說,如果我想使用cuda-9.1cuda-9.2,那么我就必須安裝396.26及以上的Nvidia顯卡驅動,如果只滿足了390,那么就會出現cuda-9.1可以使用但9.2就檢測不到了。

《CUDA,CUDNN工具箱多版本安裝、多版本切換》

所以安裝最新的顯卡驅動即可。

關於怎么安裝可以看着這里:https://oldpan.me/archives/ubuntu16-04-nvidia-driver-get-stuck

編譯源碼問題

自己在編譯Pytorch最新版的時候發現,cuda-9.1並不支持gcc-7.3的版本(為了體驗C++-17的特性,將系統中的gcc進行了更新)。只有cuda-9.2及以上才支持,那么就有兩種解決方法:

  • 安裝最新的cuda-9.2
  • 切換回gcc-5

其實切換gcc版本和切換cuda版本都是類似的,我們的系統同樣可以安裝多個gcc版本,比如我的系統中就存在多個gcc版本,在安裝新版本的gcc后並不會刪除舊版本,因此我們可以隨時切換gcc:

cd /usr/bin 

prototype@prototype-X299-UD4-Pro:/usr/bin$ gcc
gcc             gcc-ar          gcc-nm          gcc-ranlib
gcc-4.9         gcc-ar-4.9      gcc-nm-4.9      gcc-ranlib-4.9
gcc-5           gcc-ar-5        gcc-nm-5        gcc-ranlib-5
gcc-7           gcc-ar-7        gcc-nm-7        gcc-ranlib-7

# 切換gcc鏈接到gcc-7版本 sudo rm -r gcc sudo ln -sf gcc-7 gcc sudo rm -r g++ sudo ln -sf g++-7 g++

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM