CMake के साथ LiteRT को क्रॉस कंपाइलेशन

इस पेज में, अलग-अलग ARM के लिए LiteRT लाइब्रेरी बनाने का तरीका बताया गया है डिवाइस.

निम्नलिखित निर्देशों का Ubuntu 16.04.3 64-बिट पीसी (AMD64) पर परीक्षण किया गया है , TensorFlow डेवेल डॉकर इमेज tensorflow/tensorflow:devel.

ज़रूरी शर्तें

आपको CMake की मदद से TensorFlow का सोर्स कोड इंस्टॉल और डाउनलोड करना होगा. कृपया जांचें CMake की मदद से LiteRT बनाएं इस पेज पर जाएं.

अपने टारगेट एनवायरमेंट की जांच करना

नीचे दिए गए उदाहरणों का टेस्ट Raspberry Pi OS, Ubuntu Server 20.04 LTS के तहत किया जाता है और Mendel Linux 4.0. आपके टारगेट glibc वर्शन और सीपीयू के आधार पर नहीं है, तो आपको टूलचेन के अलग-अलग वर्शन और बिल्ड पैरामीटर का इस्तेमाल करें.

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.

यह जांचना कि एबीआई के साथ काम करता है या नहीं

अगर आपका टारगेट ARM 32-बिट है, तो VFP के आधार पर दो एबीआई उपलब्ध हैं उपलब्धता. arRM और आर्मेल न हो. इस दस्तावेज़ में arRM दिखाया गया है उदाहरण के लिए, आपको आर्मल टारगेट के लिए अलग-अलग टूलचेन का इस्तेमाल करना होगा.

सीपीयू की क्षमता की जांच की जा रही है

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) के लिए बिल्ड

इस निर्देश में, AARC64 बाइनरी बनाने का तरीका बताया गया है, जो Cral 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}/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 के लिए बिल्ड चालू किया गया

इस निर्देश में VFPv4 और NEON चालू बाइनरी के साथ ARMv7 बनाने का तरीका बताया गया है जो 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/

Raspberry Pi Zero (ARMv6) के लिए बनाएं

इस निर्देश में, ARMv6 बाइनरी बनाने का तरीका बताया गया है, जो रैज़बेरी पाई ज़ीरो.

टूलचेन डाउनलोड करें

ये निर्देश, 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/