1. 程式人生 > >Ubuntu 16.04 安裝cuda9.0 &udnn7.0 之妙法:NVIDIA 驅動->cuda->cudnn->安裝tensorflow-gpu(windows 也可參考),試一下?

Ubuntu 16.04 安裝cuda9.0 &udnn7.0 之妙法:NVIDIA 驅動->cuda->cudnn->安裝tensorflow-gpu(windows 也可參考),試一下?

1. 安裝Ubuntu16.04

系統下載地址: http://releases.ubuntu.com/16.04/
下載64位系統:ubuntu-16.04.4-desktop-amd64.iso
製作系統盤安裝,推薦使用rufus,這個簡單便捷,大力推薦。
下載網址:https://rufus.ie/en_IE.html
(隨便科普下,後續要在windows上重灌系統,沒必要製做U盤啟動盤了),直接在系統之家或者直接搜尋線上重灌系統就可以了,大把的軟體可以使用,方便快捷,傻瓜式安裝,全程不費心!!
點選rufus的 exe後,會出現以下介面
在這裡插入圖片描述
插上U盤,會自動識別,上面映象檔案選擇自己下載好的映象iso檔案就好,然後分割槽類別基本上可以不動的,MBR和GPT看自己的電腦適合,不過還是一般推薦MBR的分割槽型別,具體的區別可以去查下!
然後就是開始就好了,等待映象製作完畢!

重灌系統時就是插入電腦上重啟時,進入 BIOS 的介面(一般是按F10或者F12),這個看電腦型別吧,可以檢視下自己的電腦是哪種!
這是第二步,也是重要的一步,針對於新裝Tensorflow和Cuda,Cudnn的同學,建議一步一步來,不要急!
大體步驟: 安裝NVIDIA驅動 – > 安裝Cuda --> 安裝CUDNN – > 安裝Tensorflow-gpu,記得哦,不要亂了次序!!

2.安裝NVIDIA驅動

2.1 修改更新源
系統安裝完成後,應該首先修改的更新源,
輸入
sudo apt-get update
或者
sudo apt-get upgrade

2.2 驅動下載和安裝以及一些問題解決
接下來開始安裝NVIDIA驅動了,我的顯示卡是GTX1080Ti,安裝顯示卡驅動有3種方法:
1.系統更新驅動
2.新增官方ppa源
3.NVIDIA官網下載安裝
感興趣的同學可以去查詢對應的安裝方式,這裡我選擇的安裝方式是去NVIDIA官網下載Linux版本的驅動,
官網地址:https://www.geforce.cn/drivers 或者 https://www.nvidia.cn/Download/index.aspx?lang=cn
建議去左邊的地址可以選擇版本,右邊的地址會直接給你推薦最新版本,選擇你對應版本的系列選擇,作業系統別選錯了
在這裡插入圖片描述
搜尋出來這麼多結果,先別急著下載,BETA版本為測試版就別下載了,其次這麼多版本,到底下載哪個比較好,比如我們圖上第二個版本是390.77,這需要看我們CUDA的版本要求的驅動版本是多少
我們開啟CUDA下載網站:

https://developer.nvidia.com/cuda-downloads
我這裡目前最新的版本是CUDA9.2,再選擇了一系列的選項後會給出CUDA9.2的下載地址如下圖:
在這裡插入圖片描述

可以看到,下載的檔名為cuda_9.2.148_396.37,這個396.37就是我們NVIDIA驅動版本的最低要求,可是顯示卡驅動目前提供的Linux版本最高也就390.77,所以我們不能安裝CUDA9.2,於是我選擇安裝CUDA9.0,下面給出一個驅動要求表格,如果要下載CUDA其他版本請到cuda的存檔地址:https://developer.nvidia.com/cuda-toolkit-archive
在這裡插入圖片描述
上面講了這麼多,終於要開始安裝NVIDIA驅動了,CUDA9.0檔案可以先下載好
1)開啟終端,先刪除舊的驅動:

**sudo apt-get purge nvidia**

2)禁用自帶的 nouveau nvidia驅動
先執行下面命令,可以發現會顯示一些東西,我們現在要禁用掉,使它不顯示出來

**lsmod | grep nouveau**

執行以下命令建立一個檔案

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

並新增如下內容:

**blacklist nouveau
options nouveau modeset=0**

然後儲存檔案退出,執行下面命令更新一下

sudo update-initramfs -u

然後重啟電腦,重啟後開啟終端再次輸入命令

**lsmod | grep nouveau**

如果發現什麼都沒顯示,那麼說明禁用nouveau 成功了,然後開始安裝NVIDIA驅動

首先按Ctrl+Alt+F1進入控制檯,然後輸入使用者名稱密碼登陸,執行下面命令關閉圖形介面

**sudo service lightdm stop**

然後跳轉到存放檔案的路徑再執行安裝檔案,比如我的檔案放在Downloads目錄下,命令如下:

cd Downloads
sudo sh NVIDIA-Linux-x86_64-390.42.run --no-opengl-files

必須加上 --no-opengl-files ,否則會出現題主要是三種,
(1)迴圈登入,也就是登入之後在退出來到登入介面;
(2)介面變得很大,看著心慌,哈哈;
(3)登入進去了,顯示正常了,結果只有桌面背景和滑鼠等等
安裝過程種有出現提示選項,這裡主要注意兩點(如果看不懂選項的英文,自己查字典):
第一點(不是所有電腦都會遇到,如果沒有請忽視這
第一點是安裝提示 “sign the kernel module” 安裝過程中提示是否sign the kernel module(為核心模組簽名)
我當時是選擇了不簽名安裝,於是我這裡出現了錯誤提示 log:/ver/log/nvidia-installer.log ,查詢到了相關文章:https://blog.csdn.net/lipi37/article/details/79465685
大意是在支援UEFI的裝置上開啟Secure Boot 後,Ubuntu 16.04對於新增到核心的模組更加保守, 需要持有簽名才能新增到模組中, 而顯示卡驅動由於要新增到核心中, 所以需要簽名. 在安裝過程中我們也會看到NVIDIA顯示卡會提示是否生成簽名. 如果生成成功則沒有問題。如果不想生成簽名就需要進入BIOS關閉Secure Boot,在Key Management中Clear Secure Boot keys。雖然找到了解決辦法但我還是選擇生成簽名。
選擇生成簽名安裝,參考文章:https://www.cnblogs.com/marky/p/8243607.html 。接下來會繼續問使用已有的金鑰給模組簽名還是重新生成。這裡選在重新生成金鑰。繼續下去之後,金鑰會在/usr/share/nvidia/下生成一個nvidia*.der(私鑰)檔案和nvidia*.key(公鑰)檔案(這些都不用管),當提示是否刪除已生成的金鑰檔案時,選擇不刪除,因為之後要用到這兩個檔案。繼續安裝程式到最後會提示無法啟動模組。這是因為生成的金鑰還沒有新增到核心的信任庫中,我們在安裝完成後再匯入。
第二點提示是”Would you like to run the nvidia-xconfig utility to automatically update your X configuration file…”什麼的,選擇 No。
待安裝結束後,新增金鑰到核心的信任列表中:

sudo /etc/init.d/lightdm start      //開啟圖形介面
sudo mokutil --import /usr/share/nvidia/nvidia*.der    //必須加上 sudo

接下來提示輸入密碼,再次輸入密碼,然後

sudo  reboot  //重啟

在電腦剛啟動的時候會出現一個介面,就是叫你新增金鑰操作,選擇 “enroll the mok” ,然後按照步驟操作,輸入密碼什麼的,如果進錯了就再執行上面的 sudo mokutil…
匯入成功後就進入系統就可以了,圖如下(取自http://elrepo.org/tiki/SecureBootKey):
在這裡插入圖片描述
進入系統後測試一下是否安裝成功
nvidia-smi

nvidia-settings

出現類似下面的顯示,則安裝成功
在這裡插入圖片描述

3.安裝CUDA9.0

在上面已經說過了,CUDA9.2版本所需要的顯示卡驅動版本過高,所以這裡我選擇安裝CUDA9.0(CUDA9.1也支援)
安裝方法和上面類似
首先按Ctrl+Alt+F1進入控制檯,然後輸入使用者名稱密碼登陸,執行下面命令關閉圖形介面

sudo service lightdm stop

然後跳轉到存放檔案的路徑再執行安裝檔案,比如我的檔案放在Downloads目錄下,命令如下:

cd Downloads
sudo sh cuda_9.0.176_384.81_linux.run

安裝開始以後,首先是一個協議,一直按空格到底以後,輸入accept。其他的操作如下所示:

Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n(記得這裡輸入 n, 因為你已經之前安裝過了,所以沒必要安裝了,而且通過這個安裝會出現一些問題,莫名其妙的那種)

Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y
 
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:
 
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
 
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: y

複製程式碼
第二個安裝顯示卡驅動一定要選擇no,否則之前安裝的驅動就白裝了,有預設選項的直接選擇預設選項就可以了(直接回車)
安裝完成後,開啟圖形介面配置環境變數,執行如下命令開啟profile檔案

sudo service lightdm start   //開啟圖形介面
sudo gedit  /etc/profile

開啟檔案後在檔案末尾新增路徑,也就是安裝目錄,命令如下:

export  PATH=/usr/local/cuda-9.0/bin:$PATH
export  LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH 

儲存後執行一個命令後重啟電腦

sudo ldconfig
sudo reboot

檢視版本和測試CUDA的例子
檢視版本

nvcc --version

編譯例子測試

cd  /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

執行成功的話會出現下面資訊:
在這裡插入圖片描述
編譯例子的時候如果報錯顯示:CUDA driver version is insufficient for CUDA runtime version 解決方法解除安裝重新安裝參考文章:https://www.cnblogs.com/wolflzc/p/9117291.html

找到對應版本,下載後先把前面的安裝的解除安裝再安裝
如果安裝錯了版本比,如我一開始裝了CUDA9.2,解除安裝操作如下:

sudo apt-get remove cuda 

sudo apt-get autoclean

sudo apt-get remove cuda*

然後在目錄切換到/esr/local/下

cd /usr/local/ 
sudo rm -r cuda-9.2

然後按照前面的安裝CUDA的教程來就可以了
接下來再新增下環境變數

sudo gedit ~/.bashrc

開啟檔案後,將下面內容新增到檔案的最後面,儲存後退出

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}}

然後設定環境變數和動態連結庫,在命令列輸入:

sudo gedit /etc/profile

在開啟的檔案末尾加入:

export PATH=/usr/local/cuda/bin:$PATH

儲存之後,建立連結檔案:

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

在開啟的檔案中新增如下語句:

/usr/local/cuda/lib64

然後執行,使連結立即生效

sudo ldconfig

4.安裝cuDNN7.0

下載地址:https://developer.nvidia.com/rdp/cudnn-archive
進去後下載自己對應的CUDA版本的cudnn檔案,如下圖:
在這裡插入圖片描述
我是選擇 cuDNN v7.0.5 Library for Linux 千萬別選[Power8]的版本,我查了一下,這個是給Power8處理器使用的,由於v7.1.2版本還沒提供普通版本,所以就下載了v7.0.5
這裡下載是需要註冊登陸的,要填一些調查表什麼的之後才能下載,如果版本和我相同我這裡提供cuDNN的百度雲下載地址:
連結:https://pan.baidu.com/s/1Yi6IkjUDbiBmAd9Dm4YruQ 密碼:k73g
安裝過程也比較簡單,下載後是一個壓縮包,解壓下來放在cuda的路徑中就可以了
繼續Ctrl+alt+F1進入命令模式,關閉圖形介面

sudo service lightdm stop

使用命令解壓檔案cudnn-9.0-linux-x64-v7.tgz,並且複製到cuda路徑中

tar -zxvf cudnn-9.0-linux-x64-v7.tgz
cd cuda    
sudo cp lib64/lib* /usr/local/cuda/lib64/    
sudo cp include/cudnn.h /usr/local/cuda/include/ 

然後更新網路連線:

cd /usr/local/cuda/lib64/  
sudo chmod +r libcudnn.so.7.0.5  //自己檢視.so的版本 對應更改  
sudo ln -sf libcudnn.so.7.0.5 libcudnn.so.7  
sudo ln -sf libcudnn.so.7 libcudnn.so  
sudo ldconfig 

重新啟動圖形化介面

sudo service lightdm start

沒有顯示出圖形介面的話 按Ctrl+Alt+F7進入圖形介面

安裝完成後可用 nvcc -V 命令驗證是否安裝成功,若出現版本資訊則表示安裝成功
到這一步已經大功告成了,接下來就安裝Anaconda,配置Python,tensorflow等軟體

5.安裝Tensorflow-gpu版本,如果此時你都完成了,那麼恭喜你可以安裝Tensorflow-gpu版本了,然後安裝方式推薦是通過pip安裝,輸入命令:

pip install tensorflow-gpu

如果通過Anaconda安裝會出現一些問題,切記,因為Anaconda自帶安裝cuda和cudnn等,看著方便,其實安裝了會出現一些問題,很淡疼。。如果可以還是通過pip安裝,推薦的!

安裝好了就是進入python編譯器,輸入:

import tensorflow as tf 

檢視是否可以引入,然後嘗試一些輸出就可以了!