前言:
本篇文章是基于安裝CUDA 9.0的經(jīng)驗(yàn)寫(xiě),CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04兩個(gè)版本,如下圖所示(最下面的安裝方式我們選擇第一個(gè),即runfile方式):
大家可以先將CUDA文件下載下來(lái),但是最好不要急于安裝,一定要先將NVIDIA給出官方指導(dǎo)手冊(cè)仔細(xì)看一下,然后再找?guī)灼玫牟┛涂匆幌?,大致了解一下CUDA的安裝過(guò)程,對(duì)安裝過(guò)程中可能出現(xiàn)的問(wèn)題要大致有一個(gè)了解,不到萬(wàn)不得已不要重裝系統(tǒng)。
安裝建議:
1)去官網(wǎng)下載CUDA的同時(shí),一定要找份相應(yīng)官方的安裝文檔仔細(xì)閱讀,盡可能按照它的步驟一步步走,不可偷懶。同時(shí)再找?guī)灼玫牟┛妥鳛閰⒖?,安裝之前做到胸有成竹。
2)在安裝之前一定要詳細(xì)檢查自己的電腦配置(單顯卡還是雙顯卡)、顯卡的種類(lèi)是否符合CUDA的安裝要求、系統(tǒng)是否滿足安裝要求。
3)安裝過(guò)程中每進(jìn)行一項(xiàng)操作,都盡量去檢查一下該項(xiàng)操作是否操作成功。
安裝過(guò)程:
一、安裝、熟悉ubuntu16.04系統(tǒng)
安裝軟件之前最好對(duì)ubuntu的命令行有一些基本的了解,像sudo、cd、ls、nona、cat、chmod等等,這樣能夠在安裝過(guò)程中省去很多不必要的麻煩。(推薦大家去百度搜一下莫凡Python,他有關(guān)于ubuntu命令的視頻,每一集都很精煉,講的很好)
二、檢查自己的電腦環(huán)境是否具備安裝CUDA的條件
1) 驗(yàn)證自己的電腦是否有一個(gè)可以支持CUDA的GPU
你可以電腦的配置信息中找到顯卡的具體型號(hào),如果你是雙系統(tǒng),在Windows下的設(shè)備管理器中也可以查到顯卡的詳細(xì)信息;
你也可以在ubuntu的終端中輸入命令: $ lspci | grep -i nvidia ,會(huì)顯示出你的NVIDIA GPU版本信息,不過(guò)不是很詳細(xì)。
我的顯示為(GeForceGT630M):
01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (rev a1)
然后去CUDA的官網(wǎng)查看自己的GPU版本是否在CUDA的支持列表中。
2) 驗(yàn)證自己的Linux版本是否支持 CUDA(Ubuntu 16.04沒(méi)問(wèn)題)
輸入命令:
$ uname -m && cat /etc/*release
結(jié)果顯示:
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
......
3) 驗(yàn)證系統(tǒng)是否安裝了gcc
在終端中輸入: $ gcc –version
結(jié)果顯示:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
......
若未安裝請(qǐng)使用下列命令進(jìn)行安裝:
sudo apt-get install build-essential
4) 驗(yàn)證系統(tǒng)是否安裝了kernel header和 package development
a、查看正在運(yùn)行的系統(tǒng)內(nèi)核版本:
在終端中輸入: $ uname –r
結(jié)果顯示:
4.10.0-40-generic
b、在終端中輸入:$ sudo apt-get install linux-headers-$(uname -r)
可以安裝對(duì)應(yīng)kernel版本的kernel header和package development
結(jié)果顯示:
......
升級(jí)了 0 個(gè)軟件包,新安裝了 0 個(gè)軟件包,要卸載 0 個(gè)軟件包,有 4 個(gè)軟件包未被升級(jí)。
表示系統(tǒng)里已經(jīng)有了,不用重復(fù)安裝。
若以上各項(xiàng)驗(yàn)證檢查均滿足要求,便可進(jìn)行下面的正式安裝過(guò)程。如果沒(méi)有滿足要求的話,可以參考cuda的官方文檔,里面有詳細(xì)的針對(duì)每個(gè)問(wèn)題的解決方案。
三、選擇安裝方式
CUDA提供兩種安裝方式:package manager安裝和runfile安裝, package manager 安裝方式相對(duì)簡(jiǎn)單一些,但是我在閱讀別人博客的過(guò)程中發(fā)現(xiàn)選擇這種方式在安裝過(guò)程中問(wèn)題可能多一點(diǎn),失敗的概率較大。為了減少不必要的麻煩我選擇runfile安裝方式。
下載cuda安裝包:cuda官網(wǎng)下載,根據(jù)系統(tǒng)信息選擇對(duì)應(yīng)的版本,runfile安裝的話最后一項(xiàng)要選擇 runfile文件。
下載完后,用MD5 檢驗(yàn),如果序號(hào)不和,得重新下載(由于當(dāng)時(shí)沒(méi)有保存,這里我采用了別人的截圖,注意這里的cuda版本號(hào),人家采用的cuda_8.0)
輸入命令:$ md5sum cuda_9.0.176_linux.run
四、runfile安裝cuda
1) 禁用 nouveau驅(qū)動(dòng)
終端中運(yùn)行:$ lsmod | grep nouveau,如果有輸出則代表nouveau正在加載。需要我們手動(dòng)禁掉nouveau。
Ubuntu的nouveau禁用方法:
a、在/etc/modprobe.d中創(chuàng)建文件blacklist-nouveau.conf
輸入命令:$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf
(利用vi編輯器編輯和保存文件)
在文件中輸入一下內(nèi)容:
blacklist nouveau
options nouveau modeset=0
b、執(zhí)行:
$ sudo update-initramfs –u
c、再執(zhí)行:
若無(wú)內(nèi)容輸出,則禁用成功,若仍有內(nèi)容輸出,請(qǐng)檢查操作,并重復(fù)上述操作。
注:vi是Linux終端下或控制臺(tái)下常用的編輯器,基本的操作方式為:vi /路徑/文件名
例如:vi /etc/fstab表示顯示/etc/fstab文件的內(nèi)容。使用鍵盤(pán)上的Page Up和Page Down鍵可以上下翻頁(yè);按下Insert鍵,可以見(jiàn)到窗口左下角有“Insert”字樣,表示當(dāng)前為插入編輯狀態(tài),這時(shí)從鍵盤(pán)輸入的內(nèi)容將插入到光標(biāo)位置;再按下Insert鍵,左下角將有“Replace”字樣,表示當(dāng)前為替換編輯狀態(tài),這時(shí)從鍵盤(pán)輸入的內(nèi)容將替換光標(biāo)位置的內(nèi)容。編輯完內(nèi)容后,按下Esc鍵,并輸入“:wq”,然后回車(chē)就可以保存退出。
如果不想保存而直接退出,則按下Esc鍵后,輸入“:q!”,然后回車(chē)即可?!皐q”表示W(wǎng)rite和Quit,即保存退出;“q!”表示忽略修改強(qiáng)行退出。
以下操作建議手機(jī)拍照,建議把下載的cuda_9.0.176_384.81_linux.run文件重命名為cuda.run并移動(dòng)到Home文件夾下(為了安裝方便)
2) 重啟電腦,進(jìn)入登錄界面的時(shí)候,不要登錄進(jìn)入桌面(否則可能會(huì)失敗,若不小心進(jìn)入,請(qǐng)重啟電腦),直接按Ctrl+Alt+F1進(jìn)入文本模式(命令行界面),登錄賬戶。
3) 輸入 $ sudo service lightdm stop 關(guān)閉圖形化界面
4) 切換到cuda安裝文件的路徑:$ cd Home/
運(yùn)行$ sudo sh cuda_7.5.18_linux.run
按照提示一步步操作
注:a、一定要按照提示)輸入相應(yīng)字符,例如有的需要輸入accept,有的需要輸入yes;
b、遇到提示是否安裝openGL ,選擇no(如果你的電腦跟我一樣是雙顯,且主顯是非NVIDIA的GPU在工作需要選擇no,否則可以yes),其他都選擇yes或者默認(rèn)即可。(如果您的電腦是雙顯卡且在這一步選擇了yes,那么你極有可能安裝完CUDA之后,重啟圖形化界面后遇到登錄界面循環(huán)問(wèn)題:輸入密碼后又跳回密碼輸入界面。
這是因?yàn)槟愕碾娔X是雙顯,而且用來(lái)顯示的那塊GPU不是NVIDIA,則OpenGL Libraries就不應(yīng)該安裝,否則你正在使用的那塊GPU(非NVIDIA的GPU)的OpenGL Libraries會(huì)被覆蓋,然后GUI就無(wú)法工作了。)
安裝成功后,會(huì)顯示installed,否則會(huì)顯示failed。
5) 輸入 $ sudo service lightdm start 重新啟動(dòng)圖形化界面。
同時(shí)按住Alt + ctrl +F7,返回到圖形化登錄界面,輸入密碼登錄。
如果能夠成功登錄,則表示不會(huì)遇到循環(huán)登錄的問(wèn)題,基本說(shuō)明CUDA的安裝成功了。
如果你遇到了重復(fù)登陸情況,不用急著重裝系統(tǒng),官方教程上有提及,原因上一步的注中有提及,在安裝openGL時(shí)你可能不注意選擇了yes,請(qǐng)卸載cuda,然后重裝。
卸載:由于登陸進(jìn)入不到圖形用戶界面(GUI),但我們可以進(jìn)入到文本用戶界面(TUI)
在登陸界面狀態(tài)下,按Ctrl + Alt + f1,進(jìn)入TUI
執(zhí)行
$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
$ sudo /usr/bin/nvidia-uninstall
然后重啟
重新安裝.run 再次安裝時(shí)請(qǐng)一定留意,在提示是否安裝OpenGL時(shí),你的是雙顯卡應(yīng)該選則n。
6) 重啟電腦,檢查Device Node Verification。
執(zhí)行
可能出現(xiàn)a、b兩種結(jié)果,請(qǐng)對(duì)號(hào)入座。
a、若結(jié)果顯示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
或顯示出類(lèi)似的信息,應(yīng)該有三個(gè)(包含一個(gè)類(lèi)似/dev/nvidia-nvm的),則安裝成功。
b、大多數(shù)結(jié)果可能會(huì)是這樣
ls: cannot access/dev/nvidia*: No such file or directory
或是這樣的,只出現(xiàn)
/dev/nvidia0 /dev/nvidiactl
a中的一個(gè)或兩個(gè),但沒(méi)有/dev/nvidia-num,即文件顯示不全。
不用著急也不用急著重裝系統(tǒng)(我在安裝時(shí)就是這種情況),官方指導(dǎo)中有詳細(xì)的解決方案,但是我的方法和官方稍微有些出入。
首先要添加一個(gè)啟動(dòng)腳本(添加啟動(dòng)腳本的方法大致有兩種,我采用最直接的方法,另一種可以先創(chuàng)建一個(gè)文件然后通過(guò)mv的方式移動(dòng)到啟動(dòng)文件夾下,可自行百度)
執(zhí)行
如果你是第一次打開(kāi)這個(gè)文件,它應(yīng)該是空的(除了一行又一行的#注釋項(xiàng)外)。這文件的第一行是
把-e去掉(這步很重要,否則它不會(huì)加載這文本的內(nèi)容)
然后把下列內(nèi)容除了#!/bin/bash外復(fù)制到其中,(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
下次重啟時(shí),你應(yīng)該能直接看到/dev目錄下的三個(gè)nvidia的文件
輸入:$ ls /dev/nvidia*
結(jié)果顯示:/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
成功!
7) 設(shè)置環(huán)境變量。
終端中輸入 $ sudo gedit /etc/profile
在打開(kāi)的文件末尾,添加以下兩行。
64位系統(tǒng):
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}}
32位系統(tǒng):
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}}
保存文件,并重啟。因?yàn)閟ource /etc/profile是臨時(shí)生效,重啟電腦才是永久生效。
這里有點(diǎn)與官方安裝文檔稍有不同,需要說(shuō)明:
官方文檔里說(shuō)只需在終端中運(yùn)行上述兩條export語(yǔ)句即可,但如果不將它們不寫(xiě)入/etc/profile文件的話,這樣的環(huán)境變量在你退出終端后就消失了,不起作用了,所以寫(xiě)入才是永久的做法。
8) 重啟電腦,檢查上述的環(huán)境變量是否設(shè)置成功。
a、 驗(yàn)證驅(qū)動(dòng)版本
敲入
$ cat /proc/driver/nvidia/version
結(jié)果顯示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.81 Sat Sep 2 02:43:11 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
b、 驗(yàn)證CUDA Toolkit
敲入
$ nvcc -V 會(huì)輸出CUDA的版本信息
如果是這樣的:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
可能是環(huán)境配置沒(méi)有成功,請(qǐng)重復(fù)上述步驟7)。
五、 嘗試編譯cuda提供的例子
1)打開(kāi)終端輸入:$ cd /home/xxx/NVIDIA_CUDA-9.0_Samples 其中xxx是你自己的用戶名,通過(guò)命令cd進(jìn)入NVIDIA_CUDA-9.0_Samples目錄。
然后終端輸入:$ make
系統(tǒng)就會(huì)自動(dòng)進(jìn)入到編譯過(guò)程,整個(gè)過(guò)程大概需要十幾到二十分鐘,請(qǐng)耐心等待。如果出現(xiàn)錯(cuò)誤的話,系統(tǒng)會(huì)立即報(bào)錯(cuò)停止。
第一次運(yùn)行時(shí)可能會(huì)報(bào)錯(cuò),提示的錯(cuò)誤信息可能會(huì)是系統(tǒng)中沒(méi)有g(shù)cc,
解決辦法就是通過(guò)命令重新安裝gcc就行,在終端輸入:$ sudo apt-get install gcc 安裝完gcc后, 再make就正常了。
如果編譯成功,最后會(huì)顯示Finished building CUDA samples,如下圖所示。
2)運(yùn)行編譯生成的二進(jìn)制文件。
編譯后的二進(jìn)制文件 默認(rèn)存放在NVIDIA_CUDA-9.0_Samples/bin中。
接著在上一個(gè)終端中輸入 :$ cd /home/lxxx/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release 其中xxx是你自己的用戶名
然后在終端輸入 :$ ./deviceQuery
結(jié)果如下圖所示:看到類(lèi)似如下圖片中的顯示,則代表CUDA安裝且配置成功,其中 Result = PASS代表成功,若失敗 Result = FAIL
3)最后再檢查一下系統(tǒng)和CUDA-Capable device的連接情況
終端輸入 : $ ./bandwidthTest
看到類(lèi)似如下圖片中的顯示,則代表成功
最后祝大家都能愉快安裝使用CUDA
到此這篇關(guān)于Ubuntu16.04上安裝CUDA9.0 詳細(xì)教程的文章就介紹到這了,更多相關(guān)Ubuntu16.04安裝CUDA9.0內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!