در این صفحه نحوه ساخت کتابخانه LiteRT برای دستگاه های مختلف ARM توضیح داده شده است.
دستورالعملهای زیر بر روی کامپیوتر اوبونتو 16.04.3 64 بیتی (AMD64)، TensorFlow Devel Docker image tensorflow/tensorflow:devel آزمایش شدهاند.
پیش نیازها
شما باید کد منبع TensorFlow را CMake نصب و دانلود کنید. لطفاً صفحه Build LiteRT با CMake را برای جزئیات بررسی کنید.
محیط مورد نظر خود را بررسی کنید
نمونه های زیر تحت سیستم عامل Raspberry Pi، سرور اوبونتو 20.04 LTS و مندل لینوکس 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 موجود است. armhf و armel . این سند یک مثال 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 (با اوبونتو سرور 20.04.01 LTS 64 بیتی نصب شده) سازگار است.
Toolchain را دانلود کنید
این دستورات 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 فعال است
این دستورالعمل نحوه ساخت ARMv7 با VFPv4 و باینری فعال NEON را نشان می دهد که با Raspberry Pi 3 و 4 سازگار است.
Toolchain را دانلود کنید
این دستورات 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 سازگار است.
Toolchain را دانلود کنید
این دستورات 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/