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