用于 ARM 的 TensorFlow 的 Bazel 交叉编译失败

Bazel cross compile of tensorflow for ARM fails

我正在尝试在 Zynq(具体来说,Z7020)上为 运行 构建 tensorflow。我在板上安装了 petalinux 运行ning 和 python 3.4.9。尝试按照此处的说明构建 tensorflow 时:[https://www.tensorflow.org/install/install_raspbian#cross-compiling_from_sources] 请注意,petalinux 和 raspbian 都是 Debian 的衍生产品,并且 Z7020 具有与 raspberry-pi 0 和 1 系列板相同的 CortexA9 内核。

我正在尝试在 Ubuntu 16.04 主机上构建。我用来构建的命令是:

sudo CI_DOCKER_EXTRA_PARAMS="-e CI_BUILD_PYTHON=python3 -e CROSSTOOL_PYTHON_INCLUDE=/home/rklein/Python-3.4.9/Include" tensorflow/tools/ci_build/ci_build.sh PI-PYTHON3 tensorflow/tools/ci_build/pi/build_raspberry_pi.sh PI_ONE

Bazel 搅动了大约 2 个小时,然后返回以下错误消息:

    /home/rklein/tensorflow/bazel-ci_build-cache/.cache/bazel/_bazel_root/eab0--lots of hex digits--85e8/external/arm_compiler/bin/arm-linux-gnueablhf-gcc --lots of options

    In file included from /usr/include/python2.7/Python.h:8:0, from ./tensorflow/python/lib/core/bfloat16.h:19, 
                     from tensorflow/python/lib/core/bfloat16.h:18:
                     from /usr/include/python2.7/pyconfig.h:13:54: 
    fatal error: arm-linux-gnueabihf/python2.7/pyconfig.h: No such file or directory
    #include <arm-linux-gnueabihf/python2.7/pyconfig.h>
                                                       ^
    compilation terminated.

需要什么设置才能让 Bazel 使用 python3?请注意,主机上没有 /usr/include/python2.7 目录,所以我怀疑 Basel 在幕后做了一些巫术。命令

find ~ -name python2.7

出现空的。

我已尝试尽可能多地阅读 Bazel,但文档似乎非常精简 - 任何好的参考资料都将不胜感激。

我无法帮助您解决错误消息(或 Bazel 一起)。但是,我在具有 Petalinux 内核和 Ubuntu (arm64) 根文件系统的 Xilinx Zynq Ultrascale+ 上安装了 TensorFlow。它不是完全相同的芯片(但安装过程应该相似)。我没有自己构建 TensorFlow,而是使用了 tensorflow-on-arm 项目提供的包。也许我的经验对其他人获得 TensorFlow 有用 运行:

  1. 您需要一个有效的 OS(Xilinx 有相关文档)。根据您的芯片,您需要 32 位 (armhf) 或 64 位 (arm64) rootfs。我使用了 Ubuntu rootfs,所以我可以使用 apt-install.

  2. 您需要安装一些依赖项。我遵循了 tensorflow-on-arm 项目的说明。
    apt-get install openjdk-8-jdk automake autoconf curl zip unzip libtool swig libpng12-dev zlib1g-dev pkg-config git g++ wget xz-utils

  3. 您还需要 Python(请务必安装 Python v3.5 - 而不是 Python v3.6 等)。
    apt-get install python3-numpy python3-dev python3-pip python3-mock

  4. 我还需要安装两个未列出的软件包。
    apt-get install cython3 libhdf5-dev

  5. 安装一些 pip3 包(你可能想在虚拟环境中安装它们并更新 pip3)。
    pip3 install -U --user keras_applications==1.0.5 --no-deps
    pip3 install -U --user keras_preprocessing==1.0.3 --no-deps
    pip3 install -U --user numpy grpcio h5py

  6. 现在您应该下载 TensorFlow pip 包。 Releases 下列出了不同的包。我为 Python v3.5 和 arm64 / aarch64 选择了 TensorFlow v.1.12。
    wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.12.0/tensorflow-1.12.0-cp35-none-linux_aarch64.whl

  7. 现在您可以使用 pip3 安装软件包了。
    pip3 install -U --user tensorflow-1.12.0*

希望对你有用!