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

- Build and package libarmnnTfLiteParser
- Fix libarmnnQuantizer build with:
  * armnn-fix_quantizer_link.patch
- Add _constraints to avoid OOM errors
- Update to 19.05:
- Changelog: https://github.com/ARM-software/armnn/releases/tag/v19.05
- Remove upstreamed patch:
  * armnn-fix_stb_include.patch
- Rebase patch:
  * armnn-generate-versioned-library.patch
- Update patch:
  * armnn-remove_broken_std_move.patch
- Fix build on Tumbleweed with:
  * armnn-fix_build_with_gcc9.patch
- Fix build on Tumbleweed with:
  * armnn-remove_broken_std_move.patch

OBS-URL: https://build.opensuse.org/request/show/707891
OBS-URL: https://build.opensuse.org/package/show/science:machinelearning/armnn?expand=0&rev=4
This commit is contained in:
Guillaume GARDET 2019-06-05 16:12:07 +00:00 committed by Git OBS Bridge
parent 2a68779842
commit f0ef77ff1d
10 changed files with 185 additions and 53 deletions

10
_constraints Normal file
View File

@ -0,0 +1,10 @@
<constraints>
<hardware>
<memory>
<size unit="G">5</size>
</memory>
<disk>
<size unit="G">2</size>
</disk>
</hardware>
</constraints>

View File

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

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

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

View File

@ -0,0 +1,15 @@
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

@ -0,0 +1,10 @@
--- 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

@ -1,19 +0,0 @@
--- armnn-19.02.orig/tests/InferenceTestImage.cpp 2019-03-26 16:40:06.771572115 +0100
+++ armnn-19.02/tests/InferenceTestImage.cpp 2019-03-26 16:40:25.483761594 +0100
@@ -12,13 +12,13 @@
#include <array>
#define STB_IMAGE_IMPLEMENTATION
-#include <stb_image.h>
+#include <stb/stb_image.h>
#define STB_IMAGE_RESIZE_IMPLEMENTATION
-#include <stb_image_resize.h>
+#include <stb/stb_image_resize.h>
#define STB_IMAGE_WRITE_IMPLEMENTATION
-#include <stb_image_write.h>
+#include <stb/stb_image_write.h>
namespace
{

View File

@ -1,6 +1,7 @@
--- armnn-19.02.orig/CMakeLists.txt 2019-04-11 10:31:03.241484945 +0200
+++ armnn-19.02/CMakeLists.txt 2019-04-11 10:32:20.878025310 +0200
@@ -82,6 +82,7 @@ if(BUILD_CAFFE_PARSER)
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)
target_link_libraries(armnnCaffeParser armnn)
target_link_libraries(armnnCaffeParser ${PROTOBUF_LIBRARIES})
@ -8,7 +9,7 @@
endif()
@@ -106,6 +107,7 @@ if(BUILD_ONNX_PARSER)
@@ -112,6 +113,7 @@ if(BUILD_ONNX_PARSER)
# Protobuf
target_link_libraries(armnnOnnxParser ${PROTOBUF_LIBRARIES})
@ -16,31 +17,15 @@
endif()
if(BUILD_TF_PARSER)
@@ -129,6 +131,7 @@ if(BUILD_TF_PARSER)
@@ -135,6 +137,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_TF_LITE_PARSER)
@@ -147,6 +150,7 @@ if(BUILD_TF_LITE_PARSER)
target_link_libraries(armnnTfLiteParser ${Boost_FILESYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY})
target_link_libraries(armnnTfLiteParser armnn ${FLATBUFFERS_LIBRARY})
+ set_target_properties(armnnTfLiteParser PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
endif()
if(BUILD_ARMNN_SERIALIZER)
@@ -178,6 +182,7 @@ if(BUILD_ARMNN_SERIALIZER)
target_include_directories(armnnSerializer SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src/armnnSerializer)
target_link_libraries(armnnSerializer armnn ${FLATBUFFERS_LIBRARY})
+ set_target_properties(armnnSerializer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
endif()
if(BUILD_ARMNN_QUANTIZER)
@@ -208,6 +213,8 @@ if(BUILD_ARMNN_QUANTIZER)
@@ -191,6 +194,8 @@ if(BUILD_ARMNN_QUANTIZER)
if(Threads_FOUND AND (NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android)))
target_link_libraries(ArmnnQuantizer pthread)
endif()
@ -49,7 +34,7 @@
endif()
@@ -449,6 +456,7 @@ endif()
@@ -441,6 +446,7 @@ endif()
if(PROFILING_BACKEND_STREAMLINE)
target_link_libraries(armnn pthread)
endif()
@ -57,3 +42,25 @@
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})
target_link_libraries(armnnSerializer armnn ${FLATBUFFERS_LIBRARY})
-endif()
\ Pas de fin de ligne à la fin du fichier
+ 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)
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()

View File

@ -0,0 +1,20 @@
--- 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,39 @@
-------------------------------------------------------------------
Wed Jun 5 09:07:12 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Build and package libarmnnTfLiteParser
- Fix libarmnnQuantizer build with:
* armnn-fix_quantizer_link.patch
-------------------------------------------------------------------
Tue Jun 4 09:22:24 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Add _constraints to avoid OOM errors
-------------------------------------------------------------------
Mon Jun 3 11:40:47 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Update to 19.05:
- Changelog: https://github.com/ARM-software/armnn/releases/tag/v19.05
- Remove upstreamed patch:
* armnn-fix_stb_include.patch
- Rebase patch:
* armnn-generate-versioned-library.patch
- Update patch:
* armnn-remove_broken_std_move.patch
-------------------------------------------------------------------
Mon Jun 3 09:15:25 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Fix build on Tumbleweed with:
* armnn-fix_build_with_gcc9.patch
-------------------------------------------------------------------
Wed May 29 15:19:15 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Fix build on Tumbleweed with:
* armnn-remove_broken_std_move.patch
-------------------------------------------------------------------
Wed May 29 08:12:43 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>

View File

@ -25,23 +25,29 @@
# Disable OpenCL from Compute library, as check fails
%bcond_with compute_cl
# stb-devel and flatbuffers-devel are available on Leap 15.1+
%if 0%{?suse_version} > 1500
# stb-devel is available on Leap 15.1+
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150000 && 0%{?is_opensuse}
%bcond_without armnn_tests
%bcond_without armnn_flatbuffers
%else
%bcond_with armnn_tests
%endif
# flatbuffers-devel is available on TW only
%if 0%{?suse_version} > 1500
%bcond_without armnn_flatbuffers
%else
%bcond_with armnn_flatbuffers
%endif
# Enable CAFFE
%bcond_without armnn_caffe
# Disable TensorFlow for now (build broken)
# TMP: totest
# %%bcond_without armnn_tf
%bcond_with armnn_tf
%define version_major 19
%define version_minor 02
%define version_minor 05
Name: armnn
Version: %{version_major}.%{version_minor}
@ -52,11 +58,16 @@ Group: Development/Libraries/Other
Url: https://developer.arm.com/products/processors/machine-learning/arm-nn
Source0: https://github.com/ARM-software/armnn/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Patch1: armnn-fix_boost.patch
Patch2: armnn-fix_stb_include.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
# 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
%if 0%{?suse_version} < 1330
BuildRequires: boost-devel >= 1.59
%else
@ -75,6 +86,7 @@ BuildRequires: ComputeLibrary-devel
BuildRequires: gcc-c++
%if %{with armnn_flatbuffers}
BuildRequires: flatbuffers-devel
BuildRequires: tensorflow-lite-devel
%endif
%if %{with compute_cl}
# Mesa-libOpenCl is required for tests
@ -147,6 +159,19 @@ such as TensorFlow and Caffe, allowing them to run efficiently without
modification across Arm Cortex CPUs and Arm Mali GPUs.
This package contains the libarmnnSerializer library from armnn.
%package -n libarmnnTfLiteParser%{version_major}
Summary: libarmnnTfLiteParser from armnn
Group: Development/Libraries/C and C++
%description -n libarmnnTfLiteParser%{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 libarmnnTfLiteParser library from armnn.
%endif
%if %{with armnn_caffe}
@ -167,9 +192,11 @@ 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
# 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
@ -199,9 +226,12 @@ sed -i 's/-Wsign-conversion//' ./cmake/GlobalConfig.cmake
-DFLATC_DIR=%{_bindir} \
-DFLATBUFFERS_INCLUDE_PATH=%{_includedir} \
-DBUILD_ARMNN_QUANTIZER=ON \
-DBUILD_TF_LITE_PARSER=ON \
-DTF_LITE_SCHEMA_INCLUDE_PATH=%{_includedir}/tensorflow/lite/schema/ \
%else
-DBUILD_ARMNN_SERIALIZER=OFF \
-DBUILD_ARMNN_QUANTIZER=OFF \
-DBUILD_TF_LITE_PARSER=OFF \
%endif
%if %{with armnn_tf}
-DBUILD_TF_PARSER=ON \
@ -263,11 +293,20 @@ 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
%if %{with armnn_tests}
# Tumbleweed checks fail, try it anyway
%if %{with armnn_tests} && 0%{?suse_version} <= 1500
%check
# Run tests
LD_LIBRARY_PATH="$(pwd)/build/" \
@ -280,6 +319,9 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%if %{with armnn_flatbuffers}
%post -n libarmnnSerializer%{version_major} -p /sbin/ldconfig
%postun -n libarmnnSerializer%{version_major} -p /sbin/ldconfig
%post -n libarmnnTfLiteParser%{version_major} -p /sbin/ldconfig
%postun -n libarmnnTfLiteParser%{version_major} -p /sbin/ldconfig
%endif
%if %{with armnn_caffe}
@ -287,10 +329,15 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%postun -n libarmnnCaffeParser%{version_major} -p /sbin/ldconfig
%endif
%files
%defattr(-,root,root)
%doc README.md
%license LICENSE
%if %{with armnn_flatbuffers}
%{_bindir}/TfLite*-Armnn
%{_bindir}/Image*Generator
%endif
%if %{with armnn_tests}
%{_bindir}/ExecuteNetwork
%if %{with armnn_caffe}
@ -308,6 +355,9 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%if %{with armnn_flatbuffers}
%files -n libarmnnSerializer%{version_major}
/usr/lib/libarmnnSerializer.so.*
%files -n libarmnnTfLiteParser%{version_major}
/usr/lib/libarmnnTfLiteParser.so.*
%endif
%if %{with armnn_caffe}
@ -329,11 +379,14 @@ LD_LIBRARY_PATH="$(pwd)/build/" \
%{_includedir}/armnnTfParser/ITfParser.hpp
%dir %{_includedir}/armnnDeserializer/
%{_includedir}/armnnDeserializer/IDeserializer.hpp
%dir %{_includedir}/armnnQuantizer
%{_includedir}/armnnQuantizer/INetworkQuantizer.hpp
%dir %{_includedir}/armnnSerializer/
%{_includedir}/armnnSerializer/ISerializer.hpp
/usr/lib/libarmnn.so
%if %{with armnn_flatbuffers}
/usr/lib/libarmnnSerializer.so
/usr/lib/libarmnnTfLiteParser.so
%endif
%if %{with armnn_caffe}
/usr/lib/libarmnnCaffeParser.so