建構 ARM 主機適用的 LiteRT

本頁說明如何為 ARM 架構電腦建構 LiteRT 程式庫。

LiteRT 支援兩種建構系統,且每個建構系統支援的功能不盡相同。請參閱下表,選擇合適的建構系統。

功能 Bazel CMake
預先定義的工具鍊 armhf、aarch64 armel、armhf、aarch64
自訂工具鍊 使用難度較高 容易使用
選取 TF 運算 可支援 不支援
GPU 委任 僅適用於 Android 支援 OpenCL 的任何平台
XNNPack 可支援 可支援
Python Wheel 可支援 可支援
C API 可支援 支援
C++ API 支援 Bazel 專案 支援 CMake 專案

使用 CMake 進行 ARM 跨平台程式碼編譯

如果您有 CMake 專案,或想使用自訂工具鍊,建議使用 CMake 進行跨平台編譯。如要瞭解如何使用 CMake 進行 LiteRT 的交叉編譯,請參閱這個頁面

使用 Bazel 進行 ARM 跨平台編譯

如果您有 Bazel 專案,或想使用 TF 作業,建議使用 Bazel 建構系統。您將使用整合式 ARM GCC 8.3 工具鍊搭配 Bazel,建構 ARM32/64 共用程式庫。

目標架構 Bazel 設定 相容裝置
armhf (ARM32) --config=elinux_armhf 搭載 32 位元 Raspberry Pi OS 的 RPI3、RPI4
AArch64 (ARM64) --config=elinux_aarch64 Coral、RPI4 (Ubuntu 64 位元)

下列操作說明已在 Ubuntu 16.04.3 64 位元電腦 (AMD64) 和 TensorFlow 開發 Docker 映像檔 tensorflow/tensorflow:devel 上測試過。

如要使用 Bazel 交叉編譯 LiteRT,請按照下列步驟操作:

步驟 1:安裝 Bazel

Bazel 是 TensorFlow 的主要建構系統。安裝最新版本的 Bazel 建構系統

步驟 2:複製 TensorFlow 存放區

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

步驟 3:建構 ARM 二進位檔

C 程式庫
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

共用資料庫位於: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

詳情請參閱 LiteRT C API 頁面。

C++ 程式庫
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

共用資料庫位於: bazel-bin/tensorflow/lite/libtensorflowlite.so

目前沒有直接擷取所有必要標頭檔案的方法,因此您必須從 TensorFlow 存放區中,納入 tensorflow/lite/ 的所有標頭檔案。此外,您還需要 FlatBuffers 和 Abseil 的標頭檔。

等等

您也可以使用工具鍊建構其他 Bazel 目標。以下提供幾個實用目標。

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image