تصف هذه الصفحة كيفية إنشاء مكتبة LiteRT لمختلف ARM الأجهزة.
تم اختبار التعليمات التالية على جهاز كمبيوتر يعمل بنظام التشغيل Ubuntu 16.04.3 64 بت (AMD64) ، صورة تطوير TensorFlow tensorflow/tensorflow:devel.
المتطلبات الأساسية
يجب تثبيت رمز المصدر TensorFlow وتنزيله من خلال CMake. يُرجى التحقق إنشاء LiteRT باستخدام CMake للحصول على التفاصيل.
التحقّق من البيئة المستهدَفة
يتم اختبار الأمثلة التالية ضِمن نظام التشغيل Raspberry Pi OS أو Ubuntu Server 20.04 LTS ومندل 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 أرميل يعرض هذا المستند إطارًا نموذجيًا على سبيل المثال، تحتاج إلى استخدام سلسلة أدوات مختلفة لأهداف ذراع.
جارٍ التحقّق من إمكانات وحدة المعالجة المركزية (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
Build for AArch64 (ARM64)
توضح هذه التعليمات كيفية إنشاء برنامج AArch64 الثنائي الذي يتوافق مع Coral مندل 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/
تم تفعيل Build for ARMv7 NEON
توضّح هذه التعليمات كيفية إنشاء برنامج ثنائي ARMv7 باستخدام VFPv4 وNEON. المتوافق مع Raspberry Pi 3 و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/
Build for 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/