CMake এর সাথে ক্রস কম্পাইলেশন LiteRT

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে বিভিন্ন ARM ডিভাইসের জন্য LiteRT লাইব্রেরি তৈরি করতে হয়।

নিম্নলিখিত নির্দেশাবলী উবুন্টু 16.04.3 64-বিট পিসি (AMD64), টেনসরফ্লো ডেভেল ডকার ইমেজ tensorflow/tensorflow:devel- এ পরীক্ষা করা হয়েছে।

পূর্বশর্ত

আপনার CMake ইনস্টল এবং ডাউনলোড করা TensorFlow সোর্স কোড প্রয়োজন। বিস্তারিত জানার জন্য অনুগ্রহ করে বিল্ড লিটারটি সিমেক পৃষ্ঠার সাথে চেক করুন।

আপনার লক্ষ্য পরিবেশ পরীক্ষা করুন

নিম্নলিখিত উদাহরণগুলি রাস্পবেরি পাই ওএস, উবুন্টু সার্ভার 20.04 এলটিএস এবং মেন্ডেল লিনাক্স 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 উদাহরণ দেখায়, আপনাকে আরমেল লক্ষ্যগুলির জন্য বিভিন্ন টুলচেন ব্যবহার করতে হবে।

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-বিট ইনস্টল সহ) এর সাথে সামঞ্জস্যপূর্ণ।

টুলচেইন ডাউনলোড করুন

এই কমান্ডগুলি ${HOME}/toolchains-এর অধীনে gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu টুলচেইন ইনস্টল করে৷

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 তৈরি করতে হয় যা রাস্পবেরি পাই 3 এবং 4 এর সাথে সামঞ্জস্যপূর্ণ।

টুলচেইন ডাউনলোড করুন

এই কমান্ডগুলি ${HOME}/toolchains-এর অধীনে 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/

রাস্পবেরি পাই জিরোর জন্য তৈরি করুন (ARMv6)

এই নির্দেশটি দেখায় কিভাবে ARMv6 বাইনারি তৈরি করতে হয় যা রাস্পবেরি পাই জিরোর সাথে সামঞ্জস্যপূর্ণ।

টুলচেইন ডাউনলোড করুন

এই কমান্ডগুলি ${HOME}/toolchains-এর অধীনে 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/