Сбой сборки Tensorflow для процессора ARM926 - PullRequest
0 голосов
/ 04 марта 2020

Все,

Я пытаюсь создать программу обработки тензорного потока для моего целевого процессора ARM926EJ-S (архитектура ARM5te). Я скопировал скрипт сборки и настройки сборки для моего целевого процессора из скрипта и настроек сборки R asp PI. Вот мои настройки сборки для моего целевого процессора в arm926_makefile.in c:

# 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

Сценарий сборки успешно создает кучу файлов. Но в основном он жалуется на математические функции, такие как round, atoi, min, max пространства имен std. Версия набора инструментов моего целевого процессора: arm- linux -g ++ (Build root 2014.08) 4.9.2. Тот же liteorflow lite успешно создается с использованием версии набора инструментов Pi arm- linux -gnueabihf-g ++ (G CC) 8.3.0.

Я вижу, что эти математические функции объявлены и определены в моем наборе инструментов, но они не идентифицируется сборкой tenorflow-lite. Кстати ... Я попытался с помощью global :: round (), то его нужно заменить много много мест и другие математические функции тоже. Должен быть простой способ или передать некоторую конфигурацию, чтобы включить эти функции из моего набора инструментов.

Может кто-нибудь указать мне правильное направление для создания tenorflow-lite для ARM926?

Вот ошибки сборки из моего набора инструментов:

./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'

Кстати. Я также пытался использовать последний набор инструментов R asp Pi, чтобы построить tenorflow lite для моего целевого процессора, используя параметры компиляции -march = armv5te и -mcpu = arm926ej-s. Он строит, но не запускается - я думаю, что набор инструментов r asp pi не генерирует правильный машинный код для архитектуры процессоров ARM926 и ARMv5te.

Я был бы признателен и приветствовал бы любые указатели или идеи, чтобы решить этот тензор потока-Lite проблемы сборки процессора ARM9.

Спасибо, Arm

...