tensorflow52 win10 vs2015 編譯 tensorflow1.2.0-rc0(支援GPU)
01 必備環境
win10[10.0.14393],有GPU的硬體。
vs2015 update3[14.0.25431.01 Update3]、
cmake 3.7.2。
git[git version 2.11.0.windows.1]、
python3.5.3、CUDA8.0、cuDNN5.1、swigwin-3.0.12、
numpy-1.12.1+mkl-cp35-cp35m-win_amd64.whl
wheel
[http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy]
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA \v8.0
CUDA_PATH_V8_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
NVCUDASAMPLES8_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
NVTOOLSEXT_PATH=C:\Program Files\NVIDIA Corporation\NvToolsExt\
C:\Program Files\cuda下有bin、include、lib3個目錄。
設定環境變數
CUDNN_ROOT=C:\Program Files\cuda
安裝pthon3.5.3及必要元件
pytho3.5.3下載地址:https://www.python.org/ftp/python/3.5.3/python-3.5.3-amd64.exe
安裝到c:\python35。安裝時選擇設定環境變數、勾選pip。
安裝後,環境變數path中會加入如下兩項(如果你安裝了其他版本的python,請確保這個環境變數在path的較前位置)。
注意:
python安裝在[Advanced Options]選項頁中需要勾選
【Download debugging symbols】(可以不選)
【DownLoad debug binaries (requires VS 2015 later)】
# %path%環境變數中有如下兩行
c:\Python35\Scripts\
c:\Python35\
從http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy下載numpy-1.12.1+mkl-cp35-cp35m-win_amd64.whl
並安裝。
pip3 install numpy-1.12.1+mkl-cp35-cp35m-win_amd64.whl
02 下載程式碼
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git submodule update --init --recursive
git checkout -b b1.2.0-rc0 v1.2.0-rc0
03 使用cmake-gui生成vs2015工程
根據tensorflow\tensorflow\contrib\cmake\README.md說明,設定SWIG_EXECUTABLE、PYTHON_EXECUTABLE、PYTHON_LIBRARIES、CUDNN_HOME變數。
SWIG_EXECUTABLE=D:\install\swigwin-3.0.12\swig.exe
PYTHON_EXECUTABLE="c:\python35\python.exe"
PYTHON_LIBRARIES="c:\python35\libs\python35.lib"
CUDNN_HOME="C:\Program Files\cuda"
勾選除一下三項外的所有選項
tensorflow_BUILD_CC_TESTS
tensorflow_ENABLE__SSL_SUPPORT
tensorflow_WIN_CPU_SIMD_OPTIONS
設定CMAKE_INSTALL_PREFIX目錄
D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build/tensorflow
指定:原始碼目錄是編譯目標目錄
D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake
D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build
# 注意[D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build]的路徑不要太長,
# 因為在編譯時,build目錄下還會有很多子目錄,如果最終長度超過255,
# 將會因為檔案拷貝操作失敗導致編譯失敗。
# 至少在1.3.0-rc2中,使用[D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build1.3.0-rc2]
# 出現了檔名稱過長的編譯前、編譯後文件操作命令錯誤。
依次點選[configure]和[Generate]按鈕,並選擇Visual Studio 14 2015 Win64
編譯選項。生成的解決方案在D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build\tensorflow.sln
如下圖所示:
04 使用vs2015修改部分編譯選項
使用vs2015開啟D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build\tensorflow.sln
共有254個專案。先編譯Release版本。(Debug有問題,編譯未通過)
編譯過程中會下載以來程式碼,比較漫長,耐心等待即可。
Release版最後出現:LINK : fatal error LNK1181: 無法開啟輸入檔案“\pywrap_tensorflow_internal.lib”
錯誤。
這是因為3個專案的配置有問題,修改如下:
# 修改這三個專案的配置項
_beam_search_ops
_gru_ops
_lstm_ops
配置屬性==>聯結器==>常規==>附加庫目錄==>新增:$(SolutionDir)$(Configuration);
再次編譯,即可全部編譯通過。預設調過了
05生成tensorflow_gpu-1.2.0rc0-cp35-cp35m-win_amd64.whl
預設編譯tensorflow會跳過tf_python_build_pip_package
專案。找到tf_python_build_pip_package
專案,右鍵單獨生成一下,即可生成 tensorflow_gpu-1.2.0rc0-cp35-cp35m-win_amd64.whl
安裝包。生成在目錄:
D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build\tf_python\dist\