shamangary's Blog

安裝 Installation of Torch7, Cuda, Cudnn, Nvidia Driver with GTX1070

| Comments

GPU: Nvidia GTX1070 Platform: Ubuntu 14.04 LTS

經過了兩天的掙扎,終於把這一切都搞定了。 從頭開始條列問題

1. Nvidia GTX1070使用hdmi線的話,ubuntu14.04會有頻率out of range(超出工作範圍)的問題

在Grub模式(選擇要進入體驗ubuntu,安裝ubuntu,或windows的黑屏畫面),如果直接按enter選擇安裝ubuntu,你會連安裝都無法,因為直接黑畫面,頻率好像只有30幾螢幕不支援,這時候你想安裝什麼driver都無法,

(a)你同時有windows和ubuntu:解決方法是不要按enter,先上下選擇ubuntu(反白為選擇而不是按enter)並按下e,會進入編輯模式,
(b)你只有ubuntu:開機之後就按e按到進入編輯模式

然後找到"linux......quiet splash......"這行,並改寫為:

quiet splash nomodeset

,然後按下F10啟動,這時候你就進的去了,

但是要注意這是暫時的,每次重開不可能都這樣作,所以我們要改寫grub

sudo nano /etc/default/grub

修改其中的一行就好,改成下面這樣

GRUBCMDLINELINUXDEFAULT="quiet splash nomodeset" 

儲存後好像要讓他重新讀取

sudo update-grub

如此一來每次就不用再按一次e編輯了,第一個問題解決

2. 解析度低,並且無法從cuda找到對應的GPU裝置:安裝對應的Driver驅動程式

儘管已經可以用ubuntu了,你會發現無法調整解析度,是因為ubuntu並沒有GTX1070的Driver,上網查的很多方法都無法,特別注意,不要想直接用apt-get來安裝,因為最新的驅動程式似乎無法搜尋到,你可能還會裝到比較舊的版本,造成許多問題,

是故我們到官網去下載run檔 http://www.nvidia.com.tw/Download/index.aspx?lang=tw 下載對應你GPU的版本,不要妄想用別的,最後會壞掉,網路上會推薦你用什麼bumblebee殺小的,至少我用1070他無法作用就是,乖乖下載

舉例來說GTX1070最後會下載到的檔案為:NVIDIA-Linux-x86_64-367.27.run

我們來安裝驅動程式,這裡有個很重要的地方,就是你無法直接在一般界面上安裝,按下ctrl+alt+F1可以切換到純命令界面,接著我們必須把GUI關掉

sudo service lightdm stop

接著cd到你放run file的地方

sudo chmod a+x NVIDIA-Linux-x8664-367.27.run
sudo ./NVIDIA-Linux-x8664-367.27.run

然後一直選yes,『但是!!!注意在最後有個X configuration的東西要選no!!!!』 continue直到安裝結束就好 接著你可以用sudo reboot重新開機,或是可以alt+右鍵一直按直到回到圖形界面,或是 sudo service lightdm restart也可以回到圖形界面,你就會發現解析度變好了,不然解析度差真的很痛苦。

2018/08/17更新
Ubuntu 18.04遇到的問題

# To stop: 
sudo telinit 3

# To start:
sudo telinit 5

2016/9/5更新
如何確定有安裝好?(一定要確認這點!!!)

nvidia-smi

2017/1/3更新
想要監控每個時間點的GPU的memory使用量可以用以下方法持續刷新

watch -n 0.5 nvidia-smi

由於之後有新的驅動程式367.44,但是他本身好像是有問題的,所以我之後重裝還是用367.27,版本也是很重要的,
如果你不小心裝了367.44,想要移除他,請使用以下指令

sudo ./NVIDIA-Linux-x8664-367.44.run --uninstall

安裝cuda時,記得不要一起安裝opengl(不過我後來只要安裝好nvidia driver沒有特別指定這個好像也沒什麼問題),不然可能會導致login loop,我最近一次成功的順序是先安裝cuda再安裝nvidia drivier(在另外一台電腦上直接安裝nvidia driver也是完全沒問題,不過記得X configuration那項一定要選no),安裝cuda要參考下面的連結

重要參考:
https://devtalk.nvidia.com/default/topic/878117/-solved-titan-x-for-cuda-7-5-login-loop-error-ubuntu-14-04-/
http://askubuntu.com/questions/762254/why-do-i-get-required-key-not-available-when-install-3rd-party-kernel-modules

如果你不小心裝了連自己都不知道是啥的版本,可以用下面方式刪除(通常網路上會建議你用ppa安裝,但是像367.44被安裝後是不能用的,這時候就需要下面這行)

sudo apt-get remove --purge nvidia-*

3. Cuda 7.5 or Cuda 8.0 ?

對GTX1070來說,千萬不要用7.5,直接用8.0,雖然網路很多人都說他們可以用,但是7.5我用了兩天都用不好,灰心下8.0用了兩三個小時就一切搞定了

(如果你用了7.5的話,你會發現跟driver超級不合,然後luarocks install cutorch的東西也會報錯)

2016/9/6更新 GTX780我用cuda 7.5是沒什麼問題的

https://developer.nvidia.com/cuda-toolkit 下載8.0並對應你所用的系統,記得下載run file好像才能選擇要否裝驅動,我們這裡是ubuntu14.04
我最後下載到的檔案名為:cuda_8.0.27_linux.run 可以使用以下命令安裝

sudo chmod a+x ./cuda_8.0.27_linux.run
sudo ./cuda_8.0.27_linux.run 

他會出現一堆字,就是合約要你看的,我們直接ctrl+C他會問你是否同意,就按照同意的概念去選之後的選項,
特別注意!!!!!!! 不要安裝他的driver因為我們前一步已經安裝過了,記得那項千萬要選NO

安裝好了後編輯一下來源

sudo nano ~/.bashrc

在最後加上後面這幾行就行了

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

可能再用一下source ~/.bashrc讓他讀一下什麼之類的

4. 安裝Cudnn

其實最重要的就是Cuda要選對,在GTX1070這個情況就是Cuda 8.0,Cudnn也是選對應8.0的即可

https://developer.nvidia.com/cudnn
去註冊並登入並下載對應你cuda的版本

(2017/07/24更新) 因為版本越來越新,很有可能會不小心下載到cudnn6,但是記得不要,用cudnn5就好,然後步驟要記得全部跑一遍。

我下載的是
cudnn-8.0-linux-x64-v5.0-ga.tgz
解壓縮後是一個名為cuda的資料夾,裡面有include和lib64兩個folder,我們需要把他們放到該放的地方去
假設我們把cuda資料夾放在Desktop上

cd Desktop/cuda/lib64
sudo cp ./* /usr/local/cuda/lib64/
cd
cd Desktop/cuda/include
sudo cp cudnn.h /usr/local/cuda/include/

更新他們的軟連結(注意其中的編號要依照你下載的版本而定)

cd /usr/local/cuda/lib64/ 
sudo rm -rf libcudnn.so libcudnn.so.5 
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 
sudo ln -s libcudnn.so.5 libcudnn.so 

2016/9/9更新
有時候你安裝其他東西的時候會遇到說找不到lcufft這種感覺的東西,這時候也是軟連結的問題
像是在安裝spectral-lib的時候就會遇到這個問題
https://github.com/mbhenaff/spectral-lib
打入下面東西就沒事囉

sudo ln -s /usr/local/cuda/lib64/libcufft.so /usr/lib/libcufft.so
luarocks install spectralnet-scm-1.rockspec

5. 安裝Torch7

如果前面都完成了,你就可以放心安裝torch7了

# in a terminal, run the commands WITHOUT sudo
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh

# 注意!千萬要執行下一行,不管安裝有沒有成功都一定要,不然你重開機會無法正常進入ubnutu (2017/07/04更新)
# On Linux with bash
source ~/.bashrc

# run luarocks WITHOUT sudo
$ luarocks install image
$ luarocks list

6. 其他問題

2017/02/23更新(許洸睿提供)
(1) Asus Prime Z270 主機板安裝在ubuntu 14.04 & 16.04 沒有網路:
https://ubuntuforums.org/showthread.php?t=2351572
下載 e1000e-3.3.5.3-patched.tar.gz 安裝
(2)替Linux 新增硬碟(磁碟分割、格式化與掛載)
https://blog.gtwang.org/linux/linux-add-format-mount-harddisk/

2017/07/04更新
(3)安裝後忘了使用source ~/.profile導致無法登入ubuntu
這個時候連GUI介面的terminal都無法進入,我此時是用teamviewer遠端,也無法進入非GUI介面,是故亂點teamviewer跳出來的連結進入chrome,再點chrome的下載紀錄,打開資料夾,隨便找個文件檔打開sublime,用open file的方式直接進入~/.profile進去編輯,把跟torch-activate的行拿掉,就可以開了。(汗
(4)安裝cutorch等失敗
由於torch是一直在更新的,如果你之後想要重新安裝全部的torch卻失敗,很可能是因為他們用了更新的cuda之類的,這時候就重新去官網下載新的cuda重新安裝就是了,舉例來說cuda_8.0.27和cuda_8.0.61是不一樣的,你很可能需要重新安裝。
(5)無論如何就是找不到libcudnn.so.5但是我明明就放進去了
http://blog.csdn.net/u014696921/article/details/60140264
必須感謝這個人,不然我可能也要一個星期......

sudo ldconfig /usr/local/cuda/lib64

似乎是cuda路徑設錯?不管如何這樣就可以了。

2018/05/16更新
ubuntu的login loop有很多種可能,這次遇到的是裝完nvidia driver後就會發生,而且不管裝哪個版本都會發生,後來才發現原來是螢幕的顯示hdmi插到主機板的插孔而不是GPU的插孔,插對後會沒畫面,重開機就完全正常了,真的非常該死。
DO NOT INSERT HDMI ON THE MOTHERBOARD!!! INSERT IT ON THE HOLE OF GPU!!!!!!

Comments

comments powered by Disqus