0

全て、

ターゲット プロセッサ 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 ビルドの問題を解決するための指針やアイデアを歓迎します。

ありがとう、アーム

4

0 に答える 0