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

tensorflow前前后后裝過幾十次,每次裝cuda&cuDNN都很麻煩,決定整理一下踩過的坑和安裝流程,記錄可能會遇到的問題在這里備忘,過程會盡量寫得完整詳細。


如果無法解決問題,建議查閱結尾參考資料中的官方文檔鏈接,畢竟大部分情況下官方文檔才是最完整的。

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

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

當時折騰ubuntu的引導程序也花了不少時間,不過如何分盤裝雙系統這里還是不具體介紹了,網上一堆教程。

前置準備工作:

首先在官網查閱,自己的電腦是否支持。

查閱:Pre-installation Actions先確定下面四個沒有問題。

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

開始做預備工作:

安裝cuda的依賴包。

這里是cuda-sample的依賴包,不裝sample可以只裝上面的


1. deb安裝:

1.1 CUDA安裝

這種方法比較簡單,推薦這種方法。

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

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

卸載完后開始安裝:

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. 添加環境變量

配置環境變量,運行如下命令打開profile文件


在profile結尾加入:

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

看到相應的nvcc編譯器信息,那么CUDA配置成功。
那么重新啟動:sudo reboot
5*. 注意:重啟以后可能會有 循環登陸 的問題,我之前就卡在這邊挺久,碰到這種情況最簡單的方法當然是使用第二種方法runfile文件安裝,然后安裝的時候選擇不安裝OpenGL。
但是實際上還有一種方法可以解決,這種情況發生很可能是主板的安全啟動secure boot引起的,先把它關掉(http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html),如果沒有解決那么應該是顯卡的問題。WIN10的電腦如果存在獨顯,那么cpu的核顯驅動是不會下載的,我們需要兩塊顯卡就得手動設置,設置以后WIN10就能識別核顯并且能安裝驅動了,此時ubuntu也一樣,我們需要下載ubuntu對應的cpu的核顯,很多七代八代的cpu核顯ubuntu16.04并不支持,那么我需要對linux內核降級比較麻煩,比較好的方法是用官網提供的自動安裝腳本來安裝驅動程序包,ubuntu 16.04 lts的解決方法在此網址:(https://software.intel.com/en-us/forums/opencl/topic/738108

  1. 性能測試:

其實主要是看看cuda是否正確安裝,

# 切換到cuda-samples所在目錄

cd /usr/local/cuda/samples

# 沒有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

# 檢驗是否成功,運行實例

./deviceQuery

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

1.2 cuDNN 安裝

cuDNN是GPU加速計算深層神經網絡的庫。首先去官網(https://developer.nvidia.com/rdp/cudnn-download)下載cuDNN,需要注冊一個賬號才能下載,以前需要幾天的審核時間,現在基本是秒批。

選擇對應版本下載。

安裝cudnn比較簡單,簡單地說,就是復制幾個文件:庫文件和頭文件。將cudnn的頭文件復制到cuda安裝路徑的include路徑下,將cudnn的庫文件復制到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


  #切換到剛剛解壓出來的文件夾路徑

 cd cuda  

 #復制include里的頭文件(記得轉到include文件里執行下面命令)

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

#復制lib64下的lib文件到cuda安裝路徑下的lib64(記得轉到lib64文件里執行下面命令)

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

 #設置權限

 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   #刪除原有動態文件,版本號注意變化,可在cudnn的lib64文件夾中查看

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

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

 sudo ldconfig -v #立刻生效

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

2. runfile安裝

2.1 runfile安裝的前置準備工作

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


2.2 CUDA的安裝

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

blacklist nouveau
options nouveau modeset=0

更新系統sudo update-initramfs -u
重啟系統sudo reboot
終端中運行: lsmod | grep nouveau 確定已經禁用了 nouveau,輸入以后沒反應即成功
(3)安裝驅動:
sudo add-apt-repository ppa:graphics-drivers/ppa //添加驅動源
sudo apt update
sudo apt-get install nvidia-390
sudo apt-get install mesa-common-dev //本句及下一句命令有的電腦需要,有的電腦不需要,根據實際情況輸入命令
sudo apt-get install freeglut3-dev
執行完上述命令后若無問題,重啟,若有問題,轉到第二種方法。
sudo reboot
重啟后輸入:
sudo nvidia-smi
如果顯示GPU列表,則證明驅動安裝成功了,另外也可以通過如下命令:
nvidia-settings
查看GPU信息,顯示界面如下:
出現這個是正常的


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

(5)Ctrl + Alt + F1(或init 3等于直接執行(5)和(6))
(6)輸入了sudo service lightdm stop
(7)sudo sh cuda_9.0.176_384.81_linux.run
(8)單擊回車或者 q,輸入accept,一路選yes往下運行,直到提示“是否為NVIDIA安裝驅動nvidia-384?”,選擇否,因為已經安裝好驅動程序了,其他的全都是默認,(如果是安裝tensorflow的話,cuda sample 可以不裝,一是裝了也經常會有問題,二是我們只通過tensorflow來調用CUDA,不直接寫CUDA代碼,也不是必須要安裝)不過要記住安裝位置,默認是安裝在/usr/local/cuda文件夾下。

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

(9)輸入sudo service lightdm start
(10)添加環境變量
配置環境變量,運行如下命令打開profile文件


在profile結尾加入:

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立即生效。

注意:
如果環境變量寫錯導致 gedit命令失效,那么先臨時設置環境變量
 export PATH="$PATH:/usr/bin"
 現在這些命令就可以臨時使用了,打開再修改就行。

碰到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
會得到nvcc-V相應信息,那么CUDA配置成功了。

2.3 安裝cuDNN

同第一種方法

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

3.1 anaconda 的常用命令

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

創建新的環境:
指定python版本為2.7,注意至少需要指定python版本或者要安裝的包
conda create -n env_name python=2.7
同時安裝必要的包:conda create -n env_name numpy matplotlib python=2.7

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

移除環境
conda remove -n env_name --all

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

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

當想要安裝的庫安裝不了或者下載沒速度的時候,連到這個網址,(http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost)直接ctrl+f搜想要的庫。
cp27代表python2.7以此類推,找到對應版本的庫(和自己python版本以及win32/amd64版本一樣的庫下載)
下載下來是一個whl文件,找到該文件的路徑,然后pip install (該文件的文件名.whl)

3.2 安裝tensorflow

為了提升速度,建議使用清華大學開源鏡像。復制生成的連接直接在終端輸入即可完成安裝。
另外,tensorflow中的依賴庫例如numpy跟anaconda root下的庫可能版本不一致,這樣會出現tensorflow報錯的情況。需要刪掉anaconda中的numpy庫,替換為tensorflow中自帶的,可是使用舊版本的numpy在其他代碼又會出現問題。
所以推薦使用 anaconda或者virtualenv來隔離環境。
隔離環境可以參考另外兩篇博客,關于廖雪峰的python教程(http://www.lxweimin.com/p/3d6c0241503a)和anaconda 常用命令。(http://www.lxweimin.com/p/cf14d7b51fe7
為了保持連貫,anaconda常用命令已經貼在3.1部分。


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

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官方中文教程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容