Ubuntu 16.04 lts安裝CUDA9.0 & cuDNN7.0.5&tensorflow-gpu

tensorflow前前后后裝過(guò)幾十次略荡,每次裝cuda&cuDNN都很麻煩夏哭,決定整理一下踩過(guò)的坑和安裝流程,記錄可能會(huì)遇到的問(wèn)題在這里備忘服球,過(guò)程會(huì)盡量寫(xiě)得完整詳細(xì)茴恰。


如果無(wú)法解決問(wèn)題,建議查閱結(jié)尾參考資料中的官方文檔鏈接斩熊,畢竟大部分情況下官方文檔才是最完整的往枣。

記錄兩種安裝方法,第一種是使用runfile粉渠,第二種用deb文件安裝分冈。

環(huán)境:
主板——Z370XP SLI
顯卡——2 * 微星紅龍1070ti
ssd——建興(LITEON) 睿速系列 T10 240G
系統(tǒng)環(huán)境——Ubuntu16.04 64位、Windows10 64位專(zhuān)業(yè)版本霸株,雙系統(tǒng)
電源——美商海盜船(USCorsair)額定1000W

當(dāng)時(shí)折騰ubuntu的引導(dǎo)程序也花了不少時(shí)間雕沉,不過(guò)如何分盤(pán)裝雙系統(tǒng)這里還是不具體介紹了,網(wǎng)上一堆教程去件。

前置準(zhǔn)備工作:

首先在官網(wǎng)查閱坡椒,自己的電腦是否支持。

查閱:Pre-installation Actions先確定下面四個(gè)沒(méi)有問(wèn)題尤溜。

Verify You Have a CUDA-Capable GPU]
Verify You Have a Supported Version of Linux
Verify the System Has gcc Installed
Verify the System has the Correct Kernel Headers and Development Packages Installed

開(kāi)始做預(yù)備工作:

安裝cuda的依賴(lài)包倔叼。

這里是cuda-sample的依賴(lài)包,不裝sample可以只裝上面的


1. deb安裝:

1.1 CUDA安裝

這種方法比較簡(jiǎn)單宫莱,推薦這種方法丈攒。

下載cuda9.0(https://developer.nvidia.com/nvidia-developer-zone)

下好以后在終端輸入(版本格式參考官方文檔)
sudo apt-get autoremove --purge nvidia-*或者
sudo apt-get purge nvidia* 或者 sh ./nvidia.run --uninstall
來(lái)卸載原有驅(qū)動(dòng)。(可以用nvcc -V 查看是否成功卸載梢睛。)

卸載完后開(kāi)始安裝:

1. sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb

2. sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub   #添加key

3. sudo apt update

4. sudo apt -y install cuda
  1. 添加環(huán)境變量

配置環(huán)境變量肥印,運(yùn)行如下命令打開(kāi)profile文件


在profile結(jié)尾加入:

export CUDA_HOME=/usr/local/cuda-9.0

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}}

然后source /etc/profile立即生效。

在終端輸入 : nvcc -V

看到相應(yīng)的nvcc編譯器信息绝葡,那么CUDA配置成功深碱。
那么重新啟動(dòng):sudo reboot
5*. 注意:重啟以后可能會(huì)有 循環(huán)登陸 的問(wèn)題,我之前就卡在這邊挺久藏畅,碰到這種情況最簡(jiǎn)單的方法當(dāng)然是使用第二種方法runfile文件安裝敷硅,然后安裝的時(shí)候選擇不安裝OpenGL。
但是實(shí)際上還有一種方法可以解決愉阎,這種情況發(fā)生很可能是主板的安全啟動(dòng)secure boot引起的绞蹦,先把它關(guān)掉(http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html),如果沒(méi)有解決那么應(yīng)該是顯卡的問(wèn)題榜旦。WIN10的電腦如果存在獨(dú)顯幽七,那么cpu的核顯驅(qū)動(dòng)是不會(huì)下載的,我們需要兩塊顯卡就得手動(dòng)設(shè)置溅呢,設(shè)置以后WIN10就能識(shí)別核顯并且能安裝驅(qū)動(dòng)了澡屡,此時(shí)ubuntu也一樣猿挚,我們需要下載ubuntu對(duì)應(yīng)的cpu的核顯,很多七代八代的cpu核顯ubuntu16.04并不支持驶鹉,那么我需要對(duì)linux內(nèi)核降級(jí)比較麻煩绩蜻,比較好的方法是用官網(wǎng)提供的自動(dòng)安裝腳本來(lái)安裝驅(qū)動(dòng)程序包,ubuntu 16.04 lts的解決方法在此網(wǎng)址:(https://software.intel.com/en-us/forums/opencl/topic/738108

  1. 性能測(cè)試:

其實(shí)主要是看看cuda是否正確安裝室埋,

# 切換到cuda-samples所在目錄

cd /usr/local/cuda/samples

# 沒(méi)有make办绝,先安裝命令 sudo apt-get install cmake,-j是最大限度的使用cpu編譯姚淆,加快編譯的速度

sudo make –j8

# 編譯完畢孕蝉,切換release目錄(/usr/local/cuda/samples/bin/x86_64/linux/release完整目錄)

cd ./bin/x86_64/linux/release

# 檢驗(yàn)是否成功,運(yùn)行實(shí)例

./deviceQuery

# 最后能看到Result = PASS就算成功了肉盹。

1.2 cuDNN 安裝

cuDNN是GPU加速計(jì)算深層神經(jīng)網(wǎng)絡(luò)的庫(kù)昔驱。首先去官網(wǎng)(https://developer.nvidia.com/rdp/cudnn-download)下載cuDNN,需要注冊(cè)一個(gè)賬號(hào)才能下載上忍,以前需要幾天的審核時(shí)間,現(xiàn)在基本是秒批纳本。

選擇對(duì)應(yīng)版本下載窍蓝。

安裝cudnn比較簡(jiǎn)單,簡(jiǎn)單地說(shuō)繁成,就是復(fù)制幾個(gè)文件:庫(kù)文件和頭文件吓笙。將cudnn的頭文件復(fù)制到cuda安裝路徑的include路徑下,將cudnn的庫(kù)文件復(fù)制到cuda安裝路徑的lib64路徑下巾腕。具體操作如下:

  #解壓文件
cp cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.tgz
tar -xvf cudnn-9.0-linux-x64-v7.tgz


  #切換到剛剛解壓出來(lái)的文件夾路徑

 cd cuda  

 #復(fù)制include里的頭文件(記得轉(zhuǎn)到include文件里執(zhí)行下面命令)

sudo cp include/cudnn.h /usr/local/cuda/include/   

#復(fù)制lib64下的lib文件到cuda安裝路徑下的lib64(記得轉(zhuǎn)到lib64文件里執(zhí)行下面命令)

sudo cp lib64/*  /usr/local/cuda/lib64/

 #設(shè)置權(quán)限

 sudo chmod a+r /usr/local/cuda/include/cudnn.h

 sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

 #======更新軟連接======

cd /usr/local/cuda/lib64/

sudo rm -rf libcudnn.so libcudnn.so.7   #刪除原有動(dòng)態(tài)文件面睛,版本號(hào)注意變化,可在cudnn的lib64文件夾中查看

sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7  #生成軟銜接(注意這里要和自己下載的cudnn版本對(duì)應(yīng)尊搬,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)

 sudo ln -s libcudnn.so.7 libcudnn.so #生成軟鏈接

 sudo ldconfig -v #立刻生效

終端輸入:nvcc -V
查看是否正常

2. runfile安裝

2.1 runfile安裝的前置準(zhǔn)備工作

首先去官網(wǎng)(http://www.nvidia.cn/Download/index.aspx?lang=cn)查找適配自己電腦GPU的驅(qū)動(dòng)叁鉴,我的電腦驅(qū)動(dòng)版本如下:


2.2 CUDA的安裝

(1)卸載原有驅(qū)動(dòng) sudo apt-get autoremove --purge nvidia-*或者
sudo apt-get purge nvidia* 或者 sh ./nvidia.run --uninstall
(2)禁用nouveau驅(qū)動(dòng)
編輯文件blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后部分插入以下兩行內(nèi)容

blacklist nouveau
options nouveau modeset=0

更新系統(tǒng)sudo update-initramfs -u
重啟系統(tǒng)sudo reboot
終端中運(yùn)行: lsmod | grep nouveau 確定已經(jīng)禁用了 nouveau,輸入以后沒(méi)反應(yīng)即成功
(3)安裝驅(qū)動(dòng):
sudo add-apt-repository ppa:graphics-drivers/ppa //添加驅(qū)動(dòng)源
sudo apt update
sudo apt-get install nvidia-390
sudo apt-get install mesa-common-dev //本句及下一句命令有的電腦需要佛寿,有的電腦不需要幌墓,根據(jù)實(shí)際情況輸入命令
sudo apt-get install freeglut3-dev
執(zhí)行完上述命令后若無(wú)問(wèn)題,重啟冀泻,若有問(wèn)題常侣,轉(zhuǎn)到第二種方法。
sudo reboot
重啟后輸入:
sudo nvidia-smi
如果顯示GPU列表弹渔,則證明驅(qū)動(dòng)安裝成功了胳施,另外也可以通過(guò)如下命令:
nvidia-settings
查看GPU信息,顯示界面如下:
出現(xiàn)這個(gè)是正常的


(4)下載cuda9.0 (https://developer.nvidia.com/nvidia-developer-zone)

(5)Ctrl + Alt + F1(或init 3等于直接執(zhí)行(5)和(6))
(6)輸入了sudo service lightdm stop
(7)sudo sh cuda_9.0.176_384.81_linux.run
(8)單擊回車(chē)或者 q肢专,輸入accept,一路選yes往下運(yùn)行舞肆,直到提示“是否為NVIDIA安裝驅(qū)動(dòng)nvidia-384您没?”,選擇否胆绊,因?yàn)橐呀?jīng)安裝好驅(qū)動(dòng)程序了氨鹏,其他的全都是默認(rèn),(如果是安裝tensorflow的話(huà)压状,cuda sample 可以不裝仆抵,一是裝了也經(jīng)常會(huì)有問(wèn)題,二是我們只通過(guò)tensorflow來(lái)調(diào)用CUDA,不直接寫(xiě)CUDA代碼种冬,也不是必須要安裝)不過(guò)要記住安裝位置镣丑,默認(rèn)是安裝在/usr/local/cuda文件夾下。

(8*)如果之前沒(méi)有手動(dòng)安裝驅(qū)動(dòng)娱两,而下載的cuda版本里自帶的驅(qū)動(dòng)剛好支持現(xiàn)在的顯卡
那么可以輸入:(如果是為了避免循環(huán)登陸莺匠,記得選擇不安裝opengl
sudo sh cuda_9.0.176_384.81_linux.run -no-x-check -no-nouveau-check -no-opengl-files
Accept以后全部點(diǎn)了yes 和 enter

(9)輸入sudo service lightdm start
(10)添加環(huán)境變量
配置環(huán)境變量,運(yùn)行如下命令打開(kāi)profile文件


在profile結(jié)尾加入:

export CUDA_HOME=/usr/local/cuda-9.0

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后source/etc/profile立即生效十兢。

注意:
如果環(huán)境變量寫(xiě)錯(cuò)導(dǎo)致 gedit命令失效趣竣,那么先臨時(shí)設(shè)置環(huán)境變量
 export PATH="$PATH:/usr/bin"
 現(xiàn)在這些命令就可以臨時(shí)使用了,打開(kāi)再修改就行旱物。

碰到Would you like to register the kernel module sources with DKMS?This will allow DKMS to auomatically build a new module,if you install a different kernel later
回答No遥缕。

(11)安裝完成以后
輸入: nvcc -V
會(huì)得到nvcc-V相應(yīng)信息,那么CUDA配置成功了。

2.3 安裝cuDNN

同第一種方法

3.anaconda 的常用命令以及tensorflow的安裝

3.1 anaconda 的常用命令

conda list (所有安裝的庫(kù)列表)
conda install package_name (庫(kù))安裝
conda clean清理
conda update package_name(更新)
conda remove package_name(庫(kù)) 刪除
conda search package_name(庫(kù))搜索
conda list -n env_name #指定查看某環(huán)境下安裝的庫(kù)
conda info -e 查看當(dāng)前系統(tǒng)下的環(huán)境

創(chuàng)建新的環(huán)境:
指定python版本為2.7宵呛,注意至少需要指定python版本或者要安裝的包
conda create -n env_name python=2.7
同時(shí)安裝必要的包:conda create -n env_name numpy matplotlib python=2.7

環(huán)境切換:
切換到新環(huán)境
linux下需要使用:source activate env_name
win下: activate env_name
退出環(huán)境:
win下(也可以使用’activate root’ 切回root環(huán)境)
deactivate env_name
linux下:
source deactivate

移除環(huán)境
conda remove -n env_name --all

安裝庫(kù)
anaconda search -t conda (庫(kù)例如:tensorflow) 搜索可用版本,搜到的名字
anaconda show (搜到的名字) 會(huì)顯示這個(gè)庫(kù)需要用什么指令下載
輸入安裝指令即可

更常用的方法是:直接pip install (庫(kù)名)

當(dāng)想要安裝的庫(kù)安裝不了或者下載沒(méi)速度的時(shí)候单匣,連到這個(gè)網(wǎng)址,(http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost)直接ctrl+f搜想要的庫(kù)宝穗。
cp27代表python2.7以此類(lèi)推户秤,找到對(duì)應(yīng)版本的庫(kù)(和自己python版本以及win32/amd64版本一樣的庫(kù)下載)
下載下來(lái)是一個(gè)whl文件,找到該文件的路徑逮矛,然后pip install (該文件的文件名.whl)

3.2 安裝tensorflow

為了提升速度鸡号,建議使用清華大學(xué)開(kāi)源鏡像。復(fù)制生成的連接直接在終端輸入即可完成安裝橱鹏。
另外膜蠢,tensorflow中的依賴(lài)庫(kù)例如numpy跟anaconda root下的庫(kù)可能版本不一致,這樣會(huì)出現(xiàn)tensorflow報(bào)錯(cuò)的情況莉兰。需要?jiǎng)h掉anaconda中的numpy庫(kù)挑围,替換為tensorflow中自帶的,可是使用舊版本的numpy在其他代碼又會(huì)出現(xiàn)問(wèn)題糖荒。
所以推薦使用 anaconda或者virtualenv來(lái)隔離環(huán)境杉辙。
隔離環(huán)境可以參考另外兩篇博客,關(guān)于廖雪峰的python教程(http://www.reibang.com/p/3d6c0241503a)和anaconda 常用命令捶朵。(http://www.reibang.com/p/cf14d7b51fe7
為了保持連貫蜘矢,anaconda常用命令已經(jīng)貼在3.1部分狂男。


怕麻煩的改配置,以后就都是從清華源安裝庫(kù)了

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

4. References:

[1]https://developer.nvidia.com/cudnn
[2]http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation
[3]https://tensorflow.google.cn/install/install_linux#InstallingAnaconda
[4]https://www.cnblogs.com/iloveblog/p/7683349.html
[5]http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html
[6]https://stackoverflow.com/questions/12883128/installing-cuda-5-0-rc-samples
[7]https://software.intel.com/en-us/forums/opencl/topic/738108
[8]https://software.intel.com/en-us/forums/opencl/topic/738108
[9]Keras2.0官方中文教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末品腹,一起剝皮案震驚了整個(gè)濱河市岖食,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舞吭,老刑警劉巖泡垃,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異羡鸥,居然都是意外死亡蔑穴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)惧浴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)存和,“玉大人,你說(shuō)我怎么就攤上這事衷旅【柰龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵芜茵,是天一觀(guān)的道長(zhǎng)叙量。 經(jīng)常有香客問(wèn)我,道長(zhǎng)九串,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任寺鸥,我火速辦了婚禮猪钮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胆建。我一直安慰自己烤低,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布笆载。 她就那樣靜靜地躺著扑馁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凉驻。 梳的紋絲不亂的頭發(fā)上腻要,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音涝登,去河邊找鬼雄家。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胀滚,可吹牛的內(nèi)容都是我干的趟济。 我是一名探鬼主播乱投,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼顷编!你這毒婦竟也來(lái)了戚炫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤媳纬,失蹤者是張志新(化名)和其女友劉穎双肤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體层宫,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杨伙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萌腿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限匣。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖毁菱,靈堂內(nèi)的尸體忽然破棺而出米死,到底是詐尸還是另有隱情,我是刑警寧澤贮庞,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布峦筒,位于F島的核電站,受9級(jí)特大地震影響窗慎,放射性物質(zhì)發(fā)生泄漏物喷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一遮斥、第九天 我趴在偏房一處隱蔽的房頂上張望峦失。 院中可真熱鬧,春花似錦术吗、人聲如沸尉辑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隧魄。三九已至,卻和暖如春隘蝎,著一層夾襖步出監(jiān)牢的瞬間购啄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工末贾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闸溃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辉川,于是被迫代替她去往敵國(guó)和親表蝙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容