本页介绍了如何为各种 ARM 构建 LiteRT 库 设备。
以下说明已在 Ubuntu 16.04.3 64 位 PC (AMD64) 上进行了测试 、TensorFlow 开发者 Docker 映像 tensorflow/tensorflow:devel.
前提条件
你需要安装并下载 CMake 源代码。请检查 使用 CMake 构建 LiteRT 页面了解详情。
检查目标环境
以下示例在 Raspberry Pi OS 和 Ubuntu Server 20.04 LTS 下进行了测试 以及 Mendel Linux 4.0。取决于您的目标 glibc 版本和 CPU 功能,您可能需要使用不同版本的工具链,并构建 参数。
检查 glibc 版本
ldd --version
ldd (Debian GLIBC 2.28-10) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.
检查 ABI 兼容性
如果您的目标是 ARM 32 位,则有两个 ABI 可用,具体取决于 VFP 。armhf 和 armel。此文档显示有害内容 例如,您需要对 ARMel 目标使用不同的工具链。
检查 CPU 功能
对于 ARMv7,您应了解目标支持的 VFP 版本和 NEON 可用性。
cat /proc/cpuinfo
processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3
针对 AArch64 (ARM64) 构建
此说明展示了如何构建与 Coral Mendel Linux 4.0、Raspberry Pi(搭载 Ubuntu Server 20.04.01 LTS 64 位 已安装)。
下载工具链
这些命令用于安装 gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
工具链
位于 ${HOME}/toolchains 下。
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C ${HOME}/toolchains
运行 CMake
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
ARMCC_FLAGS="-funsafe-math-optimizations"
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
../tensorflow/lite/
已启用针对 ARMv7 NEON 的构建
此指令展示了如何使用启用了 VFPv4 和 NEON 的二进制文件构建 ARMv7 (与 Raspberry Pi 3 和 Raspberry Pi 4 兼容)。
下载工具链
以下命令用于安装 gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
工具链,位于 ${HOME}/toolchains。
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${HOME}/toolchains
运行 CMake
ARMCC_FLAGS="-march=armv7-a -mfpu=neon-vfpv4 -funsafe-math-optimizations -mfp16-format=ieee"
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=armv7 \
../tensorflow/lite/
针对 Raspberry Pi Zero (ARMv6) 进行构建
此指令展示了如何构建与以下各项兼容的 ARMv6 二进制文件: Raspberry Pi Zero。
下载工具链
以下命令用于安装 gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
工具链,位于 ${HOME}/toolchains。
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${HOME}/toolchains
运行 CMake
ARMCC_FLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard -funsafe-math-optimizations"
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=armv6 \
-DTFLITE_ENABLE_XNNPACK=OFF \
../tensorflow/lite/