建議:裝環境之前,先把自己安裝的版本弄清楚,後面出現版本不匹配的問題再重裝就會比較煩。
注意tensorflow-gpu-2.0有幾處代碼改動,在跑faster-rcnn的時候有點問題,所以後面需要把tensorflow-gpu版本改成1.1+的。
我這裏的環境是:
Ubuntu16.04+2080ti+Display Driver430.50+cuda10.0+cudnn7+Anaconda(python3.6)+tensorflow-gpu-1.13.1
1. 顯卡驅動: 版本430.50,有不同的安裝格式,這裏我下的是runfile。
安裝顯卡驅動步驟:
(1)lsmod |grep nouveau,查看到源生的驅動在。如果有就是會出現紅色的nouveau,沒有就什麼都沒有。
(2)如果有原生的驅動在,需要禁用自帶的 nouveau nvidia驅動 (important!)
-->創建一個文件通過命令 sudo vim /etc/modprobe.d/blacklist-nouveau.conf
--> 按一下 i 進入編輯狀態,並添加如下內容:
blacklist nouveau
options nouveau modeset=0
編輯完了:esc--> :-->wq! (保存並退出)
-->再更新一下
sudo update-initramfs -u
-->修改後需要重啓系統。確認下Nouveau是已經被你幹掉,使用命令: lsmod | grep nouveau
(3)禁掉lightdm桌面管理器,安裝驅動(secure boot disabled)
sudo /etc/init.d/lightdm stop
接下來會變黑好像什麼都沒有,這時候ctrl+alt+f1(命令行出來了)
(4)然後找到你放run文件的文件夾下:
sudo sh ./NVIDIA-Linux-x86_64-375.20.run –no-opengl-files(這個參數不知道什麼用,別人說有用我就加了)
(5)然後這樣:sudo /etc/init.d/lightdm start,就可以進入正常的界面了。
安裝好了可以查看顯卡驅動版本:cat /proc/driver/nvidia/version
2. 安裝CUDA10.0
2080ti 似乎和cuda9有問題,再裝了cudnn之後跑cudnn_samples報錯,後面改成了cuda10之後就成功了。
1)下載cuda:https://developer.nvidia.com/cuda-toolkit-archive , 我用的是10.0.
cuda安裝參考: https://zhuanlan.zhihu.com/p/47330858
2)安裝之前驗證一下電腦是否已經插上了支持CUDA的GPU,用win+alt+t調出終端,然後輸入:
lspci | grep -i nvidia
如果顯示出你的NVIDIA GPU版本信息應該就沒問題。
3)驗證系統是否安裝了gcc,在終端中輸入:
gcc --version
如果裝了結果會顯示類似信息:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0
如果沒有就自行安裝。sudo apt-get install build-essential (Ubuntu默認gcc5.4)
4)驗證系統是否安裝了kernel header和 package development
a、查看正在運行的系統內核版本:
在終端中輸入:
uname --r
結果顯示類似就可以:4.10.0-40-generic
b、在終端中輸入:
sudo apt-get install linux-headers-$(uname --r)
以安裝對應kernel版本的kernel header和package development
結果如果顯示:
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 4 個軟件包未被升級。
則表示系統裏已經有了,不用重複安裝。
5)禁用 nouveau驅動
終端中運行:
lsmod | grep nouveau
如果有輸出則代表nouveau正在加載。需要我們手動禁掉nouveau。
以下是Ubuntu的nouveau禁用方法:
a、我們需要在電腦根目錄的/etc/modprobe.d文件夾中創建文件blacklist-nouveau.conf
先用apt-get安裝vim編輯器,然後
這需要輸入命令:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
此時會出現一個窗口 (我們利用vi編輯器的指令來編輯和保存文件)
按鍵盤上的insert鍵進入輸入模式,然後在文件中輸入以下兩行內容:
blacklist nouveau
options nouveau modeset=0
然後按ESC鍵退出編輯模式,在鍵盤上摁下“ :wq ”這三個鍵再回車,就保存並退出了。
b、然後在終端輸入執行:
sudo update-initramfs -u
之後重啓電腦
c、重啓後在終端執行:
lsmod | grep nouveau
或者
lspci | grep -i nouveau
若終端無內容輸出了,則禁用成功,若仍有內容輸出,請檢查上述操作,可以百度一下尋求解決。
注:vi是Linux終端下或控制檯下常用的編輯器,要用vi打開一個文件,就輸入:
vi /路徑/文件名 (例如:終端輸入 vi /etc/fstab 就會顯示/etc/fstab文件裏的內容)
基本操作:
- 使用鍵盤上的Page Up和Page Down鍵可以上下翻頁;
- 按下Insert鍵,可以見到窗口左下角有“Insert”字樣,表示當前爲插入編輯狀態,這時從鍵盤輸入的內容將插入到光標位置;
- 再按下Insert鍵,左下角將有“Replace”字樣,表示當前爲替換編輯狀態,這時從鍵盤輸入的內容將替換光標位置的內容。
- 編輯完內容後,按下Esc鍵,並輸入“:wq”,然後回車就可以保存退出。
- 如果不想保存而直接退出,則按下Esc鍵後,輸入“:q!”,然後回車即可。“wq”表示Write和Quit,即保存退出;“q!”表示忽略修改強行退出。
6)重啓電腦,進入登錄界面的時候,不要登錄進入桌面(否則可能會失敗,若不小心進入,請重啓電腦),直接按Ctrl+Alt+F1進入文本模式(命令行界面),然後登錄賬戶。
登陸後輸入:sudo service lightdm stop
以此來關閉圖形化界面,然後切換到cuda安裝文件的路徑:例如我的cuda在下載文件夾裏所以我要輸入:
cd Downloads
然後輸入(根據cuda版本不同自行修改):sudo sh cuda_10.0.130_410.48_linux.run
開始安裝,按提示一步步操作,按住回車看完聲明。按照提示輸入相應字符,例如有的需要輸入accept,有的需要輸入yes。
注意:(1)遇到提示是否安裝openGL ,選擇no(如果你的電腦跟我一樣是雙顯,且主顯是非NVIDIA的GPU在工作,需要選擇no),其他都選擇yes或者默認即可。(如果您的電腦是雙顯卡且在這一步選擇了yes,那麼你極有可能安裝完CUDA之後,重啓圖形化界面後遇到登錄界面循環問題:輸入密碼後又跳回密碼輸入界面。這是因爲你的電腦是雙顯,而且用來顯示的那塊GPU不是NVIDIA,則OpenGL Libraries就不應該安裝,否則你正在使用的那塊GPU(非NVIDIA的GPU)的OpenGL Libraries會被覆蓋,然後GUI就無法工作了。)(2)要不要再裝driver,記得選No。(3)另外cuda samples我也沒有裝。
安裝成功後,會顯示installed,否則會顯示failed。
7)重新啓動圖形化界面,輸入 :
sudo service lightdm start
如果沒反應,需要同時按住Alt + ctrl +F7,返回到圖形化登錄界面,輸入密碼登錄。
如果能夠成功登錄,則表示不會遇到循環登錄的問題,基本說明CUDA的安裝成功了。
8)重啓電腦,檢查Device Node Verification。
執行 ls /dev/nvidia* 可能出現a、b兩種結果,請對號入座。
a、若結果顯示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
------------------------這部分我沒有出現-------------------------------------------------------------------
或顯示出類似的信息,應該有三個(包含一個類似/dev/nvidia-nvm的),則安裝成功。
b、大多數結果可能會是這樣
ls: cannot access/dev/nvidia*: No such file or directory
或是這樣的,只出現 /dev/nvidia0 /dev/nvidiactl
但沒有/dev/nvidia-num,即文件顯示不全。
我的解決方法參考了一篇博客,找到文件夾
/usr/local/cuda/samples/1_Utilities/deviceQuery,進去以後有個deviceQuery.cpp, make一下(在文件夾啓動終端,輸入sudo make),然後
./deviceQuery
這樣你再查看
ls -la /dev | grep nvidia
就會發現有三個啦。
-----------------------------------------------------------------------------------------------------------------
8)設置環境變量
終端中輸入:
sudo gedit /etc/profile
在打開的文件末尾,複製添加以下兩行:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(這是64位系統的,32位系統自行百度)
保存文件,並重啓。因爲source /etc/profile是臨時生效,重啓電腦纔是永久生效。
到這裏安裝應該就成功了,後面是一些驗證的工作,其實一般不用驗證。
9)重啓電腦,然後檢查上述的環境變量是否設置成功
a、 驗證驅動版本
敲入:cat /proc/driver/nvidia/version
結果顯示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 420
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
b、 驗證CUDA Toolkit
敲入:nvcc -V
會輸出CUDA的版本信息。
如果是這樣的:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
可能是環境配置沒有成功,請重複上述步驟8。
最後查看cuda版本:cat /usr/local/cuda/version.txt
3. 安裝CUDNN
參考官網步驟:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/
- Navigate to your <cudnnpath> directory containing cuDNN Debian file.
- Install the runtime library, for example:
sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
- Install the developer library, for example:
sudo dpkg -i libcudnn7-devel_7.0.3.11-1+cuda9.0_amd64.deb
- Install the code samples and the cuDNN Library User Guide, for example:
sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb
驗證前注意重啓,如果裝cuda9,驗證的時候會出錯Cublas failure,換成cuda10就好了。
4. Anaconda-python3.6
5. Tensorflow-gpu 1.13.1
pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
6. 關於gcc版本:
切換gcc版本參考: https://www.cnblogs.com/uestc-mm/p/7511063.html
改變優先級: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100 (100代表優先級)
選擇可選版本:sudo update-alternatives --config gcc
查看當前gcc版本:gcc --version
最後附上一個版本對應: