tensorflow 编译C++ 依赖库踩坑实录

说在前面:阻挡我们站在巨人肩膀上的最大障碍绝对不是算法逻辑啥的,而是BUILD,编译真的是最让人头疼的问题。(由此可见统一所有环境有多重要。。)

环境配置

大部分来自于官网给出的配置:https://www.tensorflow.org/install/source_windows

 

系统:windows10

python :3.8

tensorflow : 2.6

Bazel :3.7.2

已安装visual studio 2017 企业版 和 2019社区版

numpy :1.19.2

编译步骤:

编译时参考了国外的步骤:https://github.com/sitting-duck/stuff/tree/master/ai/tensorflow/build_tensorflow_1.14_source_for_Windows

这个编译的是1.14版本 还是1080ti的版本,大致上相同,这里给出我自己的理解步骤:

1.环境准备:

初始系统环境必须要干净,如果有安装类似anaconda,miniconda的集成环境,必须在环境变量里面删除PATH里面的相关配置,这一步尤其重要,会影响到后面numpy找不找得到的问题。

2.安装GPU驱动 安装cuda和cudnn

正常安装流程,网上教程很多,注意配套版本即可,我用的是RTX3090,cuda11,cudnn8

3.安装python

正常安装python,注意最后直接选择“加入 PATH”,可以省去手动添加。

4.安装Bazel

还是建议直接安装Bazel,Installing Bazel on Windows - Bazel main

找到对应版本,下载安装

5.安装MSYS

如果 MSYS2 安装到C:\msys64,即。您安装了 64 位版本,添加C:\msys64\usr\bin到您的%PATH%环境变量。然后,使用 cmd.exe,运行:

pacman -S git patch unzip

6.visual studio环境

我直接安装了两个,按道理只要有一个环境就可以

7.Clone tensorflow源码

下载下来后切换到需要编译的版本,我这里是:

git checkout r2.6

8.配置编译环境

使用源码路径下的configure.py配置,CPU环境所有都默认配置,GPU环境只需要在选择CUDA的是时候选择“Y”,部分截图如下,来自上面参考链接:

$ python configure.py
WARNING: --batch mode is deprecated. Please instead explicitly shut down your Bazel server using the command "bazel shutdown".
You have bazel 0.24.1 installed.
Please specify the location of python. [Default is C:\Users\Username\AppData\Local\Programs\Python\Python36\python.exe]:


Found possible Python library paths:
  C:\Users\Username\AppData\Local\Programs\Python\Python36\lib\site-packages
Please input the desired Python library path to use.  Default is [C:\Users\Username\AppData\Local\Programs\Python\Python36\lib\site-packages]

Do you wish to build TensorFlow with XLA JIT support? [y/N]:
No XLA JIT support will be enabled for TensorFlow.

Do you wish to build TensorFlow with ROCm support? [y/N]:
No ROCm support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: Y
CUDA support will be enabled for TensorFlow.

Found CUDA 10.0 in:
	C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64
	C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include
Found cuDNN 7 in:
	C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib
	C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include

9.编译动态库和静态库

bazel build --config=cuda tensorflow:tensorflow.dll
bazel build --config=cuda tensorflow:tensorflow.lib

重要的地方

遇到问题要仔细查看问题是啥意思,弄清楚了问题是啥其实很好理解,我在编译时出现的最大问题是“numpy找不到”,但是使用pip list查看确实是有安装,后来想起我的PC安装过miniconda,并且配置到了系统环境变量,就想到会不会是其实没有装,因为我在编译时没有使用miniconda的环境,后来移除miniconda在系统环境变量的配置后再查看目前安装的python包,果然确实没有numpy,之后就顺利安装了,所以有时候问题很简单,搞清楚报错原因就能很好地解决。

如果遇到什么问题可以多交流交流,真心希望以后类似这种问题中文资料要比英文多,还是应该多了解底层原因,共勉之!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值