在個人PC上使用游戲級的顯卡安裝CUDA要比在服務器上的安裝麻煩一些,在安裝的過程中也遇到了不少的坑,所以在此總結一下。
參考了不少的博客,下面列出一部分吧:
http://blog.csdn.net/iotlpf/article/details/54175064(主要參考的這個,但是這個博客安裝的過於順利了~_~)
http://blog.csdn.net/cybertan/article/details/8101883 #### http://blog.csdn.net/zhyj3038/article/details/52412273(關於GCC的升級或降級問題)
http://blog.csdn.net/10km/article/details/61191230(針對第一個連接中的網站下載不了的問題的解決方案)
系統:Win7+Ubuntu 16.04 ,在Ubuntu下安裝的, 顯卡:GXT1050ti CUDA8.0
為了確保cuda能安裝成功,首先需要確認安裝前的環境是否符合要求,具體細節請查閱NVIDIA CUDA Installation Guide for Linux
一.更換ubuntut16.04的源,這里使用的是中科大的源。
CTRL+ALT+T, 打開終端,輸入以下的命令:
cd /etc/apt/ sudo cp sources.list sources.list.backup #做備份 sudo gedit sources.list
然后把如下內容替換到該文件中(是替換掉,之前的就不要了):
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
然后更新源和更新已安裝的包:
sudo apt-get update sudo apt-get upgrade
二.降低gcc 版本(這一步如果按照鏈接1走的話,會遇到安裝安gcc-5.3.0后,檢測版本仍然是Ubuntu自帶的情況)
這里要注意的一點是ubuntu16.04的gcc版本是5.4,而cuda8.0在該系統中支持的gcc版本不超過5.3,所以第一步需要對GCC版本進行降級。
(1)下載gcc源碼
wget ftp://mirrors.kernel.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz
以上的下載鏈接,反正我用的是下載不下來,所以換成用以下的鏈接:
http://ftp.gnu.org/gnu/gcc/
(2)解壓
tar -zxvf gcc-5.3.0.tar.gz
(3)下載編譯所需依賴項:
cd gcc-5.3.0 //進入解包后的gcc文件夾 ./contrib/download_prerequisites //下載依賴項 cd .. //返回上層目錄
(4)建立編譯輸出目錄:
mkdir gcc-build-5.3.0
(5)進入輸出目錄,執行以下命令,並生成makefile文件:
cd gcc-build-5.3.0 ../gcc-5.3.0/configure --prefix=/usr/local/gcc-5.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
注:/usr/local/gcc-5.3.0是自定的安裝目錄。將GCC安裝在/usr/local/gcc-5.3.0目錄下。為了以后的配置環境變量確立位置。
(6)編譯:
sudo make -j4
以上的編譯過程大約40分鍾左右。PS:最好不要在編譯過程中再去做別的什么事,整個過程CPU都是滿載的。
(7)編譯結束以后,我們就可以執行安裝了:
sudo make install
(8)環境設置(這里需要將gcc的頭文件和庫文件指向新的版本,否則電腦用的還是Ubuntu自帶的gcc)
打開配置文件夾:
cd $HOME ls -a sudo vi .bashrc
向其中添加以下語句:
GCCHOME=/usr/local/gcc-5.3.0 #指定新安裝gcc的搜索路徑 PATH=$GCCHOME/bin:$PATH LD_LIBRARY_PATH=$GCCHOME/lib export GCCHOME PATH LLD_LIBRARY_PATH
重新引導,並查看gcc版本:
source $HOME/.bashrc which gcc
會顯示gcc新的路徑為 /usr/local/gcc-5.3.0:
檢查gcc和g++版本 :
gcc --version g++ --version
三. nvidia 驅動安裝
如果從nvidia官網下載驅動安裝時,有可能重啟后進入不了系統,輸入我的登錄密碼會發現屏幕一閃,然后又重新跳回到登錄界面,就是進入了login loop的狀態,造成這種問題的與原因是更新后的NVIDIA驅動與現在的GPU不匹配。(連接1中的敘述,沒有出現過)
讓系統自動安裝nvidia驅動有兩種辦法:
(1)第一種是進入ubuntu系統設置-軟件與更新-附加驅動中選擇下圖所示選項進行驅動安裝
這種方法的缺點是:所安裝的驅動(如圖中所示nvidia-361)並不是最新版本的,以至於在最后進行樣例測試的時候報錯:
cuda driver version is infufficient for cuda runtime version
(2)第二種方法是添加ppa源,同時在nvidia驅動官網上查看自己GPU驅動的最新版本號(不需要下載):(連接1中的ppa源一直打不開,所以使用的另外的方案)
1.禁用nouveau。
Ubuntu系統集成的顯卡驅動程序是nouveau,我們需要先將nouveau從linux內核卸載掉才能安裝NVIDIA官方驅動。
因為nouveau驅動的影響,ubuntu安裝后無法登入桌面,所以在ubuntu系統啟動顯示登錄界面后,需要按ctrl+alt+F1進入tty文本模式進入下面的操作。
由於blacklist.conf文件的屬性不允許修改。所以需要先修改文件屬性。
查看屬性:
ll /etc/modprobe.d/blacklist.conf
修改屬性:
sudo chmod 666 /etc/modprobe.d/blacklist.conf
用vi編輯器打開:
sudo vi /etc/modprobe.d/blacklist.conf
在文件末尾添加如下幾行:
blacklist vga16fb blacklist nouveau blacklist rivafb blacklist rivatv blacklist nvidiafb
修改並保存文件后,記得把文件屬性復原:
sudo chmod 644 /etc/modprobe.d/blacklist.conf
再更新一下內核:
sudo update-initramfs -u
修改后需要重啟系統。
重啟系統確認nouveau是否已經被屏蔽掉,使用lsmod命令查看:
lsmod | grep nouveau
lsmod命令用於顯示已經加載到內核中的模塊的狀態信息,參見《lsmod命令》。
2.安裝NVIDIA驅動。
因為系統中不光有NVIDIA顯卡還有一塊集成intel顯卡能正常驅動,所以經過上一步禁用nouveau驅動后,再次重啟,已經系統可以正常登錄進入桌面了。
使用如下命令添加Graphic Drivers PPA:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update
尋找合適的驅動版本:
ubuntu-drivers devices
以上的圖片是直接用的鏈接中的圖片。我用的GTX1050ti,目前最適用的版本是nvidia-387.
安裝NVIDIA driver:
記住給出的推薦驅動型號(帶recommended選項的驅動)。
按ctrl+alt+F1進入tty文本模式 。
關閉(圖形)桌面顯示管理器LightDM:
sudo service lightdm stop
安裝nvidia driver,這一過程是需要聯網的。如果網速度不好,可能要花比較長的時間。
安裝完成后重啟:
sudo apt-get install nvidia-378 sudo reboot
重啟系統后,執行下面的命令查看驅動的安裝狀態顯示安裝成功:
sudo nvidia-smi sudo nvidia-settings
(以上圖片來自連接3,所以型號不對應,其他一切正常)
四. cuda 8.0 安裝
cuda 8.0 Downloads下載cuda 8.0 的 runfile安裝包。
以上鏈接已經是9.1的了,所以提供新鏈接:https://developer.nvidia.com/cuda-80-ga2-download-archive.
cd切換到下載的文件目錄下進行安裝:
sudo sh cuda_8.0.44_linux.run --override
啟動安裝程序,一直按空格到最后,輸入accept接受條款。
輸入n不安裝nvidia圖像驅動,之前已經安裝過了。
輸入y安裝cuda 8.0工具 。
回車確認cuda默認安裝路徑:/usr/local/cuda-8.0 。
輸入y用sudo權限運行安裝,輸入密碼 。
輸入y或者n安裝或者不安裝指向/usr/local/cuda的符號鏈接 。
輸入y安裝CUDA 8.0 Samples,以便后面測試 。
回車確認CUDA 8.0 Samples默認安裝路徑,該安裝路徑測試完可以刪除。
五,因為cdnn是NVIDIA專門針對深度神經網絡(Deep Neural Networks)中的基礎操作而設計基於GPU的加速庫。這里用不到cdnn,所以就沒有安裝,其過程也很簡單,只是一個庫函數的安裝過程。
六。環境變量等
設置環境變量,終端輸入:
sudo gedit /etc/profile
在末尾加入:
PATH=/usr/local/cuda/bin:$PATH export PATH
保存后,創建鏈接文件(這是一個新建的鏈接文件):
sudo vim /etc/ld.so.conf.d/cuda.conf
按a進入插入模式,增加下面一行:
/usr/local/cuda/lib64
按esc退出插入模式,按:wq保存退出 。
最后在終端輸入:
sudo ldconfig #使鏈接生效
七.cuda Samples測試
切換到CUDA 8.0 Samples默認安裝路徑(一般在安裝目錄的.../cuda/samples目錄下),終端輸入:
sudo make all -j4 #(4核)
需要幾分鍾的編譯時間。
完成后繼續向終端輸入:
cd bin/x86_64/linux/release ./deviceQuery
如果看到下面畫面,則成功:
通過以上的步驟就完成了所有的工作。
下面這部分留出來作為以后遇到問題的解決板塊:
1.遇到一個奇怪的問題:在一般用戶的條件下輸入:nvcc --version能夠正常顯示,在root的條件下,說未安裝nvcc:
解決辦法是重新配置一下環境變量:
1)查看/usr/local/cuda/bin下是否有nvcc可執行程序,如果沒有說明cuda沒有正常安裝,需要重新安裝,如果有,進入下一步。
2)添加環境變量,打開~/.bashrc ,添加環境變量export PATH=$PATH:/usr/local/cuda/bin。
3)再在terminal中輸入nvcc --version可以看到已經可以顯示為8.0版本了。