解決方法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版本最新是10.0。
但目前最適合我們的則是9.2或者9.1。
如果我們因為某些原因想同時使用兩個版本的話,應該怎么樣呢?
很簡單!一起按步驟來吧。

安裝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.1和cuda-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.1和cuda-9.2,那么我就必須安裝396.26及以上的Nvidia顯卡驅動,如果只滿足了390,那么就會出現cuda-9.1可以使用但9.2就檢測不到了。

所以安裝最新的顯卡驅動即可。
關於怎么安裝可以看着這里: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++

