1. 程式人生 > >tensorflow學習筆記十:Ubuntu 16.04 上安裝 CUDA 7.5/8.0 超詳細教程

tensorflow學習筆記十:Ubuntu 16.04 上安裝 CUDA 7.5/8.0 超詳細教程

2017/1/5 更新

本篇文章是基於之前安裝CUDA 7.5的經驗寫的,但因為最近更新TensorFlow 到了r0.12版本,官方提示該版本TensorFlow 和CUDA 8.0 & cudnnv5.1 配合的最好,所以又卸了CUDA 7.5,重新裝了一遍CUDA 8.0,安裝的過程中發現了之前文件裡的些許不足,於是做了稍許修改。

PS:本來想在7.5的基礎上更新到8.0,但是失敗了。還把系統搞崩了,又重灌了一遍Ubuntu,唉,說多了都是淚啊

CUDA7.5和CUDA8.0的安裝過程是一毛一樣的。所以如果安裝CUDA8.0的同學,直接將下文中的所有7.5替換為8.0即可。

折騰了好多天,前後重灌了大概六、七次Ubuntu,終於上把CUDA安裝好了,被坑了好多次,也走了不少彎路。 
第一次發帖,還請多指教。

【環境】 
筆記本:ThinkPad T450 X86_64 
顯示卡:主顯 Intel HD Graphics 5500 ; 獨顯 NVIDIA GT 940M 
系統環境:Ubuntu14.04 64位、Windows7 64位 雙系統 
CUDA 版本: 7.5 
其他:Ubuntu中不存在已經安裝的CUDA

先說說自己遇到的大坑吧,安裝完CUDA之後總是遇到登入介面迴圈問題:輸入密碼後又跳回密碼輸入介面。嘗試了網上的多種說法無解,最終發現我的問題是出在雙顯示卡這裡。最後是在官方安裝文件中找到了答案。

問題解決方案: 
在安裝cuda時,會出現提示,詢問你是否需要安裝 openGL Libraries

。如果你的電腦是雙顯,而且用來顯示的那塊GPU不是NVIDIA,則OpenGL Libraries就不應該安裝,否則不是NVIDIA的那塊GPU使用的OpenGL Libraries會被覆蓋,然後GUI就無法工作了。

先談談關於安裝CUDA的幾點感受吧

關於 CUDA的安裝,網上有特別多的安裝帖子,我在安裝的時候也參考了很多。你會發現網上很多的安裝帖子,一般只做十幾個操作就完事了。但是CUDA的官方安裝文件卻非常冗長,有四十多頁,別覺得它是廢話,其實都是乾貨。

網上的安裝帖子之所以精煉,是因為它只涵蓋了必須的安裝步驟,跳過了許多的檢查操作(例如:檢查電腦中是否已安裝CUDA需要依賴的軟體、是否已經解除安裝會與CUDA產生衝突的軟體

)等。如果你足夠幸運,電腦裡上恰好該有的有,不該有的沒有,那這麼做沒問題,但通常情況下你並沒有那麼走運。

CUDA這個東西需要依賴的、牽著的東西特別多,如果沒有做好檢查,則在安裝時候特別容易出現各種各樣的衝突,且一旦衝突發生,即使解除安裝CUDA也不能解決問題,只能重灌系統。 
我最後就是參考CUDA的官方文件安裝成功的。

總結一下,我的安裝建議是

1) 一定要下一份CUDA官方的安裝文件,按照它的步驟一步步慢慢來,不可偷懶。 
CUDA 7.5 官方安裝文件下載 
2) 在安裝之前一定要詳細檢查自己的系統環境、軟體是否符合CUDA的安裝要求。不要存有僥倖心理,跳過檢查步驟。 
3) 每進行一項操作,都檢查一下該項操作是否成功

下面分享一下我的安裝步驟。基本跟CUDA的官方安裝文件的操作是一致的,不同的地方都有特別註明。

安裝CUDA主要分三大環節。 
一、安裝前的環境準備和檢查 
二、安裝CUDA 
三、安裝完的校驗。

1、安裝Ubuntu系統14.04

新安裝完的14.04系統會提示很多更新項。 
網上有很多帖子說不建議更新,說更新過後會導致安裝CUDA發生系統介面迴圈登入的問題。 
但是我更新後,並沒有遇到任何問題。

2、檢查自己的電腦環境是否具備安裝CUDA的條件

a) 檢查自己的GPU是否是CUDA-capable

在終端中輸入: $ lspci | grep -i nvidia ,會顯示自己的NVIDIA GPU版本資訊 
去CUDA的官網檢視自己的GPU版本是否在CUDA的支援列表中

b) 檢查自己的Linux版本是否支援 CUDA(Ubuntu 14.04沒問題)

c) 檢查自己的系統中是否裝了gcc

在終端中輸入: $gcc –version 可以檢視自己的gcc版本資訊

d) 檢查是否安裝了kernel header和 package development

在終端中輸入: $uname –r 可以檢視自己的kernel版本資訊 
在終端中輸入:$ sudo apt-get install linux-headers-$(uname -r) 
可以安裝對應kernel版本的kernel header和package development

以上檢查我的電腦系統都滿足要求,如果沒有滿足要求的話,可以參考cuda的官方文件,裡面有詳細的針對每個問題的解決方案。

3、 選擇安裝方式

CUDA提供兩種安裝方式:package manager安裝和runfile安裝 
我本來選的是 package manager 安裝,這種方法相對簡單,但嘗試了幾次都失敗。後來是轉換到runfile安裝才成功的。因此此處只介紹runfile安裝方式。

下載cuda安裝包:cuda官網下載,根據系統資訊選擇對應的版本,runfile安裝的話最後一項要選擇 runfile檔案

4、runfile安裝cuda

a) 禁用 nouveau

終端中執行:$ lsmod | grep nouveau,如果有輸出則代表nouveau正在載入。

Ubuntu的nouveau禁用方法: 
/etc/modprobe.d中建立檔案blacklist-nouveau.conf,在檔案中輸入一下內容

blacklist nouveau
options nouveau modeset=0
  • 1
  • 2
  • 1
  • 2

開啟終端,執行

$ sudo update-initramfs –u
  • 1
  • 1

設定完畢可以再次執行 $ lsmod | grep nouveau 檢查是否禁用成功,如果執行後沒有任何輸出,則代表禁用成功。

b) 重啟電腦,到達登入介面時,alt+ctrl+f1,進入text mode,登入賬戶

c) 輸入 $ sudo service lightdm stop 關閉圖形化介面

d) 切換到cuda安裝檔案的路徑,執行$ sudo sh cuda_7.5.18_linux.run

按照提示一步步操作

遇到提示是否安裝openGL ,選擇no(如果你的電腦跟我一樣是雙顯,且主顯是非NVIDIA的GPU需要選擇no,否則可以yes) 
其他都選擇yes或者預設 
安裝成功後,會顯示installed,否則會顯示failed

e) 輸入 $ sudo service lightdm start 重新啟動圖形化介面。

Alt + ctrl +F7,返回到圖形化登入介面,輸入密碼登入。 
如果能夠成功登入,則表示不會遇到迴圈登入的問題,基本說明CUDA的安裝成功了。

f) 重啟電腦。檢查Device Node Verification

檢查路徑/dev下 有無存在名為nvidia*(以nvidia開頭)的多個檔案(device files) 
如果沒有的話,可以參考官方文件裡的指導步驟,進行新增。

g) 設定環境變數。

終端中輸入 $ sudo gedit /etc/profile 
在開啟的檔案末尾,新增以下兩行。

$ export PATH=/usr/local/cuda-7.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda7.5/lib64
  • 1
  • 2
  • 1
  • 2

儲存檔案。

這裡有點與官方安裝文件稍有不同,需要說明:

官方文件裡說只需在終端中執行上述兩條export語句即可,但如果不將它們不寫入/etc/profile檔案的話,這樣的環境變數在你退出終端後就消失了,不起作用了,所以寫入才是永久的做法。

h) 重啟電腦,檢查上述的環境變數是否設定成功。

終端中輸入 : $ env 
在輸出的環境變數中檢查有無上述 g) 中設定的變數,如果有則代表設定成功。

到此為止,CUDA的安裝算是告一段落了。為了保險起見,建議進行下述的檢查工作,確保真正的安裝成功。

5、 安裝完畢後的檢查工作。

a) 檢查 NVIDIA Driver是否安裝成功

終端輸入 :$ cat /proc/driver/nvidia/version 會輸出NVIDIA Driver的版本號

b) 檢查 CUDA Toolkit是否安裝成功

終端輸入 : $ nvcc –V 會輸出CUDA的版本資訊

c) 嘗試編譯cuda提供的例子

切換到例子存放的路徑,預設路徑是 ~/NVIDIA_CUDA-7.5_Samples 
(即 /home/xxx/ NVIDIA_CUDA-7.5_Samples, xxx是你自己的使用者名稱)

然後終端輸入:$ make

如果出現錯誤的話,則會立即報錯停止,否則會開始進入編譯階段。 
我的第一次執行時出現了報錯,提示的錯誤資訊是系統中沒有gcc 
然後在終端執行 $ sudo apt-get install gcc 安裝完gcc後 再make就正常了 
整個編譯的時間持續比較長,耐心等待,大概十幾分鍾是需要的。

d) 執行編譯生成的二進位制檔案。

編譯後的二進位制檔案 預設存放在~/NVIDIA_CUDA-7.5_Samples/bin中。 
切換路徑 : cd ~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release 
終端輸入 :$ ./deviceQuery

看到類似如下圖片中的顯示,則代表CUDA安裝且配置成功(congratulation!!)

這裡寫圖片描述

再檢查一下系統和CUDA-Capable device的連線情況 
終端輸入 : $ ./sandwidthTest 
看到類似如下圖片中的顯示,則代表成功 
這裡寫圖片描述

最後祝大家都能順利安裝CUDA~~