在文章開始前,先辨析幾個概念GPU、NVIDIA、NVIDIA驅動、CUDA、cudnn等,這些概念對於一個新手來說肯定是很暈的,正如我當初一樣,所以我這裏就稍微介紹一下這幾個概念:
- GPU:Graphics Processing Units,也就是我們常說的顯卡。現在的筆記本或者臺式機都會有顯卡,但是能夠讓我們用來做並行計算的真正的GPU就只有NVIDIA出產的GPU了。
- NVIDIA:GPU生產廠商,在運算GPU處於壟斷地位。
- NVIDIA驅動:就是NVIDIA生產的GPU想在電腦上正常使用所需的驅動。
- CUDA:Compute Unified Device Architecture,是顯卡廠商NVIDIA推出的運算平臺。 CUDA是一種由NVIDIA推出的通用並-行計算架構,該架構使GPU能夠解決複雜的計算問題。我們想使用GPU進行深度學習運算的時候,必須要用到這個運算平臺。
- cudnn:CuDNN是NVIDIA專門針對Deep Learning框架設計的一套GPU計算加速方案,目前支持的DL庫包括Caffe,ConvNet, Torch7等.
安裝cuda7.5
部分參照:http://www.afterimage.top/2016/05/%E9%85%8D%E7%BD%AEcuda7-5-ubuntu-16-04-opencv3-1/
在安裝之前,先說一下本人工作站的設備配置(主要是GPU的):
設備上一共有三塊GPU,一快是專門用來做顯示的NVS310
兩塊用來做運算的GeForce GTX TITIAN X
第一步:選擇最新的nvidia驅動(很重要!!!)
先打開計算機中的“軟件和更新”,查看“附加驅動”,選擇nvidia的驅動爲最新的驅動。更新完之後最好重啓一下。
我曾經遇到一些錯誤,就是因爲我的NVIDIA驅動太老了,而cuda7.5則依賴於比較新的驅動。
第二步:下載cuda
去官網https://developer.nvidia.com/cuda-downloads 下載,選擇linux——ubuntu——15.04(我安裝的時候還只支持到15.04,沒有支持16.04版本的)——runfile(local)
第三步:安裝PPA軟件管理包工具
什麼是 PPA?
PPA,表示 Personal Package Archives,也就是個人軟件包集。
有很多軟件因爲種種原因,不能進入官方的 Ubuntu 軟件倉庫。 爲了方便 Ubuntu 用戶使用,launchpad.net 提供了 ppa,允許用戶建立自己的軟件倉庫, 自由的上傳軟件。PPA 也被用來對一些打算進入 Ubuntu 官方倉庫的軟件,或者某些軟件的新版本進行測試。PPA 上的軟件極其豐富,如果 Ubuntu 官方倉庫中缺少您需要的某款軟件,可以去 PPA 上找找看。
我們安裝的cuda可能在Ubuntu倉庫中木有,所以用PPA來下載。
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
第四步:執行cuda的.run文件
cd到下載的.run文件夾執行:
sudo ./cuda_7.5.18_linux.run --override
第五步:選擇安裝選項
選擇安裝選項:(注意:應爲之前已經安裝過NVIDIA Display Driver的驅動了(如第一步),所以這裏選擇不安裝NVIDIA Accelerated Graphics Driver for Linux-x86_64 352.39。如果選擇安裝會出現錯誤,並且導致安裝CUDA失敗。
Do you accept the previously read EULA? (accept/decline/quit): accept
You are attempting to install on an unsupported configuration. Do you wish to continue? ((y)es/(n)o) [ default is no ]: y
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 352.39? ((y)es/(n)o/(q)uit): n
Install the CUDA 7.5 Toolkit? ((y)es/(n)o/(q)uit): y
Enter Toolkit Location [ default is /usr/local/cuda-7.5 ]:
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y
Install the CUDA 7.5 Samples? ((y)es/(n)o/(q)uit): y
Enter CUDA Samples Location [ default is /home/kinghorn ]: /usr/local/cuda-7.5
Installing the CUDA Toolkit in /usr/local/cuda-7.5 ...
Finished copying samples.
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-7.5
Samples: Installed in /usr/local/cuda-7.5
第六步: 添加cuda到環境變量裏面
sudo nano /etc/profile.d/cuda.sh
export PATH=$PATH:/usr/local/cuda/bin
sudo nano /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
source /etc/ld.so.conf.d/cuda.confcd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
sudo ldconfig
第七步:將GCC降級或者採用暴力的方式讓cuda7.5支持高版本GCC。
由於cuda7.5不支持gcc4.9以上的版本,而ubuntu16.04默認的是gcc5,這會造成安裝的失敗,解決方法有兩種,
1、對gcc進行降級,讓系統採用低版本的GCC,但是這種方式有一定的問題,因爲Ubuntu16.04很多系統文件默認是使用gcc5編譯的,因此如果用降級的方法安裝完cuda後,在後期安裝caffe的時候,可能會報類似於undefined的錯誤,這是因爲你的gcc版本低,其所需的系統文件找不到。.
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
2、這種方式有點類似於黑箱方式,即強制讓他不報錯。編輯/usr/local/cuda/include/host_config.h
,將其中的第115行註釋掉:
將
#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
改爲
//#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
上面就是設置gcc版本優先級的。20和10就代表你所使用的gcc、g++的版本優先級。
第八步:測試是否安裝成功
執行如下指令,正常情況下會出現設備中所有的GPU,並把每個GPU的信息打印出來。
nvidia-smi
如果沒有出現錯誤之類的話,就說明安裝成功了。
第九步:測試cuda的Samples
cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
如果顯示的是一些關於GPU的信息,則說明安裝成功了。