全て、
ターゲット プロセッサ ARM926EJ-S プロセッサ (ARM5te アーキテクチャ) 用の tensorflow lite をビルドしようとしています。Rasp PI ビルド スクリプトと設定からターゲット プロセッサのビルド スクリプトとビルド設定を複製しました。arm926_makefile.inc のターゲット プロセッサのビルド設定は次のとおりです。
# Settings for ARM926.
ifeq ($(TARGET),arm926)
TARGET_ARCH := armv5te
ifeq ($(TARGET_ARCH), armv5te)
TARGET_TOOLCHAIN_PREFIX := //arm-eabi-uclibc/usr/bin/arm-linux-
CXXFLAGS += \
-march=armv5te \
-mcpu=arm926ej-s \
-funsafe-math-optimizations \
-ftree-vectorize \
-fPIC
CFLAGS += \
-march=armv5te \
-mcpu=arm926ej-s \
-funsafe-math-optimizations \
-ftree-vectorize \
-std=c99 \
-fPIC
LDFLAGS := \
-Wl,--no-export-dynamic \
-Wl,--exclude-libs,ALL \
-Wl,--gc-sections \
-Wl,--as-needed
endif
LIBS := \
-latomic \
-lstdc++ \
-lpthread \
-lm \
-ldl
endif
ビルド スクリプトは、多数のファイルを正常にビルドします。しかし、std名前空間のround、atoi、min、maxなどの数学関数について主に文句を言います。私のターゲット プロセッサのツールチェーン バージョンは arm-linux-g++ (Buildroot 2014.08) 4.9.2 です。同じ tensorflow lite は、Pi ツールチェーン バージョン arm-linux-gnueabihf-g++ (GCC) 8.3.0 を使用して正常にビルドされます。
これらの数学関数がツールチェーンで宣言および定義されているのを確認しましたが、tensorflow-lite ビルドによって識別されていません。ところで.. global ::round() を使用してみましたが、多くの場所や他の数学関数も置き換える必要があります。ツールチェーンからこれらの機能を有効にするには、簡単な方法またはいくつかの構成を渡す必要があります。
誰かが ARM926 用の tensorflow-lite をビルドするための正しい方向を教えてくれますか?
ツールチェーンからのビルド エラーは次のとおりです。
./tensorflow/lite/kernels/internal/reference/reduce.h:385:71: error: no matching function for call to 'min(double, float)'
./tensorflow/lite/kernels/internal/round.h:34:10: error: 'round' is not a member of 'std'
return std::round(x);
/tensorflow/tensorflow/lite/tools/make/downloads/eigen/Eigen/src/Core/GlobalFunctions.h:93:36: note: 'Eigen::round'
EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(round,scalar_round_op,nearest integer,\sa Eigen::floor DOXCOMMA Eigen::ceil DOXCOMMA ArrayBase::round)
./tensorflow/lite/kernels/internal/reference/concatenation.h:125:36: error: 'round' is not a member of 'std'
./tensorflow/lite/kernels/internal/reference/reduce.h:374:28: error: 'round' is not a member of 'std'
ところで、最新の Rasp Pi ツールチェーンを使用して、コンパイル オプション -march=armv5te および -mcpu=arm926ej-s を使用して、ターゲット プロセッサ用の tensorflow lite をビルドしようとしました。ビルドはしますが実行されません - rasp pi ツールチェーンは、ARM926 および ARMv5te CPU アーキテクチャ用の正しいマシン コードを生成しないと思います。
ARM9 プロセッサのこの tensorflow-lite ビルドの問題を解決するための指針やアイデアを歓迎します。
ありがとう、アーム