Kompilimi i kryqëzuar LiteRT me CMake

Kjo faqe përshkruan se si të ndërtohet biblioteka LiteRT për pajisje të ndryshme ARM.

Udhëzimet e mëposhtme janë testuar në Ubuntu 16.04.3 64-bit PC (AMD64), TensorFlow Devel Docker image tensorflow/tensorflow:devel .

Parakushtet

Duhet të instaluar dhe shkarkuar CMake kodin burimor TensorFlow. Ju lutemi kontrolloni faqen Build LiteRT me CMake për detaje.

Kontrolloni mjedisin tuaj të synuar

Shembujt e mëposhtëm janë testuar nën Raspberry Pi OS, Ubuntu Server 20.04 LTS dhe Mendel Linux 4.0. Në varësi të versionit tuaj të synuar të glibc dhe aftësive të CPU-së, mund t'ju duhet të përdorni versione të ndryshme të zinxhirit të veglave dhe parametrave të ndërtimit.

Po kontrollon versionin 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.

Kontrollimi i përputhshmërisë ABI

Nëse objektivi juaj është ARM 32-bit, ekzistojnë dy ABI në dispozicion në varësi të disponueshmërisë së VFP. armhf dhe armel . Ky dokument tregon një shembull armhf, ju duhet të përdorni zinxhir të ndryshëm mjetesh për objektivat armel.

Kontrollimi i aftësisë së CPU-së

Për ARMv7, duhet të dini versionin VFP të mbështetur nga objektivi dhe disponueshmërinë e 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

Ndërtimi për AArch64 (ARM64)

Ky udhëzim tregon se si të ndërtoni AArch64 binar i cili është i pajtueshëm me Coral Mendel Linux 4.0 , Raspberry Pi (me Ubuntu Server 20.04.01 LTS 64-bit të instaluar).

Shkarko zinxhirin e veglave

Këto komanda instalojnë zinxhirin e veglave gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu nën ${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

Ekzekutoni 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/

Ndërtimi për ARMv7 NEON i aktivizuar

Ky udhëzim tregon se si të ndërtoni ARMv7 me binar të aktivizuar VFPv4 dhe NEON, i cili është i pajtueshëm me Raspberry Pi 3 dhe 4.

Shkarko zinxhirin e veglave

Këto komanda instalojnë zinxhirin e veglave gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf nën ${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

Ekzekutoni 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/

Ndërtimi për Raspberry Pi Zero (ARMv6)

Ky udhëzim tregon se si të ndërtoni ARMv6 binar i cili është i pajtueshëm me Raspberry Pi Zero.

Shkarko zinxhirin e veglave

Këto komanda instalojnë zinxhirin e veglave gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf nën ${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

Ekzekutoni 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/