diff --git a/armnn-19.05.tar.gz b/armnn-19.05.tar.gz deleted file mode 100644 index 8706304..0000000 --- a/armnn-19.05.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:765296c2496d45ab83e7cd768a8a184f6e33407e4373c8024d66152a2fcde0b6 -size 955719 diff --git a/armnn-19.08.tar.gz b/armnn-19.08.tar.gz new file mode 100644 index 0000000..34d5b90 --- /dev/null +++ b/armnn-19.08.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ece7270a661fc38e913b44289269af92f208daf387e8de3f68684783e1e83a71 +size 1095965 diff --git a/armnn-fix_build_with_gcc9.patch b/armnn-fix_build_with_gcc9.patch deleted file mode 100644 index ece0c44..0000000 --- a/armnn-fix_build_with_gcc9.patch +++ /dev/null @@ -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); - } - } - diff --git a/armnn-fix_quantizer_link.patch b/armnn-fix_quantizer_link.patch deleted file mode 100644 index b0621a2..0000000 --- a/armnn-fix_quantizer_link.patch +++ /dev/null @@ -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} diff --git a/armnn-fix_tensorflow_link.patch b/armnn-fix_tensorflow_link.patch new file mode 100644 index 0000000..6420a04 --- /dev/null +++ b/armnn-fix_tensorflow_link.patch @@ -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() diff --git a/armnn-generate-versioned-library.patch b/armnn-generate-versioned-library.patch index 2fd061e..7262752 100644 --- a/armnn-generate-versioned-library.patch +++ b/armnn-generate-versioned-library.patch @@ -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}) diff --git a/armnn-remove_broken_std_move.patch b/armnn-remove_broken_std_move.patch deleted file mode 100644 index 5668a70..0000000 --- a/armnn-remove_broken_std_move.patch +++ /dev/null @@ -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 CreateMe - auto workloadMerger = MakeAndCheckWorkload(*merger, graph, factory); - BOOST_TEST_CHECKPOINT("created merger workload"); - -- return std::move(workloadMerger); -+ return workloadMerger; - } - - template -@@ -1250,7 +1250,7 @@ std::unique_ptr Create - auto workloadConstant = MakeAndCheckWorkload(*constant, graph, factory); - BOOST_TEST_CHECKPOINT("created Constant workload"); - -- return std::move(workloadConstant); -+ return workloadConstant; - } - - } diff --git a/armnn.changes b/armnn.changes index eb28bf6..920408b 100644 --- a/armnn.changes +++ b/armnn.changes @@ -1,3 +1,43 @@ +------------------------------------------------------------------- +Thu Sep 5 11:22:41 UTC 2019 - Guillaume GARDET + +- 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 + +- 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 + +- 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 + +- 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 + +- Enable Tensorflow parser +- Fix link with Tensorflow: + * armnn-fix_tensorflow_link.patch + ------------------------------------------------------------------- Wed Jun 5 09:07:12 UTC 2019 - Guillaume GARDET diff --git a/armnn.spec b/armnn.spec index 4af2ae3..55eb4f6 100644 --- a/armnn.spec +++ b/armnn.spec @@ -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