1. 程式人生 > >ubuntu16.04下安裝cuda9.0+nvidia-384+cudnn7.1.4+tensorflow1.9。

ubuntu16.04下安裝cuda9.0+nvidia-384+cudnn7.1.4+tensorflow1.9。

本機配置:i7-8700 GTX1070。經測試,本方案在i7-9700K 泰坦XP上也適用:

在安裝之前首先感謝實驗室師弟寫的部落格,但是寫的估計有點亂,為了實驗室以後裝cuda這些東西方便一些,這裡配上圖,改進了一下之前師弟寫的教程,更易懂一點:

1.安裝nvidia-384:

進入軟體更新,附加驅動,選擇nvidia-384,之後點選右下角的應用更改,然後輸入密碼,等它安裝:

安裝成功之後會提示我們重啟:

然後我們選擇重啟。

重啟之後我們進入終端,輸入命令:

nvidia-smi

如果能顯示出下圖類似的資訊,則說明安裝成功了:

2.檢查相關環境配置:

在安裝之前我們先更新一下,具體操作如下所示:

之後:

可能需要更新一些東西,我們輸入y,然後回車就可以啦。之後系統就會自動下載更新一些東西。裝完之後我們會顯示如下資訊:

就是不報錯就可以了,我們接下來做一些測試:

1.驗證自己的電腦是否有一個可以支援CUDA的GPU:

你可以在電腦的配置資訊中找到顯示卡的具體型號,如果你是雙系統,在windows下的裝置管理器中也可以查到顯示卡的詳細資訊;在ubuntu下面的話,你可以通過下面這行命令來簡單檢視一下NVIDIA GPU版本資訊:

lspci | grep -i nvidia

2.驗證自己的linux版本是否支援CUDA:

uname -m && cat /etc/*release

3.驗證系統是否安裝了gcc

gcc --version

其實這個剛裝完系統的話應該都裝好了,但是為了保險起見,你還是可以檢視一下,如果你沒有安裝的話,你可以採取下面的命令對其進行安裝:

sudo apt-get install build-essential

4.驗證系統是否安裝了kernel header和package development:

a.檢視正在執行的系統核心版本:

uname -r

b.安裝對應kernel版本的kernel header和package development:

sudo apt-get install linux-headers-$(uname -r)

這個的話表示系統中已經有了,不用重複安裝。

如果以上各項檢查均滿足要求的話,接下來就可以正式地進入安裝介面了,如果有些地方沒有滿足要求的話,你需要參考cuda的官方文件,裡面有詳細的針對每個問題的解決方案。在以下連結中可以找到:https://docs.nvidia.com/cuda/

3.安裝cuda:

我們按照上述方案進行選擇,之後選擇下載Base Installer。下載完成之後的話,我們會在ubuntu的下載目錄下找到:

但是我一般將其安裝在home資料夾下面,所以我需要將其複製到home資料夾下面:

之後的話,我們可以採用MD5檢驗序號,看看序號是否會對得上:

cuda_9.0.176_384.81_linux.run

可以看到這裡的版本是對到的,那麼沒有什麼問題,一切都很正常。接下來的話,我們需要採用runfile安裝cuda:

1.禁用nouveau驅動:

lsmod | grep nouveau

可以看到,我的電腦是沒有輸出的。如果有輸出的話則代表nouveau正在載入,我們需要手動禁止掉(由於我的電腦是已經被禁止掉了的,所以下面禁止的方法並沒有試驗過,大家慎重一點):

Ubuntu的nouveau禁用方法:

a、在/etc/modprobe.d中建立檔案blacklist-nouveau.conf,命令如下:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

在檔案中輸入以下內容:

blacklist nouveau             options nouveau modeset=0

b.執行命令:

sudo update-initramfs –u

之後再次檢視是否禁止成功:

lsmod | grep nouveau

若無內容輸出,則禁用成功,若仍有內容輸出,請檢查操作,並重覆上述操作。

2.按Alt + ctrl +F1進入命令列介面:

輸入自己的使用者名稱以及密碼:

這裡的話會顯示中文亂碼,我們可以下載一個包來解決這個問題:

sudo apt-get install fbterm

之後啟動它:

sudo fbterm

然後我們進入zhiqianghe這個使用者(每個人設定的不同):

su zhiqianghe

得到下面的介面:

之後我們關閉圖形化介面:

sudo service lightdm stop

之後我們再切換到我們cuda檔案的位置,在我這裡就是在當前目錄下,然後我們執行它:

sudo sh cuda_9.0.xx_xx_linux.run

對應自己的檔名稱。之後我們進入nvidia的協議裡面,需要我們看他的協議:

我們敲回車,敲到100%

之後它顯示問我們是不是接受這個東西,我們在終端輸入accept。

然後提示是否安裝nivdia的驅動,我們不需要安裝這個,輸入n,之後敲回車:

遇到提示是否安裝openGL ,選擇no(如果你的電腦跟我一樣是雙顯,且主顯是非NVIDIA的GPU在工作需要選擇no,否則可以yes),其他都選擇yes或者預設即可。(如果您的電腦是雙顯示卡且在這一步選擇了yes,那麼你極有可能安裝完CUDA之後,重啟圖形化介面後遇到登入介面迴圈問題:輸入密碼後又跳回密碼輸入介面。 這是因為你的電腦是雙顯,而且用來顯示的那塊GPU不是NVIDIA,則OpenGL Libraries就不應該安裝,否則你正在使用的那塊GPU(非NVIDIA的GPU)的OpenGL Libraries會被覆蓋,然後GUI就無法工作了。)

安裝成功後,會顯示installed,否則會顯示failed。

之後我們重新啟動圖形化介面:

sudo service lightdm start

如果能夠成功登入,則表示不會遇到迴圈登入的問題,基本說明CUDA的安裝成功了。如果不能進入的話,參考以下方案,否則跳過:

如果你遇到了重複登陸情況,不用急著重灌系統,官方教程上有提及,原因上一步的注中有提及,在安裝openGL時你可能不注意選擇了yes,請解除安裝cuda,然後重灌。 解除安裝:由於登陸進入不到圖形使用者介面(GUI),但我們可以進入到文字使用者介面(TUI)

在登陸介面狀態下,按Ctrl + Alt + f1,進入TUI 執行 $ sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl $ sudo /usr/bin/nvidia-uninstall 然後重啟 $ sudo reboot 重新安裝.run   再次安裝時請一定留意,在提示是否安裝OpenGL時,你的是雙顯示卡應該選則n。  

進入ubuntu之後我們重啟電腦:

sudo reboot

之後檢查Device Node Verification

ls /dev/nvidia*

包含一個類似/dev/nvidia-uvm的,則安裝成功。

大多數結果可能會是這樣 ls: cannot access/dev/nvidia*: No such file or directory 或是這樣的,只出現 /dev/nvidia0     /dev/nvidiactl a中的一個或兩個,但沒有/dev/nvidia-num,即檔案顯示不全。 不用著急也不用急著重灌系統(我在安裝時就是這種情況),官方指導中有詳細的解決方案,但是我的方法和官方稍微有些出入。

首先要新增一個啟動指令碼(新增啟動指令碼的方法大致有兩種,我採用最直接的方法,另一種可以先建立一個檔案然後通過mv的方式移動到啟動資料夾下,可自行百度) 執行 $ sudo vi /etc/rc.local 如果你是第一次開啟這個檔案,它應該是空的(除了一行又一行的#註釋項外)。這檔案的第一行是 #!/bin/sh -e 把-e去掉(這步很重要,否則它不會載入這文字的內容) 然後把下列內容除了#!/bin/bash外複製到其中,(before exit 0 )儲存退出。

#!/bin/bash /sbin/modprobe nvidia if [ "$?" -eq 0 ]; then # Count the number of NVIDIA controllers found. NVDEVS=`lspci | grep -i NVIDIA` N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l` NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l` N=`expr $N3D + $NVGA - 1` for i in `seq 0 $N`; do mknod -m 666 /dev/nvidia$i c 195 $i done mknod -m 666 /dev/nvidiactl c 195 255 else exit 1 fi /sbin/modprobe nvidia-uvm if [ "$?" -eq 0 ]; then # Find out the major device number used by the nvidia-uvm driver D=`grep nvidia-uvm /proc/devices | awk '{print $1}'` mknod -m 666 /dev/nvidia-uvm c $D 0 else exit 1 fi 下次重啟時,你應該能直接看到/dev目錄下的三個nvidia的檔案 輸入:$ ls /dev/nvidia* 結果顯示:/dev/nvidia0       /dev/nvidiactl       /dev/nvidia-uvm

成功!  

由於我這裡是一次成功,所以上述方案僅供參考,並沒有實踐過。

接下來我們設定環境變數:

sudo gedit /etc/profile

上述命令會開啟一個檔案,我們在末尾新增兩行:

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

我這裡裝的是cuda9.0如果你們裝的不是的話,這個cuda-9.0這個目錄就還得改一下。

如果是32位系統的話:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib\                                                    ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

之後我們選擇重啟電腦:

sudo reboot

a.之後我們檢查上述環境是否設定成功:

cat /proc/driver/nvidia/version

得到上述結果。

b.再驗證CUDA Toolkit:

nvcc -V

得到下圖結果:

如果你的是:

The program 'nvcc' is currently not installed. You can install it by typing: sudo apt-get install nvidia-cuda-toolkit

這樣的話,那就表明環境變數沒有新增成功,你需要按照上文中說的新增環境變數,再去新增一下。

接下來我們嘗試編譯一下cuda的例子:

我們首先需要進入NVIDIA_CUDA-9.0_Samples這個資料夾下面,在這下面開啟終端,然後make一下:

我這裡的話也是一次就成功了,如果出現沒有gcc報錯的話,我們可以安裝一下:

 sudo apt-get install gcc

如果編譯成功,最後會顯示Finished building CUDA samples,如下圖所示:

之後的話,我們執行編譯生成的二進位制檔案:進入到這個NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release資料夾下面,輸入:./deviceQuery  

./deviceQuery  

結果如下圖所示:看到類似如下圖片中的顯示,則代表CUDA安裝且配置成功,其中 Result = PASS代表成功,若失敗 Result = FAIL:

最後再檢查一下系統和CUDA-Capable device的連線情況:

終端輸入 : $

./bandwidthTest

看到類似如下圖片中的顯示,則代表成功:

4.安裝cudnn:

然後提示我們登入,有帳號的話就登入,沒有的話就註冊一個:

之後我們點選上圖的安裝包進行下載:

我們將其解壓,解壓之後名稱會變為cuda:

之後我們將其移入home資料夾下面,然後進入cuda的include資料夾下面,執行下面這個命令複製標頭檔案:

sudo cp cudnn.h /usr/local/cuda/include/

之後在終端進入cuda/lib64資料夾下面,執行以下命令:

#複製動態連結庫

sudo cp lib* /usr/local/cuda/lib64/ 

 #刪除原有動態檔案

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 

 #生成軟銜接

sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7

#生成軟連結

sudo ln -s libcudnn.so.7 libcudnn.so

隨後需要將路徑/usr/local/cuda/lib64 新增到動態庫:

sudo gedit /etc/ld.so.conf.d/cuda.conf

在開啟的檔案裡面輸入:

/usr/local/cuda/lib64

終端下接著輸入命令使連結生效:

sudo ldconfig

之後檢視一下是否連結成功:

sudo ldconfig -v

可以看到,我們這裡是有這個檔案的。ldconfig命令的用途主要是在預設搜尋目錄/lib和/usr/lib以及動態庫配置檔案/etc/ld.so.conf內所列的目錄下,搜尋出可共享的動態連結庫(格式如lib*.so*),進而創建出動態裝入程式(ld.so)所需的連線和快取檔案。

之後用下面這個命令檢視是否安裝成功:

5.安裝Tensorflow:

我們首先看一下有沒有python:

一般都有,沒有的話安裝一下:

之後安裝一下pip:

sudo apt-get install python-pip

更新一下pip:

sudo pip install -U pip

安裝tensorflow-gpu 1.9.0:

sudo pip install tensorflow-gpu==1.9.0

之後進入python輸入以下命令:

import tensorflow as tf
print(tf.__version__)