前言
上個禮拜電腦在開機時又開始產生了異常狀況,算一算大概壽命快要到達盡頭了。於是心一狠準備花大錢來組台新的來使用,目標是可以讓 tensorflow 跑 GPU 的版本。原訂目標是直上 gtx 1080 ,後來和朋友討論之後是不需要太衝動買這張,但是又要有一定的效能和記憶體容量,考量了一下價錢,最後選擇了 msi gtx 1060 版本。因此目前新的這一台系統環境如下:
環境準備
安裝 nvidia driver
這邊我是參考別人的作法,從 “Graphics Drivers Team” team 找 driver 下載,若是直接從 nvidia 官網下載 driver 步驟會比較麻煩,看 github 上的討論也有不少問題。
|
|
裝好後,重開機將 driver load 進來。
安裝 dependencies 套件
|
|
安裝 gcc & g++ 4.8
在裝 CUDA 之前,需要先將 gcc & g++ 準備好,由於 ubuntu 預設是使用 4.5 ,因此需要裝額外的版本。
|
|
10/11 更新
Ubuntu 16.04 使用的 gcc 版本已經非常的新 (Gcc version 5.4),會造成 #error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
訊息出現,需要去修改 /usr/local/cuda/include/host_config.h
。
|
|
安裝 CUDA Toolkit 8.0
從 CUDA Toolkit 8.0 裡選擇適合的版本。
接下來執行:
安裝過程中第一步會詢問是否要安裝 nvidia driver ,這裡就填 n
,避免先前安裝的 driver 被蓋過。
安裝完之後,設定環境變數到 .bashrc
裡:
|
|
現在就可以下指令來觀察是否有正確安裝好。
|
|
安裝 cuDNN 5.0
cuDNN Download 從此處選擇 Download cuDNN v5 (May 27, 2016), for CUDA 8.0 RC
。
解壓縮後放到指定的位置。
|
|
安裝 Tensorflow with GPU
這邊要使用最新版本的原始碼。目前 release 的 r0.10 RC0
有 bug 還沒有修好。
下載原始碼
|
|
安裝 dependencies
|
|
安裝 Bazel
Bazel 是 google 在推的 build 工具,適用於大型專案裡有不同語言和套件整合的需求上。
|
|
設定 Tensorflow
|
|
基本上設定要啟用 GPU ,剩下的版本環境使用預設值就好。
修改 Tensorflow
在設定完之後,接下來是測試是否可以編譯成功。在這邊編譯時會出現 ERROR: … undeclared inclusion(s) in rule … ,這邊翻到 issue 3760 裡有人提到需要修改 Tensorflow 的設定。
|
|
在 65 行那邊加入這一行 cxx_builtin_include_directory: “/usr/local/cuda-8.0/include” ,測試加了之後就可以編譯成功。
Build Tensorflow with GPU
這裡之後就沒遇到什麼問題, 跟著官網安裝指令走就好。
|
|
Create pip package
|
|
結論
到此就大功告成,開始享受 GPU 加速之後的威力,以及…更多的 GPU 問題。