本頁說明如何為 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