Все,
Я пытаюсь создать tenorflow lite для своего целевого процессора ARM926EJ-S (архитектура ARM5te). Я скопировал сценарий сборки и настройки сборки для моего целевого процессора из сценария сборки и настроек 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
Сценарий сборки успешно создает группу файлов. Но в основном он жалуется на математические функции, такие как round, atoi, min, max пространства имен std. Версия инструментальной цепочки моего целевого процессора - arm-linux-g ++ (Buildroot 2014.08) 4.9.2. Тот же tenorflow lite успешно строится с использованием версии инструментальной цепочки Pi arm-linux-gnueabihf-g ++ (GCC) 8.3.0.
Я вижу эти математические функции, объявленные и определенные в моей инструментальной цепочке, но они не идентифицируются сборкой tensorflow-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'
Кстати .. Я также пробовал использовать последнюю версию инструментария Rasp Pi для создания tenorflow lite для моего целевого процессора, используя параметры компиляции -march = armv5te и -mcpu = arm926ej-s. Он строится, но не запускается - я думаю, что набор инструментов rasp pi не генерирует правильный машинный код для архитектуры процессора ARM926 и ARMv5te.
Я был бы признателен и приветствовал бы любые указатели или идеи для решения этой проблемы сборки tenorflow-lite для процессора ARM9.
Спасибо, Арм