Accepting request 728506 from home:Guillaume_G:branches:science:machinelearning

- Disable TensorFlow as on 15.1 only x86_64 succeed and on TW we 
  have incompatibility with protobuf (3.8.0 in TW and 
  Tensorflow uses 3.6.1 internally)

- Update to 19.08:
- Changelog: https://github.com/ARM-software/armnn/releases/tag/v19.08
- Remove upstreamed patch:
  * armnn-fix_quantizer_link.patch
  * armnn-fix_caffe_parser_with_new_protobuf.patch
- Refresh patch:
  * armnn-generate-versioned-library.patch 
- Drop patches not needed anymore:
  * armnn-remove_broken_std_move.patch
  * armnn-fix_build_with_gcc9.patch

- Disable LTO until lto link is fixed
  https://github.com/ARM-software/armnn/issues/251

- Fix build in Tumbleweed, with latest protobuf:
  * armnn-fix_caffe_parser_with_new_protobuf.patch 

- Enable Tensorflow parser
- Fix link with Tensorflow:
  * armnn-fix_tensorflow_link.patch

OBS-URL: https://build.opensuse.org/request/show/728506
OBS-URL: https://build.opensuse.org/package/show/science:machinelearning/armnn?expand=0&rev=6
This commit is contained in:
Guillaume GARDET 2019-09-05 13:03:11 +00:00 committed by Git OBS Bridge
parent df63b9f0ad
commit 6670a974c5
9 changed files with 134 additions and 111 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:765296c2496d45ab83e7cd768a8a184f6e33407e4373c8024d66152a2fcde0b6
size 955719

3
armnn-19.08.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ece7270a661fc38e913b44289269af92f208daf387e8de3f68684783e1e83a71
size 1095965

View File

@ -1,15 +0,0 @@
diff --git a/src/armnn/LayerSupport.cpp b/src/armnn/LayerSupport.cpp
--- a/src/armnn/LayerSupport.cpp
+++ b/src/armnn/LayerSupport.cpp
@@ -26,10 +26,7 @@ void CopyErrorMessage(char* truncatedString, const char* fullString, size_t maxL
{
if(truncatedString != nullptr)
{
- size_t copyLength = std::min(maxLength, strlen(fullString));
- std::strncpy(truncatedString, fullString, copyLength);
- // Ensure null-terminated string.
- truncatedString[copyLength] = '\0';
+ std::snprintf(truncatedString, maxLength, fullString);
}
}

View File

@ -1,10 +0,0 @@
--- armnn-19.05.orig/CMakeLists.txt 2019-06-05 10:35:47.599978023 +0200
+++ armnn-19.05/CMakeLists.txt 2019-06-05 10:36:47.252567567 +0200
@@ -162,6 +162,7 @@ if(BUILD_ARMNN_QUANTIZER)
set_target_properties(armnnQuantizer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
target_link_libraries(armnnQuantizer
+ armnn
${Boost_SYSTEM_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}

View File

@ -0,0 +1,13 @@
--- armnn-19.05.orig/CMakeLists.txt 2019-06-11 14:59:25.672794989 +0200
+++ armnn-19.05/CMakeLists.txt 2019-06-11 15:02:26.738442920 +0200
@@ -439,6 +439,10 @@ if(ARMCOMPUTECL)
target_link_libraries(armnn ${OPENCL_LIBRARIES})
endif()
+if(BUILD_TF_PARSER)
+ target_link_libraries(armnnTfParser tensorflow_cc tensorflow_framework)
+endif()
+
if(PROFILING_BACKEND_STREAMLINE)
target_link_libraries(armnn pthread)
endif()

View File

@ -1,7 +1,7 @@
diff -purN armnn-19.05.orig/CMakeLists.txt armnn-19.05/CMakeLists.txt
--- armnn-19.05.orig/CMakeLists.txt 2019-05-28 10:59:44.000000000 +0200
+++ armnn-19.05/CMakeLists.txt 2019-06-03 13:55:21.502978565 +0200
@@ -88,6 +88,7 @@ if(BUILD_CAFFE_PARSER)
diff -purN armnn-19.08.orig/CMakeLists.txt armnn-19.08/CMakeLists.txt
--- armnn-19.08.orig/CMakeLists.txt 2019-08-30 07:49:26.000000000 +0000
+++ armnn-19.08/CMakeLists.txt 2019-09-05 08:13:37.958980306 +0000
@@ -95,6 +95,7 @@ if(BUILD_CAFFE_PARSER)
target_link_libraries(armnnCaffeParser armnn)
target_link_libraries(armnnCaffeParser ${PROTOBUF_LIBRARIES})
@ -9,7 +9,7 @@ diff -purN armnn-19.05.orig/CMakeLists.txt armnn-19.05/CMakeLists.txt
endif()
@@ -112,6 +113,7 @@ if(BUILD_ONNX_PARSER)
@@ -119,6 +120,7 @@ if(BUILD_ONNX_PARSER)
# Protobuf
target_link_libraries(armnnOnnxParser ${PROTOBUF_LIBRARIES})
@ -17,15 +17,15 @@ diff -purN armnn-19.05.orig/CMakeLists.txt armnn-19.05/CMakeLists.txt
endif()
if(BUILD_TF_PARSER)
@@ -135,6 +137,7 @@ if(BUILD_TF_PARSER)
@@ -142,6 +144,7 @@ if(BUILD_TF_PARSER)
# Protobuf (use the specific version tensorflow wants)
target_link_libraries(armnnTfParser ${PROTOBUF_LIBRARIES})
+ set_target_properties(armnnTfParser PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
endif()
if(BUILD_ARMNN_QUANTIZER)
@@ -191,6 +194,8 @@ if(BUILD_ARMNN_QUANTIZER)
if(BUILD_ARMNN_QUANTIZER AND ARMNNREF)
@@ -199,6 +202,8 @@ if(BUILD_ARMNN_QUANTIZER AND ARMNNREF)
if(Threads_FOUND AND (NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android)))
target_link_libraries(ArmnnQuantizer pthread)
endif()
@ -34,7 +34,7 @@ diff -purN armnn-19.05.orig/CMakeLists.txt armnn-19.05/CMakeLists.txt
endif()
@@ -441,6 +446,7 @@ endif()
@@ -484,6 +489,7 @@ endif()
if(PROFILING_BACKEND_STREAMLINE)
target_link_libraries(armnn pthread)
endif()
@ -42,25 +42,24 @@ diff -purN armnn-19.05.orig/CMakeLists.txt armnn-19.05/CMakeLists.txt
if(BUILD_UNIT_TESTS)
set(unittest_sources)
diff -purN armnn-19.05.orig/src/armnnSerializer/CMakeLists.txt armnn-19.05/src/armnnSerializer/CMakeLists.txt
--- armnn-19.05.orig/src/armnnSerializer/CMakeLists.txt 2019-05-28 10:59:44.000000000 +0200
+++ armnn-19.05/src/armnnSerializer/CMakeLists.txt 2019-06-03 13:57:41.984333057 +0200
@@ -34,4 +34,5 @@ if(BUILD_ARMNN_SERIALIZER)
target_include_directories(armnnSerializer SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
diff -purN armnn-19.08.orig/src/armnnSerializer/CMakeLists.txt armnn-19.08/src/armnnSerializer/CMakeLists.txt
--- armnn-19.08.orig/src/armnnSerializer/CMakeLists.txt 2019-08-30 07:49:26.000000000 +0000
+++ armnn-19.08/src/armnnSerializer/CMakeLists.txt 2019-09-05 08:18:41.108319913 +0000
@@ -43,4 +43,5 @@ if(BUILD_ARMNN_SERIALIZER)
target_link_libraries(armnnSerializer armnn ${FLATBUFFERS_LIBRARY})
-endif()
\ Pas de fin de ligne à la fin du fichier
install(TARGETS armnnSerializer
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ set_target_properties(armnnSerializer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
+endif()
diff -purN armnn-19.05.orig/src/armnnTfLiteParser/CMakeLists.txt armnn-19.05/src/armnnTfLiteParser/CMakeLists.txt
--- armnn-19.05.orig/src/armnnTfLiteParser/CMakeLists.txt 2019-05-28 10:59:44.000000000 +0200
+++ armnn-19.05/src/armnnTfLiteParser/CMakeLists.txt 2019-06-03 13:58:00.216523255 +0200
@@ -20,4 +20,5 @@ if(BUILD_TF_LITE_PARSER)
endif()
diff -purN armnn-19.08.orig/src/armnnTfLiteParser/CMakeLists.txt armnn-19.08/src/armnnTfLiteParser/CMakeLists.txt
--- armnn-19.08.orig/src/armnnTfLiteParser/CMakeLists.txt 2019-08-30 07:49:26.000000000 +0000
+++ armnn-19.08/src/armnnTfLiteParser/CMakeLists.txt 2019-09-05 08:20:47.788043949 +0000
@@ -21,6 +21,8 @@ if(BUILD_TF_LITE_PARSER)
target_link_libraries(armnnTfLiteParser ${Boost_FILESYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY})
target_link_libraries(armnnTfLiteParser armnn ${FLATBUFFERS_LIBRARY})
-endif()
\ Pas de fin de ligne à la fin du fichier
+ set_target_properties(armnnTfLiteParser PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
+endif()
+
install(TARGETS armnnTfLiteParser
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

View File

@ -1,20 +0,0 @@
--- armnn-19.05.orig/src/armnn/test/CreateWorkload.hpp 2019-06-04 09:12:20.645179117 +0200
+++ armnn-19.05/src/armnn/test/CreateWorkload.hpp 2019-05-28 10:59:44.000000000 +0200
@@ -1092,7 +1092,7 @@ std::unique_ptr<MergerWorkload> CreateMe
auto workloadMerger = MakeAndCheckWorkload<MergerWorkload>(*merger, graph, factory);
BOOST_TEST_CHECKPOINT("created merger workload");
- return std::move(workloadMerger);
+ return workloadMerger;
}
template <typename PreCompiledWorkload, armnn::DataType dataType>
@@ -1250,7 +1250,7 @@ std::unique_ptr<ConstantWorkload> Create
auto workloadConstant = MakeAndCheckWorkload<ConstantWorkload>(*constant, graph, factory);
BOOST_TEST_CHECKPOINT("created Constant workload");
- return std::move(workloadConstant);
+ return workloadConstant;
}
}

View File

@ -1,3 +1,43 @@
-------------------------------------------------------------------
Thu Sep 5 11:22:41 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Disable TensorFlow as on 15.1 only x86_64 succeed and on TW we
have incompatibility with protobuf (3.8.0 in TW and
Tensorflow uses 3.6.1 internally)
-------------------------------------------------------------------
Thu Sep 5 07:25:16 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Update to 19.08:
- Changelog: https://github.com/ARM-software/armnn/releases/tag/v19.08
- Remove upstreamed patch:
* armnn-fix_quantizer_link.patch
* armnn-fix_caffe_parser_with_new_protobuf.patch
- Refresh patch:
* armnn-generate-versioned-library.patch
- Drop patches not needed anymore:
* armnn-remove_broken_std_move.patch
* armnn-fix_build_with_gcc9.patch
-------------------------------------------------------------------
Wed Sep 4 16:15:58 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Disable LTO until lto link is fixed
https://github.com/ARM-software/armnn/issues/251
-------------------------------------------------------------------
Tue Jun 18 11:54:48 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Fix build in Tumbleweed, with latest protobuf:
* armnn-fix_caffe_parser_with_new_protobuf.patch
-------------------------------------------------------------------
Tue Jun 11 14:17:34 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Enable Tensorflow parser
- Fix link with Tensorflow:
* armnn-fix_tensorflow_link.patch
-------------------------------------------------------------------
Wed Jun 5 09:07:12 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>

View File

@ -15,6 +15,9 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# Disable LTO until lto link is fixed - https://github.com/ARM-software/armnn/issues/251
%define _lto_cflags %{nil}
# Compute library has neon enabled for aarch64 only
%ifarch aarch64
%bcond_without compute_neon
@ -42,11 +45,11 @@
# Enable CAFFE
%bcond_without armnn_caffe
# Disable TensorFlow for now (build broken)
# Disable TensorFlow as on 15.1+ only x86_64 succeed and on TW we have incompatibility with protobuf (3.8.0 in TW for Caffe and Tensorflow uses 3.6.1)
%bcond_with armnn_tf
%define version_major 19
%define version_minor 05
%define version_minor 08
Name: armnn
Version: %{version_major}.%{version_minor}
@ -58,15 +61,12 @@ Url: https://developer.arm.com/products/processors/machine-learning/a
Source0: https://github.com/ARM-software/armnn/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Patch1: armnn-fix_boost.patch
# PATCH: based on http://arago-project.org/git/?p=meta-arago.git;a=blob;f=meta-arago-extras/recipes-support/armnn/armnn/0004-generate-versioned-library.patch;hb=master
Patch3: armnn-generate-versioned-library.patch
Patch2: armnn-generate-versioned-library.patch
# Patch: http://arago-project.org/git/?p=meta-arago.git;a=blob;f=meta-arago-extras/recipes-support/armnn/armnn/0007-enable-use-of-arm-compute-shared-library.patch;hb=master
Patch4: 0007-enable-use-of-arm-compute-shared-library.patch
# https://github.com/ARM-software/armnn/issues/193
Patch5: armnn-remove_broken_std_move.patch
# https://github.com/ARM-software/armnn/issues/195
Patch6: armnn-fix_build_with_gcc9.patch
# PATCH-FIX-UPSTREAM https://review.mlplatform.org/c/ml/armnn/+/1286
Patch7: armnn-fix_quantizer_link.patch
Patch3: 0007-enable-use-of-arm-compute-shared-library.patch
# https://github.com/ARM-software/armnn/issues/207
# FIXME: remove this patch once *.pb.cc files are packaged properly in tensorflow-devel
Patch100: armnn-fix_tensorflow_link.patch
%if 0%{?suse_version} < 1330
BuildRequires: boost-devel >= 1.59
%else
@ -81,7 +81,7 @@ BuildRequires: libboost_thread-devel >= 1.59
BuildRequires: caffe-devel
%endif
BuildRequires: cmake >= 3.0.2
BuildRequires: ComputeLibrary-devel
BuildRequires: ComputeLibrary-devel >= 19.08
BuildRequires: gcc-c++
%if %{with armnn_flatbuffers}
BuildRequires: flatbuffers-devel
@ -173,6 +173,21 @@ modification across Arm Cortex CPUs and Arm Mali GPUs.
This package contains the libarmnnTfLiteParser library from armnn.
%endif
%if %{with armnn_tf}
%package -n libarmnnTfParser%{version_major}
Summary: libarmnnTfParser from armnn
Group: Development/Libraries/C and C++
%description -n libarmnnTfParser%{version_major}
Arm NN is an inference engine for CPUs, GPUs and NPUs.
It bridges the gap between existing NN frameworks and the underlying IP.
It enables efficient translation of existing neural network frameworks,
such as TensorFlow and Caffe, allowing them to run efficiently without
modification across Arm Cortex CPUs and Arm Mali GPUs.
This package contains the libarmnnTfParser library from armnn.
%endif
%if %{with armnn_caffe}
%package -n libarmnnCaffeParser%{version_major}
Summary: libarmnnCaffeParser from armnn
@ -191,11 +206,9 @@ This package contains the libarmnnCaffeParser library from armnn.
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch100 -p1
# Boost fixes for dynamic linking
sed -i 's/add_definitions("-DBOOST_ALL_NO_LIB")/add_definitions("-DBOOST_ALL_DYN_LINK")/' ./cmake/GlobalConfig.cmake
sed -i 's/set(Boost_USE_STATIC_LIBS ON)/set(Boost_USE_STATIC_LIBS OFF)/' ./cmake/GlobalConfig.cmake
@ -207,11 +220,7 @@ sed -i 's/-Wsign-conversion//' ./cmake/GlobalConfig.cmake
%cmake \
-DGENERIC_LIB_VERSION=%{version} \
-DGENERIC_LIB_SOVERSION=%{version_major} \
%if %{with armnn_tf}
-DCMAKE_CXX_FLAGS:STRING="%{optflags} -pthread -ltensorflow_cc -ltensorflow_framework" \
%else
-DCMAKE_CXX_FLAGS:STRING="%{optflags} -pthread" \
%endif
-DBOOST_LIBRARYDIR=%{_libdir} \
%if %{with armnn_caffe}
-DBUILD_CAFFE_PARSER=ON \
@ -292,20 +301,11 @@ CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership" \
find ./build/tests -maxdepth 1 -type f -executable -exec cp $CP_ARGS {} %{buildroot}%{_bindir} \;
%endif
%if %{with armnn_flatbuffers}
# Install libarmnnTfLiteParser.so*
cp $(pwd)/build/libarmnnTfLiteParser.so.%{version_major}.%{version_minor} %{buildroot}/usr/lib/
pushd %{buildroot}/usr/lib/
ln -s libarmnnTfLiteParser.so.%{version_major}.%{version_minor} libarmnnTfLiteParser.so.%{version_major}
ln -s libarmnnTfLiteParser.so.%{version_major}.%{version_minor} libarmnnTfLiteParser.so
popd
# Install libarmnnSerializer.so*
cp $(pwd)/build/libarmnnSerializer.so* %{buildroot}/usr/lib/
# Install Sample app
cp $CP_ARGS ./build/samples/SimpleSample %{buildroot}%{_bindir}
%endif
# Tumbleweed checks fail, try it anyway
%if %{with armnn_tests} && 0%{?suse_version} <= 1500
%if %{with armnn_tests}
%check
# Run tests
LD_LIBRARY_PATH="$(pwd)/build/" \
@ -323,6 +323,11 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%postun -n libarmnnTfLiteParser%{version_major} -p /sbin/ldconfig
%endif
%if %{with armnn_tf}
%post -n libarmnnTfParser%{version_major} -p /sbin/ldconfig
%postun -n libarmnnTfParser%{version_major} -p /sbin/ldconfig
%endif
%if %{with armnn_caffe}
%post -n libarmnnCaffeParser%{version_major} -p /sbin/ldconfig
%postun -n libarmnnCaffeParser%{version_major} -p /sbin/ldconfig
@ -337,6 +342,9 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%{_bindir}/TfLite*-Armnn
%{_bindir}/Image*Generator
%endif
%if %{with armnn_tf}
%{_bindir}/Tf*-Armnn
%endif
%if %{with armnn_tests}
%{_bindir}/ExecuteNetwork
%if %{with armnn_caffe}
@ -349,19 +357,24 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%endif
%files -n lib%{name}%{version_major}
/usr/lib/lib%{name}.so.*
%{_libdir}/lib%{name}.so.*
%if %{with armnn_flatbuffers}
%files -n libarmnnSerializer%{version_major}
/usr/lib/libarmnnSerializer.so.*
%{_libdir}/libarmnnSerializer.so.*
%files -n libarmnnTfLiteParser%{version_major}
/usr/lib/libarmnnTfLiteParser.so.*
%{_libdir}/libarmnnTfLiteParser.so.*
%endif
%if %{with armnn_tf}
%files -n libarmnnTfParser%{version_major}
%{_libdir}/libarmnnTfParser.so.*
%endif
%if %{with armnn_caffe}
%files -n libarmnnCaffeParser%{version_major}
/usr/lib/libarmnnCaffeParser.so.*
%{_libdir}/libarmnnCaffeParser.so.*
%endif
%files devel
@ -382,13 +395,16 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%{_includedir}/armnnQuantizer/INetworkQuantizer.hpp
%dir %{_includedir}/armnnSerializer/
%{_includedir}/armnnSerializer/ISerializer.hpp
/usr/lib/libarmnn.so
%{_libdir}/libarmnn.so
%if %{with armnn_flatbuffers}
/usr/lib/libarmnnSerializer.so
/usr/lib/libarmnnTfLiteParser.so
%{_libdir}/libarmnnSerializer.so
%{_libdir}/libarmnnTfLiteParser.so
%endif
%if %{with armnn_tf}
%{_libdir}/libarmnnTfParser.so
%endif
%if %{with armnn_caffe}
/usr/lib/libarmnnCaffeParser.so
%{_libdir}/libarmnnCaffeParser.so
%endif