Windows 下编译 TensorFlow 2.9.1 CC库

编程入门 行业动态 更新时间:2024-10-24 19:21:37

Windows 下编译 <a href=https://www.elefans.com/category/jswz/34/1769423.html style=TensorFlow 2.9.1 CC库"/>

Windows 下编译 TensorFlow 2.9.1 CC库

     参考 Intel 的 tensorflow 编译指导,不过项目还是可以用 TF原本的,不是一定要选择Intel 的TF版本。

安装 MSVC 2019

安装 Intel OneDNN  OneMKL

似乎也可以不安装  ( @ & @ )

.html#onednn

安装 Python 

    TensorFlow文档一般都是推荐安装Python3.8,但高一点版本也没关系,我用的是 Python 3.10.11 。

    安装 pip 和其他工具。 pip的安装不记得了,应该不难。    

python -m ensurepip --default-pip

    安装 numpy 等模块,numpy肯定需要,其他的也可以在编译错误提示的时候安装。

pip install idna
pip install numpy
pip install psutil

安装 Msys2 及 基本工具

    下载 MSYS2-x86_64-20231026.exe 并安装。

     安装开发有关的包,宁滥毋缺。其实 TF的编译不在 MSYS2环境中,就是利用 MSYS2提供的工具。

pacman -S --noconfirm --needed base-devel vim tar wget unzip protobufpacman -S --noconfirm --needed \${MINGW_PACKAGE_PREFIX}-cmake \${MINGW_PACKAGE_PREFIX}-gcc \${MINGW_PACKAGE_PREFIX}-toolchain \${MINGW_PACKAGE_PREFIX}-boost \${MINGW_PACKAGE_PREFIX}-ccache \${MINGW_PACKAGE_PREFIX}-eigen3 \${MINGW_PACKAGE_PREFIX}-gcc-libgfortran \${MINGW_PACKAGE_PREFIX}-grpc \${MINGW_PACKAGE_PREFIX}-gtk3 \${MINGW_PACKAGE_PREFIX}-julia \${MINGW_PACKAGE_PREFIX}-dlfcn \${MINGW_PACKAGE_PREFIX}-ogre3d \${MINGW_PACKAGE_PREFIX}-python \${MINGW_PACKAGE_PREFIX}-vtk
pacman -S --noconfirm --needed \${MINGW_PACKAGE_PREFIX}-libpng \${MINGW_PACKAGE_PREFIX}-libjpeg \${MINGW_PACKAGE_PREFIX}-libtiff \${MINGW_PACKAGE_PREFIX}-libwebp \${MINGW_PACKAGE_PREFIX}-dlib \${MINGW_PACKAGE_PREFIX}-ffmpeg \${MINGW_PACKAGE_PREFIX}-harfbuzz \${MINGW_PACKAGE_PREFIX}-lapack \${MINGW_PACKAGE_PREFIX}-openblas \${MINGW_PACKAGE_PREFIX}-opencl-clhpp \${MINGW_PACKAGE_PREFIX}-opencl-headers \${MINGW_PACKAGE_PREFIX}-opencl-icd \${MINGW_PACKAGE_PREFIX}-openmp

安装Bazel

    不同tensorflow版本对应的Bazel版本是不同的,提前确定好。

    对于 tensorflow 2.9.1,下载安装 Windows 版本 bazel 5.4.0,复制到 C:\Program Files\Bazel-5.4.0 或 D:\Bazel-5.4.0 目录,改名为 bazel.exe。

## 官方下载
wget .4.0/bazel-5.4.0-windows-x86_64.exe
## 国内镜像
wget .4.0/bazel-5.4.0-windows-x86_64.exe

下载 tensorflow 

git 克隆后切换到指定版本

git clone --recursive .git
cd tensorflow
# switch to the branch you want to build
git checkout r2.9.1  # r1.9, r1.10, etc. 

或下载源码包并解压

## 官网地址
wget .9.1.zip## 国内镜像
wget .9.1.zip## 解压
unzip v2.9.1.zip

编译 TF 2.9.1 

     在开始菜单中点击“Developer Command Prompt for VS 2019” 进入 MSVC2019 命令行环境。

     进入tensorflow 目录,将下面脚本写入 build_TF2.9.1.bat 批处理文件 。

BAZEL_DIR:指向你的 bazel执行文件所在目录

OUT_DIR : 通过 bazel 参数 --output_base=指定的编译工作目录,不指定的话会指向 C:\Users\yourname\_bazel_compiler\<hashcode>,对C盘容量是巨大的挑战,特别是你同时编译几个版本的时候。

其他参数就看你实际的安装路径了。

set BAZEL_DIR=D:\Program Files\Bazel-5.4.0
set OUT_DIR=D:\TF2.9.1_OUTset MSYS64_BASPATH=D:\msys64set BAZEL_SH=%MSYS64_BASPATH%\usr\bin\bash.exe
set BAZEL_VS=D:\Program Files (x86)\Microsoft Visual Studio
set BAZEL_VC=D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
set TF_VC_VERSION=16.6set OneMKL_DIR=D:\Program Files (x86)\Intel\oneAPI\mkl\2023.2.0set PYTHON_3_10=C:\Users\Administrator\AppData\Local\Programs\Python\Python310set GIT_PATHS=D:\Program Files\Git\cmd;D:\Program Files\Git\usr\binset PATH=%PYTHON_3_10%;%PYTHON_3_10%\Scripts;%OneMKL_DIR%\;%BAZEL_DIR%;%MSYS64_PATHS%;%MSYS64_BASPATH%\usr\bin;%GIT_PATHS%;%PATH%python configure.pybazel --output_base=%OUT_DIR%  build --announce_rc --config=opt --config=mkl --define=no_tensorflow_py_deps=true --local_cpu_resources=5  //tensorflow:tensorflow_cc.dllbazel --output_base=%OUT_DIR%  build --announce_rc --config=opt --config=mkl --define=no_tensorflow_py_deps=true --local_cpu_resources=5  //tensorflow:tensorflow_framework.dll

    执行这个批处理文件就好了。生成路径如下图

问题:

github下载超时

 将bazel脚本中 github链接换成国内github 镜像,加速下载,这里我使用hub.yzuu.cf,你看到的时候这个镜像大概率不能用了,自己搜一个就好。

sed -i -e 's#https:\/\/github\##g' \*/*.bzl */*/*.bzl */*/*/*.bzl */*/*/*/*.bzl \*/*.py  */*/*.py  */*/*/*.py  */*/*/*/*.py

但是部分 bazel 脚本会将 github  URL 替换成 镜像站 URL。

  /...........

   -->  .tensorflow/github/..........

这会造成  /.......... 被转换成  .tensorflow/hub.yzuu.cf/...........

所以,当发现这种错误引起的下载失败的话,再将 github镜像 url 转换回原url,继续编译。

sed -i -e 's#https\:\/\/hub\.yzuu\.cf##g' \*/*.bzl */*/*.bzl */*/*/*.bzl */*/*/*/*.bzl \*/*.py  */*/*.py  */*/*/*.py  */*/*/*/*.py

pip下载超时

可以看看 pip有没有设置镜像URL,如果没有,设置到镜像站,我选用清华镜像站

pip config get global.index-url
pip config set global.index-url 

报错:用户没有权限

执行 os.symlink(target, link_name)时,报告用户没有权限。我即使以管理员执行 msys2也无法解决这个问题。

最后 直接用管理员账号登录,重新准备所有环境才解决

报错:Couldn't find undname.exe under。。。

一般是使用的 MSVC版本不合适,我安装 VS2019后这个问题被解决。

BAZEL_VC does not work when vs2019 and vs2022 exist on windows 11. · Issue #14232 · bazelbuild/bazel · GitHub

Auto-Configuration Error: Couldn't find undname.exe under C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\ · Issue #31608 · tensorflow/tensorflow · GitHubb

报错:fatal error C1007: 无法识别的标志“-ReducedOptimizeHugeFunctions”(在“p2”中)

 VS2015,VS2017 还不支持这个选项,一定要安装 VS2019。

(VS2022 我没有成功,保留意见)。

参考 tensorflow源码根目录配置文件.bazelrc 的说明

为了保证进入 Msys2界面后 VS2019 编译环境 正常,在~/.bashrc 中追加初始化指令,你需要修改为你机器的VS2019安装路径。

"D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

报错:ERROR: No matching distribution found for numpy==1.23.5

 默认版本不兼容,安装指定版本的 python-numpy

wget .23.5-1-any.pkg.tar.zst
pacman -U mingw-w64-x86_64-python-numpy-1.23.5-1-any.pkg.tar.zst

指定安装包版本

wget .9.5-2-any.pkg.tar.zstwget .4-2-any.pkg.tar.zst

报错 : fatal error C1060: 编译器的堆空间不足

限制 bazel 占用资源数。实际使用下来效果改善不大,只能反复编译个几十遍。

bazel build --config=opt \--local_ram_resources=HOST_RAM*.8 \--local_cpu_resources=HOST_CPUS-2  \//tensorflow/tools/pip_package:build_pip_package

 报错 :无法打开 legalize_tf_xla_call_module_to_stablehlo_pass.obj.params

 windows下 有MAX_PATH=260 的限制,--output_base 设置编译输出路径尽量短小就好。 

更多推荐

Windows 下编译 TensorFlow 2.9.1 CC库

本文发布于:2023-11-17 05:28:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1639586.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:TensorFlow   Windows   CC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!