windows編譯tensorflow c++庫

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命令python

      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 中可查看,對於你拿不許的參數,保持其默認便可。git

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

    6. 運行測試
相關文章
相關標籤/搜索