1. 程式人生 > >ubuntu+cuda+cudnn+tensorflow(親測可用,包括遇到的坑都有解釋)

ubuntu+cuda+cudnn+tensorflow(親測可用,包括遇到的坑都有解釋)

一、檢視顯示卡資訊:

檢視顯示卡:

lspci | grep -i nvidia   
#我的是06:00.0 3D controller: NVIDIA Corporation Device 15f8 (rev a1)

然後看顯示卡驅動:

lsmod | grep -i nvidia
#我剛裝完系統後沒有任何驅動,所以這裡有沒有沒關係。

二、安裝顯示卡驅動

1、自己下載安裝:

官網,選擇自己的顯示卡型號,然後下載驅動。回到ubuntu,開啟終端,首先解除安裝一下之前安裝的:

sudo apt-get --purge remove nvidia-*
#因為我新裝的系統沒有任何驅動,所以不用解除安裝

然後寫入黑名單遮蔽nouveau:

sudo vi /etc/modprobe.d/blacklist.conf

到最後新增:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

儲存退出。

lsmod | grep nouveau
#看是否有輸出,沒有輸出說明遮蔽成功,可以跳過下一步;如果有輸出接著下一步。

==================================

sudo update-initramfs -u

lsmod | grep nouveau

#這樣應該沒有輸出了,如果還有重啟一次就好了。

==================================

sudo /etc/init.d/lightdm stop
sudo init 3
chmod a+x NVIDIA-Linux-x86_64-410.78.run
sudo ./NVIDIA-Linux-x86_64-410.78.run -no-x-check -no-nouveau-check -no-opengl-files 
nvidia-smi

sudo /etc/init.d/lightdm start
#安裝驅動完成。

2、和cuda一起安裝:

上面的方式我是看到很多部落格總結出來的,我並沒有按照上面的執行,我在官網下載的是deb格式的驅動,我就沒按照那麼安裝,我就在安裝cuda的時候順便安裝了一下驅動,下面會講到,比較簡單。

三、安裝cuda

我在這裡花的時間最多,關於cuda+cudnn+Tensorflow版本的問題,糾結了好半天,這裡給一個參考這是我目前發現的關於版本對應的最好的一個總結,如果你不想那麼麻煩,你可以按照我的安裝版本直接安裝cuda_9.0.176_384.81_linux.run+ cudnn-9.0-linux-x64-v7.solitairetheme8+tensorflow 1.8.0,其中cudnn是7.0.5。進入你自己下載cuda和cudnn的目錄然後開始安裝:

sudo bash ./ cuda_9.0.176_384.81_linux.run

首先出現的就是說明,按q退出,輸入accept接受,回車。

接下來就是關於你是否安裝驅動,這裡要注意,如果你上面安裝驅動是按照第一種方式,自己已經安裝好了,那麼此時你選擇n然後回車;如果你上面是第二種方式,沒有安裝驅動,那麼你此時選擇y,然後回車。

剩下的可以一併選擇y就可以了。

==================================

這裡如果遇到這個問題:

If you're sure that X is not running, but are getting this error, 
please delete any X lock files in /tmp.

那麼你需要刪除一個檔案:

sudo rm /tmp/.X0-lock

接下來在重新執行cuda的安裝檔案就可以了。

==================================

開啟.bashrc檔案新增如下路徑,我的.bashrc檔案在/home/colab下,如果沒有找到直接終端輸入一部分然後用tab補齊或者終端ls –a命令檢視。

sudo vi .bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#可能這裡的路徑區別就在與cuda的版本問題,這裡有cuda和cuda x.x兩個資料夾,
#這兩個資料夾是軟連線的關係,相當於windows裡面的快捷方式,所以新增誰都可
#以。儲存退出。
source ~/.bashrc
nvcc --version
#如果顯示下面的圖示就說明成功了。

四、安裝cudnn

終端執行:

tar xf cudnn-9.0-linux-x64-v7.solitairetheme8

會在當前目錄中解壓出一個名為cuda的資料夾,結構如下:

複製cudnn中的檔案到CUDA中:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
#然後執行:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

出現如下就說明替換成功了:

五、安裝tensorflow

我這裡自帶python2和python3的版本,我需要用到python3,所以我用pip3去安裝到python3的庫中(預設安裝路徑:/usr/local/lib/python3.5/dist-packages/)我這裡指定的1.8.0的版本,同時因為我是教育網,所以用的清華的pip源:

sudo pip3 install tensorflow-gpu==1.8.0 –i https://pypi.tuna.tsinghua.edu.cn/simple

安裝完成後進入python3測試:

python3
>>>import tensorflow

如果沒有報錯,那麼恭喜你安裝成功了!

==================================

我之前在這裡報了個錯誤:

ImportError: 
    libcublas.so.9.0 cannot open shared object file: No such file or directory

1、libcublas.so.9.0的路徑在/usr/local/cuda/lib64下,這個是cuda裡的一個庫檔案,你進入這個目錄檢視這個檔案是不是在,如果同名但是版本不同,就說名你的cuda和tensorflow的版本不匹配,你需要解除安裝重新換版本安裝。

2、等我更換了後來的版本,發現這裡能安裝了,也能成功引用了,應導師要求,為了給其他同學用,需要給其他同學建立賬號也使用tensorflow,但是!!!我發現(我用colab賬號裝的cuda)只有當時安裝cuda的賬號可以成功引用tensorflow,其他的賬號同樣報錯ImportError: libcublas.so.9.0 cannot open shared object file: No such file or directory,我首先懷疑是不是許可權問題,於是我把所有的賬號都放到了同一個組,再次嘗試,依舊不行……,我去修改tensorflow的許可權,給了一個777(非常不建議!!!),還是不行……,正當我不知道怎麼辦的時候,我想到了一個事情,colab賬號可以使用,其他賬號(包括root)不可以用,而且還是引用錯誤,那就說明是這個庫檔案可能只屬於colab,於是我就把這個庫放到了共享庫的配置檔案中,檔案是/etc/ld.so.conf

命令列中執行:

sudo echo "/usr/local/lib" >> /etc/ld.so.conf
sudo ldconfig

但是又出錯了(我不清楚這裡是我操作問題還是都有這個問題)……

報錯是:

libcudnn.so.7 is not a symbolic link

於是我進入/usr/local/cuda/lib64資料夾,找到libcudnn.so.7,發現別的檔案都是四個一組,兩個軟連線,一個庫檔案,一個普通檔案,唯獨libcudnn.so.7這個是三個庫檔案和一個普通檔案,於是我仿照其他的庫檔案修改成了兩個軟連線,一個庫檔案,一個普通檔案的組合。

再次執行:

sudo ldconfig

沒有報錯,切換到其他賬號,進入python3編輯器,再次測試:

python3
>>>import tensorflow

這次終於成功了!!!!這次弄前後一共花了四天時間,卸了裝,裝了卸,各種坑,希望以後再有人遇到這些問題能夠快速解決。