目录
1、准备的环境
2、下载tensorflow源码,配置CMakeLists.txt
3、开始编译lib和dll
cmake 界面编译
cmake 命令行编译:
编译CPU版本:
编译GPU版本:
备注:
参考:
打开网址 https://github.com/tensorflow/tensorflow/tree/r1.8,选择右侧的Download ZIP,下载源码。
下载进行解压,本文解压到“D:\code\”目录下。
在加压的源码文件夹内,找到tensorflow/contrib/cmake/CMakeLists.txt打开,找到第155行到161行,将
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")
endif()
endif()
修改替换为
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()
endif()
endif()
打开cmake界面,
配置源路径:D:/code/tensorflow-r1.8/tensorflow/contrib/cmake
配置生成路径:D:/code/tensorflow-r1.8/build_cpu
点击configure,选择 Visual Studio 14 2015 Win64 编译器,如下图
点击configure后,可能会出现错误,查看下方详细信息:可能是python环境问题,安装python环境,
SWIG_EXECULABLE路径找不到问题,手动设置SWIG_EXECULABLE为解压后的exe路径:D:/code/tensorflow_dll/swigwin-4.0.0/swig.exe。
所有错误解决后,
根据需要自行勾选编译选项,再configure+generate, 我这里编译只是为了用C++接口加载训练好的模型文件,所以把不需要的都去掉了。 再点击Generate, Open Project, 用VS2015打开,
点击ALL_BUILD 生成, 边缘结果如下
有一些失败的情况,
fatal error C1083: 无法打开包括文件: “tensorflow/core/framework/device_attributes.pb_text.h”:
fatal error C1083: 无法打开包括文件: “tensorflow/core/framework/device_attributes.pb_text.h”:
这个模式网上查找了很多资料,最后没有很好解决。看到https://blog.csdn.net/dageda1991/article/details/79721333博主使用命令行编译,也做了尝试,终于编译成功。
vs2015自带的编译工具,如下图
打开后,切换目录到“D:/code/tensorflow-r1.8/tensorflow/contrib/cmake”,在建立一个“build_cpu”文件夹并进入
然后执行如下命令:
cmake .. -A x64 -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE=Release -DSWIG_EXECUTABLE=D:/code/tensorflow_dll/swigwin-4.0.0/swig.exe -Dtensorflow_ENABLE_GPU=OFF -Dtensorflow_BUILD_PYTHON_BINDINGS=OFF -Dtensorflow_ENABLE_GRPC_SUPPORT=OFF -Dtensorflow_BUILD_SHARED_LIB=ON
等待完成后,执行:
MSBuild /p:Configuration=Release ALL_BUILD.vcxproj
等待编译完成,出现了358个警告,一个错误,但没关系。在工程目录的Realese文件夹内,已经生成了tensorflow.dll和tensorflow.lib。
和CPU版本类似,先建立一个bulid_gpu文件夹并进入
GPU 需要安装cuda9.0,cudnn要求7,安装完cuda后把cudnn64_7.dll直接拷贝到了C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin。
对于安装了多个版本cuda的情况,需要修改 系统变量:CUDA_PATH : 为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
然后执行命令
cmake .. -A x64 -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE=Release -DSWIG_EXECUTABLE=D:/code/tensorflow_dll/swigwin-4.0.0/swig.exe -Dtensorflow_ENABLE_GPU=ON -Dtensorflow_BUILD_PYTHON_BINDINGS=OFF -Dtensorflow_ENABLE_GRPC_SUPPORT=OFF -Dtensorflow_BUILD_SHARED_LIB=ON
等待完成后,执行:
MSBuild /p:Configuration=Release ALL_BUILD.vcxproj
漫长的等待,编译完成后,在工程目录的Realese文件夹内,可以看到生成的GPU版的tensorflow.dll和tensorflow.lib。
windows10+vs2015下编译GPU版本tensorflow得到lib和dll(附带C++ inference示例)
Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
windows环境VS2015编译TensorFlow C++程序完全攻略