1. 程式人生 > >Ubuntu16.04 原始碼安裝CUDA8.0 tensorflow GPU 踩坑記

Ubuntu16.04 原始碼安裝CUDA8.0 tensorflow GPU 踩坑記

Ubuntu16.04 原始碼安裝tensorflow GPU 踩坑記

最近需要原始碼安裝一下tensorflow的GPU原始碼,踩了很多坑留給需要的

1.首先安裝CUDA

1.1 如果你原來有NVIDIA的驅動先解除安裝掉

 sudo apt-get  remove --purge nvidia*

1.2去官網下載對應的驅動 Linux

一定是run包

1.3禁用掉nouveau(一個開源的驅動)

新建

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

寫入

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

1.4 安裝驅動 !!!有坑

首先,Ctrl+alt+F1進入終端
然後 結束
sudo service lightdm stop
安裝 注意一定要加 -no-x-check -no-nouveau-check -no-opengl-files
主要是OpenGL,由於是雙顯示卡,安裝回覆蓋原來是,然後主顯示卡就無法工作了。
不加的的話,可能迴圈登入介面,進入不了介面

安裝完後
sudo service lightdm restart
輸入 nvidia-smi會有資訊,表示成功

如果之前有裝了unity,進入桌面什麼都沒有,可以右鍵開啟終端
執行 unity --reset-icons  
桌面會閃幾下

1.5去下在CUDA8.0安裝包!!!

一定要run包
安裝的時候不要選驅動!!!

開啟~/.bashrc檔案:

sudo vim ~/.bashrc

將以下內容寫入到~/.bashrc尾部:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/

安裝CUDA導致螢幕解析度不正確
退出圖形介面
ctrl+alt+F1進入終端

先備份
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak

再生成
sudo touch /ect/X11/xorg.conf

最後重啟

1.6安裝cudnn

去官網下載直接解壓即可

如果下載的是6.0 推薦6及以上,不然會出現一個6.so檔案找不到!!!
sudo tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz

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

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

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

2.編譯tensorflow

預設python已經裝好。報什麼錯,你就pip install 什麼包 ,一般都可以百度到,這個不是主要的坑

tensorflow原始碼去github clone下來

2.1安裝bazel

2.2 進入tensorflow主目錄!!!

首先./configure!!!
!!!注意,除了CUDA和cudnn選yes外,其他都預設
!!!還有cuda的路徑重新選 usr/local/cuda-8.0不是原來的,不然後面會缺少檔案找不到。

!!!注意GCC的問題,如果出現GCC版本問題
可以考慮升級GCC,我用的是6.0

但是CUDA可能不支援,所以要
開啟/usr/local/cuda/include/host_config.h

註釋掉:

error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
結果如下:

#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)
//#error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
#endif /* __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 1) */

加上//才是登出。#不是

2.3編譯安裝

注意!!!一般不會太久,如果超過2個小時,就可能出錯了,但還是沒報錯,可以考慮換GCC。我的編譯了1個小時
CPU版
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

GPU版
bazel build -c opt –config=cuda //tensorflow/tools/pip_package:build_pip_package

生成python包
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

2.4編譯出錯的有

1.error – unsupported GNU version! gcc versions later than 5 are not supporte

CUDA GCC支援錯誤。看上面的遮蔽掉這個錯誤

2.This rule is missing dependency declarations for the following files
我是再configure的時候,重新選/usr/local/cuda8.0 是不是/usr/local/cuda。
github上也有解決方法,但我試了無效
是修改/third_party/gpus/crosstool/CROSSTOOL檔案(我的有2個,可以選擇修改nvcc的)
把提示的incldue目錄加
cxx_builtin_include_directory:

3.總結

本文主要是提示踩的坑,沒有完整的連結和命令安裝,可以參考其他的。也主要是提示一下遇到的坑。我就是遇到上面的所有的坑,搞了半天,主要是驅動安裝,重複登入,然後登入有沒桌面圖示和視窗。最後CUDA和tensorflow的編譯問題,其實主要是GCC和配置的路徑問題。