Android — Как передать флаги оптимизации для сборки Bazel для тензорного потока

Я пытаюсь построить TF для Android с Базел.
Я заметил, что при сборке TF с makefile c ++ код оптимизируется и работает почти в 2 раза быстрее, чем библиотека, созданная на bazel. Что может быть причиной этого?
Здесь модифицированный tf_copts ()

def tf_copts():
return ([
"-Wno-sign-compare",
"-fno-exceptions",
] +
if_cuda(["-DGOOGLE_CUDA=1"]) +
if_android_arm(["-mfpu=neon", "-mfloat-abi=softfp"]) +
if_x86(["-msse4.1"]) +
select({
"//tensorflow:android": [
"-DNDEBUG",
"-std=c++11",
"-DTF_LEAN_BINARY",
"-O2",
"-fno-rtti",
"-DGOOGLE_PROTOBUF_NO_RTTI",
"-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
"-fPIE",
"-finline-functions",
"-funswitch-loops",
"-fpredictive-commoning",
"-fgcse-after-reload",
"-ftree-loop-distribute-patterns",
"-fvect-cost-model",
"-ftree-partial-pre",
"-fpeel-loops"],
"//tensorflow:darwin": [],
"//tensorflow:windows": [
"/DLANG_CXX11",
"/D__VERSION__=\\\"MSVC\\\"",
"/DPLATFORM_WINDOWS",
"/DEIGEN_HAS_C99_MATH",
"/DTENSORFLOW_USE_EIGEN_THREADPOOL",
],
"//tensorflow:ios": ["-std=c++11"],
"//conditions:default": ["-pthread"]}))

И вот команда сборки, которую я использую.

bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so    --crosstool_top=//external:android/crosstool
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cpu=armeabi-v7a

Также секция флага c ++ в makefile:

    CXXFLAGS +=\
--sysroot $(NDK_ROOT)/platforms/android-$(ANDROID_API_VERSION)/arch-$(sysroot_arch) \
-Wno-narrowing \
-fPIE \
-DGOOGLE_PROTOBUF_NO_RTTI \
-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER \
-DTF_LEAN_BINARY \
-O2 \
-finline-functions \
-funswitch-loops \
-fpredictive-commoning \
-fgcse-after-reload \
-ftree-loop-distribute-patterns \
-fvect-cost-model \
-ftree-partial-pre \
-fpeel-loops \
-mfloat-abi=softfp \
-mfpu=neon \
-march=armv7-a

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector