1. 程式人生 > >windows 下編譯tensorflow c++庫過程記錄

windows 下編譯tensorflow c++庫過程記錄

生成 native uil 定義 arch lin share lock bsp

1. 準備

  • windows 10系統、3.6GHz cpu、16G 內存
  • visual studio 2017 or 2015
  • 下載安裝git
  • 下載安裝cmake
  • 下載安裝swigwin 如果不需要python bindings,可以跳過
  • clone tensorflow
  • 切換tensorflow到要進行編譯的git tag
  • 修改tensorflow/contrib/cmake/CMakeLists.txt
    if (tensorflow_OPTIMIZE_FOR_NATIVE_ARCH)
      include(CheckCXXCompilerFlag)
      CHECK_CXX_COMPILER_FLAG(
    "-march=native" COMPILER_OPT_ARCH_NATIVE_SUPPORTED) if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") # 添加下面這部分 else() CHECK_CXX_COMPILER_FLAG("/arch:AVX" COMPILER_OPT_ARCH_AVX_SUPPORTED) if (COMPILER_OPT_ARCH_AVX_SUPPORTED) set
    (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX") endif() # end of 添加下面這部分 endif() endif()

2. 步驟

    1. cmd 運行vcvarsall.bat amd64設置指定環境參數
    2. cd目錄:tensorflow\contrib\cmake
    3. 創建build目錄,cd build
    4. cmake命令

      1. cmake .. -G "Visual Studio 15 2017 Win64" -T host=x64 -DCMAKE_BUILD_TYPE=Release ^
      2. -Dtensorflow_VERBOSE=ON ^
      3. -Dtensorflow_ENABLE_GRPC_SUPPORT=OFF ^
      4. -Dtensorflow_BUILD_PYTHON_BINDINGS=OFF ^
      5. -Dtensorflow_BUILD_CC_EXAMPLE=OFF ^
      6. -Dtensorflow_BUILD_SHARED_LIB=ON ^
      7. -Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX
      8. #-DSWIG_EXECUTABLE=swig.exe的路徑
      9. #-DPYTHON_EXECUTABLE=python.exe的路徑(anaconda3路徑/python.exe)
      10. #-DPYTHON_LIBRARIES=python35.lib的路徑(anaconda3路徑/libs/python35.lib)

      上面的命令說明:
      -G 指定生成目標版本。命令行輸入cmake -G,可以查看可選的版本列表。
      -T host=64 是網上很多教程忽略的一點,我之前也用VS2017編譯過,因為沒有指定-T host=64,導致使用了32位的編譯器,出現fatal error C1060: "編譯器的堆空間不足"的錯誤。
      tensorflow_VERBOSE 編譯時輸出具體信息,設為ON些許降低編譯速度。
      tensorflow_ENABLE_GRPC_SUPPORT GRPC支持,如果你有服務器/客戶端的業務需求,或者跨語言GRPC使用需求的話,選擇ON。
      tensorflow_BUILD_PYTHON_BINDINGS 需要編譯python包的話選擇ON。
      tensorflow_BUILD_CC_EXAMPLE 編譯測試代碼。
      tensorflow_BUILD_SHARED_LIB 編譯共享庫。
      tensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX2 選擇AVX還是AVX2,取決於你的CPU是否支持該指令集。
      tensorflow_ENABLE_GPU 編譯是否使用GPU。
      tensorflow_OPTIMIZE_FOR_NATIVE_ARCH可設為OFF也可以不設置,會自動判斷。
      其他可選參數在 tensorflow\tensorflow\contrib\cmake\CMakeLists.txt 中可查看,對於你拿不準的參數,保持其默認即可。

    5. 編譯
      MSBuild /p:Configuration=Release /p:Platform=x64 /verbosity:detailed tensorflow.vcxproj
      這裏強調一點,Configuration定義的要與cmake時DCMAKE_BUILD_TYPE定義相同

    6. 運行測試

windows 下編譯tensorflow c++庫過程記錄