摘要
Ubuntu18.04安裝Tensorflow-gpu,坑成馬。
不想踩坑?有緣千里來相會,這篇文章將梳理出作者遇到的所有天坑。
對于下列問題,你可以在本文中找到答案
- 安裝Nvidia驅動時提示顯卡被占用?
- 安裝Nvidia驅動時提示gcc版本太高?
- 安裝Nvidia驅動的正確姿勢?
- 驅動裝炸了,卸載Nvidia驅動的正確姿勢?
- CUDA安裝與配置的正確姿勢?
- cnDNN安裝與配置的正確姿勢?
前排提醒!!!
如果Ubuntu提示系統升級,千萬不要點!千萬不要點!千萬不要點!一鍵爆炸了解一下。
正文
組件版本:
Operating System : Unbuntu 18.04 LTS
Nvidia Graphic Card : Nvidia 940MX
Nvidia Driver: NVIDIA-Linux-x86_64-410.78
CUDA : CUDA 9.0
cuDNN : cuDNN 7.1.4
Tensorflow : 1.5.0 GPU Version
請保證你的系統是純凈的,安裝過后沒有進行過任何多余操作
-
禁用預安裝的nouveau驅動
用下面的指令創建新文件blacklist-nouveau.conf*
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
并添加如下內容
blacklist nouveau options nouveau modeset=0
Okay. 關閉文件,執行下列命令,重啟。
sudo update-initramfs -u sudo reboot
重啟完成后,用下面這個命令,檢驗nouveau是否已經被禁用了。
lspci | grep nouveau
如果被禁用了,那么terminal里不會輸出任何東西。
-
安裝 gcc 6
從CUDA 4.1版本開始,現在支持gcc 4.5。gcc 4.6和4.7不受支持
從CUDA 5.0版本開始,現在支持gcc 4.6。gcc 4.7不受支持
從CUDA 6.0版本開始,現在支持gcc 4.7
從CUDA 7.0版本開始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上支持4.9
從CUDA 7.5版開始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上支持4.9
從CUDA 8版本開始,Ubuntu 16.06和Fedora 23完全支持gcc 5.3
從CUDA 9版本開始,Ubuntu 16.04,Ubuntu 17.04和Fedora 25完全支持gcc 6
CUDA 9在CUDA中不支持gcc 7作者執筆寫這篇文章時,Ubuntu18.04 LTS自帶的gcc版本是7.3.0。CUDA9.0是不支持gcc 7的。因此你需要安裝一個低版本的gcc。在這里我選用gcc 6,下列命令可用于安裝gcc 6。
sudo apt-get install gcc-6 sudo apt-get install g++-6
建立 soft link :
sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
此時你應該已經可以在terminal里調用gcc了,用下面的命令進行測試。
gcc --version
-
安裝Nvidia驅動
根據你顯卡的型號,去Nvidia官網下載對應驅動安裝程序的runfile版本。
按
Ctrl
+Alt
+F3
,進入文本命令行。登錄,使用下面的兩行指令終止GUI操作。對于Ubuntu18.04來說,第二行應該管用。sudo service lightdm stop sudo service gdm3 stop
用如下指令運行.run文件
sudo $DRIVER_DIR/NVIDIA-Linux-x86_64-410.78.run
如果你發現不能運行,在運行之前,嘗試用先用下面的指令
chmod u+x $DRIVER_DIR/NVIDIA-Linux-x86_64-410.78.run
你可能會發現安裝程序會提示你缺少很多依賴,例如
make
。按照安裝程序的指示,用apt
把該裝的都裝了。等所有依賴都安裝完畢,你應該就可以順利安裝驅動了。期間你可能會遇到各種各樣的提示框,說的還很嚇人。在下也不懂。選YES就是了,反正是純凈系統,大不了重頭再來。安裝完成后,用下面的指令測試是否安裝成功。
nvidia-smi
-
安裝 CUDA 9.0
根據你所要使用的Tensorflow版本選擇對應的CUDA的runfile安裝程序下載。
tensorflow-gpu v1.9.0 | cuda9.0 | cuDNN7.1.4可行 | 備注:7.0.4/ 7.0.5/ 7.1.2不明確
tensorflow-gpu v1.8.0 | cuda9.0 | cuDNN 不明確 | 備注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.7.0 | cuda9.0 | cuDNN 不明確 | 備注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.6.0 | cuda9.0 | cuDNN 不明確 | 備注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.5.0 | cuda9.0 | cuDNN 不明確 | 備注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.4.0 | cuda8.0 | cuDNN 6.0 | 備注:6.0正常使用, 7.0.5不能用,5.1未知
tensorflow-gpu v1.3.0 | cuda8.0 | cuDNN 6.0 | 備注:6.0正常使用, 7.0.5不能用,5.1未知
tensorflow-gpu v1.2.0 | cuda8.0 | cuDNN 5.1 | 備注:5.1正常使用, 6.0/ 7.0.5 未知
tensorflow-gpu v1.1.0 | cuda8.0 | cuDNN 5.1 | 備注:5.1正常使用, 6.0/ 7.0.5 未知Ref: https://blog.csdn.net/lifuxian1994/article/details/81103530
運行
sudo $CUDA_DIR/cuda_9.0.176_384.81_linux.run
開頭的協議太長,按空格加速跳過。之后你將進行一系列的選擇,除了問你 “是否要安裝CUDA自帶的Nvidia驅動程序” 選NO之外, 其余全選YES。我們剛剛自己安裝了驅動,不用它的。
順利安裝完成后,用下列指令將CUDA路徑加入系統變量
export PATH=$PATH:/usr/local/cuda-9.0/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
上面的指令只能在當前terminal有用。如果想永久設置,打開下面的文件,并把上面兩行放到文件的最后。
~/.bashrc
用下面的指令測試CUDA是否安裝成功
nvcc --version
你應該可以得到nvcc編譯器對應的版本信息
-
安裝Tensorflow-gpu
我們使用
pip
安裝Tensorflow-gpu。pip
應該沒有隨系統安裝,沒有pip的先用下面的指令安裝pip。sudo apt install python-pip
然后執行下面的指令安裝tensorflow-gpu 1.5.0
pip install tensorflow-gpu==1.5.0
如果你不加 '==1.5.0',將默認安裝最新版本(本人執筆時是1.12.0)
安裝完成后,用下列指令測試tensorflow是否安裝成功。pip list
你應當可以看到tensorflow-gpu 1.5.0在列表之中。但現在距離安裝完成還差一步之遙。
-
安裝 cuDNN
下載cuDNN的Ubuntu版本的Runtime安裝程序(.deb格式文件)。下載完成后,雙擊即可安裝。
現在,萬事俱備,你可以用下面的python程序測試Tensorflow-gpu版本是否被成功安裝。
import tensorflow as tf sess = tf.Session() a = tf.constant(1) b = tf.constant(2) print(sess.run(a+b))
Expected output
3
If 3 is printed on your screen, congratulations! You are ready to go.