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和配置的路徑問題。