Auf dieser Seite wird beschrieben, wie Sie die LiteRT-Bibliothek für verschiedene ARM-Tools erstellen Geräte.
Die folgende Anleitung wurde auf Ubuntu 16.04.3 64-Bit-PC (AMD64) getestet , TensorFlow Entwickler-Docker-Image tensorflow/tensorflow:devel.
Vorbereitung
CMake muss den TensorFlow-Quellcode installiert und heruntergeladen haben. Bitte überprüfen Sie LiteRT mit CMake erstellen finden Sie weitere Informationen.
Zielumgebung prüfen
Die folgenden Beispiele werden unter Raspberry Pi OS und Ubuntu Server 20.04 LTS getestet und Mendel Linux 4.0. Abhängig von Ihrer glibc-Zielversion und CPU müssen Sie möglicherweise eine andere Version der Toolchain und des Builds verwenden. Parameter.
glibc-Version wird geprüft
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-Kompatibilität wird geprüft
Wenn dein Ziel ARM 32-Bit ist, sind je nach VFP zwei ABIs verfügbar. Verfügbarkeit. armhf und Armel. Dieses Dokument zeigt eine Armhf. Sie müssen beispielsweise eine andere Toolchain für Armel-Ziele verwenden.
CPU-Kapazität prüfen
Bei ARMv7 solltest du die unterstützte VFP-Version des Ziels und die NEON-Verfügbarkeit kennen.
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
Build für AArch64 (ARM64)
In dieser Anleitung erfahren Sie, wie Sie ein AArch64-Binärprogramm erstellen, das mit Coral Mendel Linux 4.0, Raspberry Pi (mit Ubuntu Server 20.04.01 LTS 64-Bit installiert).
Toolchain herunterladen
Mit diesen Befehlen wird die Toolchain gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
installiert
unter ${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 ausführen
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/
Build für ARMv7 NEON aktiviert
Diese Anleitung zeigt, wie Sie ARMv7 mit VFPv4 und NEON-fähigem Binärprogramm erstellen der mit Raspberry Pi 3 und 4 kompatibel ist.
Toolchain herunterladen
Mit diesen Befehlen wird gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
installiert
Toolchain unter ${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 ausführen
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/
Build für Raspberry Pi Zero (ARMv6)
Diese Anleitung zeigt, wie Sie ein ARMv6-Binärprogramm erstellen, das kompatibel mit Raspberry Pi Null.
Toolchain herunterladen
Mit diesen Befehlen wird gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
installiert
Toolchain unter ${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 ausführen
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/