目录
- 有任何地方有问题都欢迎交流
-
- 个人编译好的库文件包
- 准备
-
- Step0:注意事项,出现错误再回来找
- Step1:写在前面,导出符号BUG提前修复
- 编译
-
- Step1:基础环境配置
- Step2:下载安装msys2.exe
- Step3:下载安装bazel
- Step4:下载tensorflow源码
- Step5:整理头文件
- Step6:VS中项目属性设置
- 附录:其他可选优化选项
有任何地方有问题都欢迎交流
个人编译好的库文件包
下载地址
提取码:zzzz
准备
Step0:注意事项,出现错误再回来找
- 编译与训练版本需保持一致,每次变更完系统变量之后,重新运行一下python configure.py
- 网络状况一定要好,出现connect timed out / support error 多试几次,最好多试几遍
- 计算能力必须匹配,tensorflow需要根据目标产品部署显卡的计算能力进行特定版本的编译,或者编译全计算能力版本进行开发,但是dll文件较大
- 若想重命名lib,dll文件名称,需要先在tensorflow/tensorflow/build中找到相应代码并修改
- 若遇到max,min冲突错误,则在VS属性—C/C++—Preprocessor—中添加NOMINMAX
- 最好一个版本TF对应一套lib,include,dll,包括CPU / GPU版本对应好
- tensorflow多模型同时推理测试,限制显存增长即可解决
-
一直connect error
(1)尝试清理缓存C/usr/_bazel_user文件夹
(2)连接外网
Step1:写在前面,导出符号BUG提前修复
- 实际使用dll的时候无法解析的外部符号错误:
(1)r2.3.0 / r1.15.0版本(待完善)
(2)r1.14 / r2.1.0 / r2.2.0版本
找到文件tensorflow\tensorflow\tools\def_file_filter\def_file_filter.py.tpl记事本打开
找到类似于如下格式的代码段,并追加如下两行代码
def_fp.write("\t [email protected]@@[email protected]@[email protected]@[email protected]@@Z\n")
def_fp.write("\t [email protected]@@[email protected]\n")
(3)r1.11 / r1.12 / r1.13.1版本
进入目录tensorflow\tensorflow\
找到tf_exported_symbols_msvc.lds 和 BUILD 文件,使用我提供的两个同名文件分别替换相应的文件
若还遇到导出符号错误的问题,依照tf_exported_symbols_msvc.lds文件格式继续追加即可
我已经提供两个文件,下载后直接复制替换即可
下载链接
-
编译r2.1.0 / r.2.2.0
tensorflow/WORKSPACE修改,在头部加上如下代码参考这里
http_archive(
name = "io_bazel_rules_docker",
sha256 = "6287241e033d247e9da5ff705dd6ef526bac39ae82f3d17de1b69f8cb313f9cd",
strip_prefix = "rules_docker-0.14.3",
urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.14.3/rules_docker-v0.14.3.tar.gz"],
)
编译
Step1:基础环境配置
- nvidia最新驱动
- vs2019 + vs2019-2015 redistributable
- CUDA 10.1 / 10.2+ cudnn 7.6.5
- python 版本3.7.7 单独装一个python,并且添加环境变量,之后pip install numpy six
- 默认安装vs2019,windows SDK 10.0及以上即可
Step2:下载安装msys2.exe
- https://www.msys2.org/,按照官网教程走一遍
- 系统环境变量中添加 D:\msys64\usr\bin
- CMD中输入,pacman -S git patch unzip
Step3:下载安装bazel
-
Bazel版本(已通过测试)
(1)r1.13:0.20.0
(2)r1.14:0.24.1
(3)r2.1.0:0.27.1
(4)r2.2.0:2.0.0
(5)r2.3.0:3.1.0
- 下载地址https://github.com/bazelbuild/bazel/releases
- 重命名为bazel.exe(此操作必要),然后放入D:\bazel\0.27.1下
- 添加bazel.exe到系统环境变量path中
- VC路径配置
(1)r1.13 / r1.14(如果有,则删除 BAZEL_VC
环境变量),然后添加环境变量VS140COMNTOOLS,路径如下
C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\Tools\
(2) r2.1.0 / 2.2.0(如果有,则删除 VS140COMNTOOLS
环境变量),然后添加环境变量BAZEL_VC,路径如下
C:\Program Files(x86)\Microsoft Visual Studio\2019\Community\VC
Step4:下载tensorflow源码
- tensorflow-r1.14(r2.1.0)-master文件夹重命名为tensorflow,然后CMD进入tensorflow/
-
python configure.py
(1)XLA JIT 支持 (感受不到明显作用,求指导,r1.14开了编译会报错)
(2)ROCm支持 (得先开了CUDA support)
(3)/arch:AVX,/arch:AVX2 支持,CPU-Z查看(开了感受不到明显作用,求指导)
(4)要编译GPU版本使用cuda就需要设置显卡计算能力,如:[3.5,5.0,6.1,7.5]
最好与实际显卡匹配,显卡计算能力查询网址
设置多个计算能力兼容性强,但是编译出的dll较大接近1GB,单个计算能力兼容性弱,dll大概200+MB
- 根据相应Tensorflow版本输入编译命令
(1)r1.12 / r1.13 bazel build //tensorflow:libtensorflow_cc.so
(2)r1.14 / r2.1.0 / r2.2.0 bazel build //tensorflow:tensorflow_cc
- 若configure.py中使用各种优化,则编译命令变更如下
(1)r1.12 / r1.13 bazel build --config=opt //tensorflow:libtensorflow_cc.so
(2)r1.14 / r2.1.0 / r.2.2.0 bazel build --config=opt //tensorflow:tensorflow_cc
Step5:整理头文件
-
lib,dll
tensorflow\bazel-bin\tensorflow文件夹下的两个文件重命名即可
libtensorflow_cc.dll.ifso 重命名为 tensorflow_cc.lib
tensorflow_cc.dll
- (CMD中进入tensorflow/tensorflow/) 输入命令
bazel build //tensorflow:install_headers
- D:\tensorflow\bazel-genfiles\tensorflow\include\src中文件夹复制到D:\tensorflow\bazel-genfiles\tensorflow\include中
-
此处为选择操作,最好操作一下:
D:\tensorflow\bazel-tensorflow\external\protobuf_archive(com_google_protobuf)\src\google
文件夹复制到D:\tensorflow\bazel-genfiles\tensorflow\include下
- D:\tensorflow\bazel-genfiles\tensorflow\include即为所需
Step6:VS中项目属性设置
-
VC++包含目录
D:\tensorflow_lib\include
- 【链接器】-【输入】根据需要添加
-
工程目录下添加,其他根据需要添加
tensorflow_cc.lib
tensorflow_cc.dll
附录:其他可选优化选项
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLxEFVNpXW61UNNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2gzM1EzNxQTMzITOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)