Ubuntu 14.04安裝CUDA-8.0

about

blog參考了
masa_fishUbuntu 14.04 上安裝 CUDA 7.5 超詳細(xì)教程
dennyCaffe學(xué)習(xí)系列(1):安裝配置ubuntu14.04+cuda7.5+caffe+cudnn
dongbeidamiUbuntu 14.04上安裝caffe
NVIDIA官方教程de NVIDIA CUDA Installation Guide for Linux

0. FIRST OF ALL

0.1 如果之前安裝過(guò),但失敗了的同學(xué),請(qǐng)敲下...

a)..deb安裝失敗的....

$ sudo apt-get --purge remove nvidia*

b).run安裝失敗的....
執(zhí)行

$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
$ sudo /usr/bin/nvidia-uninstall
  • 在 a) 或 b) 后,若仍安裝有問(wèn)題,請(qǐng)敲下
$ sudo apt-get autoremove --purge nvidia-*   #把nvidia驅(qū)動(dòng)清個(gè)干干凈凈
$ sudo reboot
  • !Note: sudo apt-get remove --purge nvidia-*這條指令并沒(méi)卸載干凈,可能存在驅(qū)動(dòng)的沖突,導(dǎo)致安裝不成功

0.2 建議來(lái)一本官方安裝手冊(cè):

NVIDIA CUDA INSTALLATION GUIDE FOR LINUX

1 PRE-INSTALLATION ACTION

1.1 Verify you have a CUDA-Capable GPU

$ lspci | grep -i nvidia

我的機(jī)器顯示:

01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (rev a1)

這里 驗(yàn)證型號(hào)

1.2 Verify you have a Supported Version of Linux

$ uname -m && cat /etc/*release

結(jié)果顯示:

x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
...

1.3 Verify the System Has GCC Installed

$ gcc --version

結(jié)果顯示:

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
...

1.4 Verify the System has the Correct Kernel Headers and Development Packages Installed

查看正在運(yùn)行的系統(tǒng)內(nèi)核版本

$ uname -r

結(jié)果顯示

4.4.0-45-generic

安裝對(duì)應(yīng)的kernels header和開(kāi)發(fā)包:

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

1.5 Download the NVIDIA CUDA Toolkit

這里下載最新.run版本
這里選擇歷史版本

cudn.png

下載完后,用MD5 檢驗(yàn),如果序號(hào)不和,得重新下載

$ md5sum cuda_8.0.27_linux.run
5639ffeb939ee58a81554d06bd084e15  cuda_8.0.27_linux.run

2. RUNFILE INSTALLATION

2.1 Disabling Nouveau

$ lsmod | grep nouveau

如果有內(nèi)容輸出,則需禁掉nouveau

$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf

添加如下內(nèi)容:

blacklist nouveau
options nouveau modeset=0

保存退出(:wq)
執(zhí)行

$ sudo update-initramfs –u

再執(zhí)行

$ lsmod | grep nouveau

若無(wú)內(nèi)容輸出,則禁用成功
然后重啟電腦

$ sudo reboot

2.2 Reboot Into Text Mode

重啟后,進(jìn)入登錄界面的時(shí)候,不要登錄進(jìn)入桌面(否則可能會(huì)失敗,若不小心進(jìn)入,請(qǐng)重啟電腦),直接按Ctrl+Alt+F1進(jìn)入文本模式(命令行界面),登錄賬戶。

關(guān)閉圖形化界面

$ sudo service lightdm stop

切換到cuda_8.0.27_linux.run的目錄,執(zhí)行

$ sudo sh cuda_8.0.27_linux.run

!Note:安裝的時(shí)候,要讓你先看一堆文字(EULA),我們直接不停的按空格鍵到100%;
遇到提示是否安裝openGL ,選擇no,其他的可以一路accept, yes或回車(chē)

安裝成功后,會(huì)顯示installed,否則會(huì)顯示failed。

重啟圖形化界面

$ sudo service lightdm start

登錄時(shí)能進(jìn)入桌面,不會(huì)一直在重復(fù)登錄,成功已近大半。

!Note:如果出現(xiàn)重復(fù)登陸情況,請(qǐng)卸載cuda,然后重裝。
原因:是OpenGLNVIDIA發(fā)生了什么什么的。
卸載:由于登陸進(jìn)入不到圖形用戶界面(GUI),但我們可以進(jìn)入到文本用戶界面(TUI)(TUI很酷有沒(méi)有?)

  • 在登陸界面時(shí),按Ctrl + Alt + f1,進(jìn)入TUI
  • 執(zhí)行
$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
$ sudo /usr/bin/nvidia-uninstall
  • 然后重啟
$ sudo reboot
  • 重新安裝.run(安裝時(shí)請(qǐng)留眼,在提示是否安裝OpenGL時(shí),應(yīng)該選no)

2.3 Device Node Verification

執(zhí)行

$ ls /dev/nvidia*

可能出現(xiàn)a), b), c),d)三種結(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)如果運(yùn)氣有點(diǎn)背,結(jié)果是這樣的
ls: cannot access /dev/nvidia*: No such file or directory

或是這樣的,只出現(xiàn)

/dev/nvidia0  /dev/nvidiactl

中的一個(gè)或兩個(gè),但沒(méi)有/dev/nvidia-num

莫方,也許還有希望(我在安裝時(shí)就是這種情況。。。)按照官方的做法:

把下面的.sh文件隨便命個(gè)名(我命名為Nka.sh)

#!/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

然后執(zhí)行

$ sudo chmod +x Nka.sh
$ sudo ./Nka.sh
$  ls /dev/nvidia*
/dev/nvidia0  /dev/nvidiactl  /dev/nvidia-uvm

成功!

1, 這種做不太友好,我的意思是,當(dāng)下次重啟電腦時(shí),你使用ls /dev/nvidia*指令時(shí),你是看不到那三個(gè)nvidia的文件了。所以你又得手動(dòng)執(zhí)行
sudo ./Nka.sh指令了,是不是很煩!其實(shí)上面的.sh文件是startup scipt,也就是啟動(dòng)腳本。顧名思義,就是在系統(tǒng)啟動(dòng)時(shí),自動(dòng)加載的。哈,這么棒的功能就是我們想要的。
2, 添加啟動(dòng)腳本的方法大致有兩種,我就此介紹一種最傻瓜化的方法。
執(zhí)行

$ sudo vi /etc/rc.local

如果你是第一次打開(kāi)這個(gè)文件,它應(yīng)該是空的(除了一行又一行的#注釋項(xiàng)外)。這文件的第一行是

#!/bin/sh -e

-e去掉(這步很重要,否則它不會(huì)加載這文本的內(nèi)容)
然后把Nka.sh的內(nèi)容除了#!/bin/bash外復(fù)制到其中,(before exit 0 )保存退出。
下次重啟時(shí),你應(yīng)該能直接看到/dev目錄下的三個(gè)nvidia的文件

$ ls /dev/nvidia*
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
  • c) 如果人品實(shí)在不好(我就遇過(guò)幾次。。。),結(jié)果是這樣的
modprobe: ERROR: could not insert 'nvidia_uvm': Operation not permitted

少年,我救不了你了。但是winney大神可以。(在此謝過(guò)她了,阿 里 嘎 多?。?/p>

當(dāng)出現(xiàn)這種情況時(shí),可能是驅(qū)動(dòng)打起架來(lái)了。
執(zhí)行

$ sudo apt-get autoremove --purge nvidia-* #把nvidia驅(qū)動(dòng)清個(gè)干干凈凈
$ sudo reboot         #一定記得重啟,不然你會(huì)后悔的!

然后

$ sudo ./Nka.sh
$ ls /dev/nvidia*

這時(shí),應(yīng)該可以見(jiàn)到

/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
  • d) 未知,有點(diǎn)悲傷的告訴你,少年,我只能幫到這了,建議網(wǎng)上另尋方案,或重裝.run。Gook Luck!

3 POST-INSTALLATION ACTIONS

3.1 Environment Setup

打開(kāi)系統(tǒng)配置文件

$ sudo vi /etc/profile

在文件最后添加

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

保存退出

執(zhí)行

$ source /etc/profile

讓文件立即生效

至此cuda 8.0安裝完畢。

3.2 Verify the Installation

3.2.1 Verify the Driver Version

敲入

$ cat /proc/driver/nvidia/version

結(jié)果顯示

NVRM version: NVIDIA UNIX x86_64 Kernel Module  361.77  Sun Jul 17 21:18:18 PDT 2016
GCC version:  gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)

或之類(lèi)的東東

3.2.2 Verify CUDA Toolkit

敲入

$ nvcc -V

結(jié)果顯示

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Wed_May__4_21:01:56_CDT_2016
Cuda compilation tools, release 8.0, V8.0.26

!Note: 如果是這樣的:

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

莫方,確認(rèn)下/etc/profile的配置環(huán)境是否正確

即使什么都沒(méi)改,可能忘了這一步,或是之前執(zhí)行了,但過(guò)了有段時(shí)間,且又還沒(méi)重啟電腦。因?yàn)?code>source /etc/profile是臨時(shí)生效,重啟電腦才是永久生效

執(zhí)行

$ source /etc/profile

再執(zhí)行(應(yīng)該就有顯示了)

$ nvcc -V
3.2.3 Complie sample

cd 進(jìn)NVIDIA_CUDA-8.0_Samples目錄
執(zhí)行

$  make

!Note: 這區(qū)間大概需要十幾到二十分鐘,請(qǐng)耐心等待。建議來(lái)杯caffe

運(yùn)行完后,編譯結(jié)果會(huì)放在NVIDIA_CUDA-8.0_Samples目錄下的bin目錄

3.2.3 Running the Binaries

cd進(jìn)bin目錄里面的里面的里面,知道看到一堆可執(zhí)行文件(菱形的圖標(biāo)),大概是 ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release

執(zhí)行

$ ./deviceQuery

結(jié)果顯示

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 720M"
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    2.1
  Total amount of global memory:                 1985 MBytes (2081226752 bytes)
  ( 2) Multiprocessors, ( 48) CUDA Cores/MP:     96 CUDA Cores
  GPU Max Clock rate:                            1250 MHz (1.25 GHz)
  Memory Clock rate:                             800 Mhz
  Memory Bus Width:                              64-bit
  L2 Cache Size:                                 131072 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 32768
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  1536
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (65535, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GT 720M
Result = PASS

或之類(lèi)的東東,且最后是 Result = PASS,若失敗 Result = FAIL

再來(lái)一個(gè),執(zhí)行

$ ./bandwidthTest

結(jié)果顯示

[CUDA Bandwidth Test] - Starting...
Running on...

 Device 0: GeForce GT 720M
 Quick Mode

 Host to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)    Bandwidth(MB/s)
   33554432         3220.9

 Device to Host Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)    Bandwidth(MB/s)
   33554432         3271.9

 Device to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)    Bandwidth(MB/s)
   33554432         9772.8

Result = PASS

NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

少年,恭喜你!你已成功安裝cuda-8.0,接下來(lái)就可以愉快的玩耍了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容