CMake로 크로스 컴파일 LiteRT

이 페이지에서는 다양한 ARM용 LiteRT 라이브러리를 빌드하는 방법을 설명합니다. 기기에서 사용할 수 있습니다.

다음 지침은 Ubuntu 16.04.3 64비트 PC (AMD64)에서 테스트되었습니다. , TensorFlow 개발 Docker 이미지 tensorflow/tensorflow:devel.

기본 요건

CMake를 설치하고 TensorFlow 소스 코드를 다운로드해야 합니다. 다음을 확인하세요. 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비트인 경우 VFP에 따라 두 가지 ABI를 사용할 수 있습니다. 있습니다. armhfarmel 이 문서에서는 armhf를 보여줍니다. 예를 들어 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)

이 안내는 다음과 호환되는 AArch64 바이너리를 빌드하는 방법을 보여줍니다. 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}/도구 모음 아래에 있습니다.

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 및 4와 호환됩니다.

도구 모음 다운로드

이 명령어는 gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf를 설치합니다. 툴체인에 대한 자세한 내용을 확인할 수 있습니다.

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를 설치합니다. 툴체인에 대한 자세한 내용을 확인할 수 있습니다.

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/