platform/upstream/armnn.git
4 years agoIVGCVSW-4424 Set minimum timeout for SendThread in WaitingForAck state
Finn Williams [Mon, 10 Feb 2020 16:59:58 +0000 (16:59 +0000)]
IVGCVSW-4424 Set minimum timeout for SendThread in WaitingForAck state

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: Iee7de5040e355933b7e14a39d44e9d51b30427c8

4 years agoIVGCVSW-4328 BufferManager running out of buffers crashes application
Sadik Armagan [Mon, 10 Feb 2020 12:24:15 +0000 (12:24 +0000)]
IVGCVSW-4328 BufferManager running out of buffers crashes application

* Refactored SendCounterPacket classes, separated SendCounterPacket from Send thread
* Created ISendThread.hpp, IConsumer, SendThread.hpp and SendThread.cpp
* Injected IConsumer to BufferManager to notify SendThread when packet is ready to read

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I80f0bb8b8401c6bfd1611f7760217c6fe35d7ad8

4 years agoIVGCVSW-4409 Fix TfLiteParser to handle all datatypes correctly
Ryan OShea [Fri, 7 Feb 2020 17:22:22 +0000 (17:22 +0000)]
IVGCVSW-4409 Fix TfLiteParser to handle all datatypes correctly

 * Added check for QAsymmS8 datatype for Per-Tensor quantization

Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com>
Change-Id: I902aa3863dd5cefdce90e68be8a5750dd6ff9e54

4 years agoClean up header inclusion in CL workloads.
Matthew Bentham [Wed, 5 Feb 2020 21:39:55 +0000 (21:39 +0000)]
Clean up header inclusion in CL workloads.

Remove usage of CLFunctions.h and replace with specific header
for each function.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: I255a843b36a5dd8cf90a52786282192b8fe04f83

4 years agoSuppress warnings from OpenCL include folder.
Matthew Bentham [Wed, 5 Feb 2020 22:15:26 +0000 (22:15 +0000)]
Suppress warnings from OpenCL include folder.

Fixes an odd compiler warning with half.hpp when included
from ComputeLibrary/include directory.

Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
Change-Id: I17d251bb68384c357ffb93ea8e63333564aba659

4 years agoIVGCVSW-4400 Adding invocation of the back to Profiling Service initialisation
David Monahan [Fri, 7 Feb 2020 12:01:05 +0000 (12:01 +0000)]
IVGCVSW-4400 Adding invocation of the back to Profiling Service initialisation

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I5f3bb4c9cde1cca11b8f6201ab559c2960eb32c0

4 years agoIVGCVSW-4319 Implement Counter Status Querying
James Conroy [Thu, 6 Feb 2020 18:34:52 +0000 (18:34 +0000)]
IVGCVSW-4319 Implement Counter Status Querying

* Adds implementations for GetCounterStatus and
  GetActiveCounters.
* Adds CheckCounterStatusQuery in ProfilingTests.
* Modifies Holder and ProfilingService to open
  up access to CaptureData for use by
  BackendProfiling.

Signed-off-by: James Conroy <james.conroy@arm.com>
Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
Change-Id: Iec47952545c0072a71088b12ca3dc31673fa9c51

4 years agoIVGCVSW-4402 Modify the signature of CreateBackendProfilingContext
Narumol Prangnawarat [Mon, 10 Feb 2020 10:05:50 +0000 (10:05 +0000)]
IVGCVSW-4402 Modify the signature of CreateBackendProfilingContext
             as the signature in IBackendInternal is changed to remove const

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I773cbc36f49bde13e498a05399d55ca9b0343d31

4 years agoIVGCVSW-4386 Add ArmNN reference support for QAsymmS8
Ryan OShea [Fri, 7 Feb 2020 10:06:33 +0000 (10:06 +0000)]
IVGCVSW-4386 Add ArmNN reference support for QAsymmS8

 * Added Quantization Scheme for QAsymmS8
 * Added Unit Tests for QAsymmS8
 * Renamed QAsymm8 calls to QAsymmU8

Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com>
Change-Id: I897b4e018ba1d808cc3f8c113f2be2dbad49c8db

4 years agoIVGCVSW-4402 add boost and armnn path to sample dynamic backend
Narumol Prangnawarat [Fri, 7 Feb 2020 10:28:31 +0000 (10:28 +0000)]
IVGCVSW-4402 add boost and armnn path to sample dynamic backend

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ibeed3301352d8f15e144f8466d8a26b21c744b84

4 years agoIVGCVSW-4418 disable unused variable and parameter warning for Caffe protobuf cc
Narumol Prangnawarat [Fri, 7 Feb 2020 09:46:31 +0000 (09:46 +0000)]
IVGCVSW-4418 disable unused variable and parameter warning for Caffe protobuf cc

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I903b75276b0c98894d8116a3d244103a910efa63

4 years agoMLCE-139: add capability to align corners for bilinear resize
Sang-Hoon Park [Wed, 8 Jan 2020 10:25:24 +0000 (10:25 +0000)]
MLCE-139: add capability to align corners for bilinear resize

* Add parsing of the related parameter to TfLiteParser
* Update ResizeDescriptor to store the additional parameter
* Update NEON/CL workload to pass the additional parameter.
* Update Reference workload to pass and handle the additional parameter.

!ComputeLibrary:2538
!ComputeLibrary:2569
!armnn:2612

Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com>
Change-Id: Id149e1c24c2abed7e9dd81939acf54dfabfcdfd2

4 years agoUpdate ACL pin to c971cf1034a61875c8e8c87d48634cbfac3865fd
Teresa Charlin [Fri, 7 Feb 2020 09:06:28 +0000 (09:06 +0000)]
Update ACL pin to c971cf1034a61875c8e8c87d48634cbfac3865fd

* COMPMID-3090: Fail NEON/ColorConvert/RGBtoU8

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I551e5a6e4d755a52e67298b94c44ede61c8431c0

4 years agoIVGCVSW-4317 Implement the Profiling Context Initialisation
Colm Donelan [Wed, 5 Feb 2020 17:48:59 +0000 (17:48 +0000)]
IVGCVSW-4317 Implement the Profiling Context Initialisation

* Call CreateBackendProfilingContext on each backend from Runtime passing
  an instance of the BackendProfiling interface.
* Modify the signature of CreateBackendProfilingContext to remove const
  and return a shared_ptr to BackendProfilingContext
* Add concrete BackendProfiling class.
* Store BackendProfilingContexts in Profiling service.

Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
Change-Id: I975eaa2093ae91fa623835f65f9e5b25eb65117a

4 years agoUpdate ACL pin to 4bce11548268b9a10b0f06eff3cff9ae06d5b9dd
Kevin May [Thu, 6 Feb 2020 09:16:45 +0000 (09:16 +0000)]
Update ACL pin to 4bce11548268b9a10b0f06eff3cff9ae06d5b9dd

* COMPMID-3063: Address Custom Convolution failures

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I9fce935d72aca67198ab381351828cd016c0c41d

4 years agoIVGCVSW-4404 Add libraries to sample dynamic backend for android
Narumol Prangnawarat [Tue, 4 Feb 2020 14:45:41 +0000 (14:45 +0000)]
IVGCVSW-4404 Add libraries to sample dynamic backend for android

 * Add Boost and armnn paths
 * Add CreateBackendProfilingContext, CreateWorkloadFactory,
   CreateBackendProfilingContext

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ib36d751b15450a922c12895e292abafe06f9e7cf

4 years agoIVGCVSW-4389 Enable ClTuner in ClContextControl
Derek Lamberti [Tue, 4 Feb 2020 14:49:16 +0000 (14:49 +0000)]
IVGCVSW-4389 Enable ClTuner in ClContextControl

Change-Id: If169736c4523a92f9aa10eac13e320eb41088624
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoClean up header usage a bit in NEON backend
Matthew Bentham [Fri, 24 Jan 2020 23:11:43 +0000 (23:11 +0000)]
Clean up header usage a bit in NEON backend

Including NEFunctions.h is unnecessary and adds about a second
to compile time each translation unit in which it appears,
so we should use just the header file with the arm compute function
declarations that we need.

Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
Change-Id: I605d0eb82ccf2aafa35381a5d9d54337d3fe17a7

4 years agoBuild graph->inputIds/outputIds with layerBindingId instead of layerIndex
Tee Jung [Tue, 5 Nov 2019 10:48:25 +0000 (10:48 +0000)]
Build graph->inputIds/outputIds with layerBindingId instead of layerIndex

Signed-off-by: Jung Tae-young tee.ty.jung@openedges.com
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Change-Id: I25ceeca70e72fad88ab039aed5a5ab6a7cc08c6c
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoGithub #273 Handle failure to initialise BackendContext in Runtime
Matthew Bentham [Tue, 4 Feb 2020 10:03:55 +0000 (10:03 +0000)]
Github #273 Handle failure to initialise BackendContext in Runtime

Define CreateBackendContext to throw BackendUnavailableException
if necessary runtime components are missing.

Handle this in the constructor of Runtime by not adding those
backends to the internal DeviceSpec owned by the Runtime.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: Iadffb5240e32e1f105683c4d361276b92d1e720c

4 years agoIVGCVSW-4390 Refactor QUANTIZE to make use of Decoder/Encoder types
Keith Davis [Tue, 4 Feb 2020 09:31:47 +0000 (09:31 +0000)]
IVGCVSW-4390 Refactor QUANTIZE to make use of Decoder/Encoder types

 * Fix bug where QSymmS8 is duplicated and F16 is missing

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I312815868e74a9dff913bac052f1a86585644098

4 years agoIVGCVSW-4365 Update ACL pin to 5c829cab49b0dcffd893065af05f0bf028e7a548
Teresa Charlin [Mon, 3 Feb 2020 18:15:00 +0000 (18:15 +0000)]
IVGCVSW-4365 Update ACL pin to 5c829cab49b0dcffd893065af05f0bf028e7a548
* Fix CTS for ArgMinMax

Change-Id: I61ac4f80550bc3cbf2e19af5e602e3070c43ea1d
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
4 years agoIVGCVSW-4399 Create Sample Dynamic backend
Narumol Prangnawarat [Mon, 3 Feb 2020 12:29:56 +0000 (12:29 +0000)]
IVGCVSW-4399 Create Sample Dynamic backend

 * Move IWorkload and WorkloadInfo to include/armnn/backends
 * Add simple sample dynamic backend with addition workload
 * Add sample example to run dynamic backend
 * Unit tests

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I0753ce35b8e8a6223a1471388b49246d82438a44

4 years agoIVGCVSW-4334 Wire Signed Quantized 8 bit type into ACL
Keith Davis [Mon, 3 Feb 2020 14:47:54 +0000 (14:47 +0000)]
IVGCVSW-4334 Wire Signed Quantized 8 bit type into ACL

 * Add QSymmS8 LayerSupport tests for all backends
 * Update BatchNormalization IsLayerSupport Bias' QSymmS8 case

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: Ib66befe11f9df5956869eb80699fc415a4d3fa16

4 years agoIVGCVSW-4393 Register backend counters
Jim Flynn [Sun, 2 Feb 2020 12:52:59 +0000 (12:52 +0000)]
IVGCVSW-4393 Register backend counters

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I419ecc2fce4b7e0fcaeb6d1f9cb687c0b660125d
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
4 years agoIVGCVSW-4394 Add CounterIdMap to Profiling Service
Jim Flynn [Thu, 30 Jan 2020 14:10:55 +0000 (14:10 +0000)]
IVGCVSW-4394 Add CounterIdMap to Profiling Service

Change-Id: I416397a7855fe45319b4801252e141b78f0325f0
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
4 years agoIVGCVSW-4390 Refactor QUANTIZE to make use of Decoder/Encoder types
Keith Davis [Wed, 29 Jan 2020 16:52:59 +0000 (16:52 +0000)]
IVGCVSW-4390 Refactor QUANTIZE to make use of Decoder/Encoder types

 * Add no-ops for CL/NEON Uint8
 * Refactor Quantize workload to Decoder/Encoder types

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I80b09de528299b925e2ac38acd9a5019b8d3e4ac

4 years agoIVGCVSW-4388 Update ACL pin to 6a342648ae50beb8457871862f14fc9baef6b74f
Teresa Charlin [Fri, 31 Jan 2020 10:21:44 +0000 (10:21 +0000)]
IVGCVSW-4388 Update ACL pin to 6a342648ae50beb8457871862f14fc9baef6b74f

!android-nn-driver:2671

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Ifeb6be7812fbb98b37f2a1439bfd5a3215de2a62

4 years agoIVGCVSW-4196 Add condition to check to add common source for Android
Narumol Prangnawarat [Fri, 31 Jan 2020 11:59:06 +0000 (11:59 +0000)]
IVGCVSW-4196 Add condition to check to add common source for Android
             to dynamic reference CMakeLists

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I7a60903e2af0fdbceabbad312616ecc049f9701d

4 years agoIVGCVSW-4171 Temporarily disable DumpOutgoingValidFileEndToEnd unit test
Jan Eilers [Thu, 30 Jan 2020 13:50:36 +0000 (13:50 +0000)]
IVGCVSW-4171 Temporarily disable DumpOutgoingValidFileEndToEnd unit test

* Test causes intermittent failures on CI system
* Temporarily disabled until fix is found

Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I689a4688d64040d557c63829a765d2c07c4fac3a

4 years agoIVGCVSW-4391 Add Global/Backend Counter ID map
David Monahan [Thu, 30 Jan 2020 12:44:23 +0000 (12:44 +0000)]
IVGCVSW-4391 Add Global/Backend Counter ID map

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I943e02bc2026564e3a19d03e81ba75850d204497

4 years agoIVGCVSW-4322 Remove deprecated AbsLayer and RsqrtLayer and add source
Narumol Prangnawarat [Tue, 28 Jan 2020 16:50:13 +0000 (16:50 +0000)]
IVGCVSW-4322 Remove deprecated AbsLayer and RsqrtLayer and add source
             for all environment to dynamic reference backend CMakeLists

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I2db1f48597b2af08c9d6d8d052ca08e885e51563

4 years agoIVGCVSW-4149 Enable quantisation multiplier > 1 in all convolutions
Ryan OShea [Wed, 29 Jan 2020 16:19:55 +0000 (16:19 +0000)]
IVGCVSW-4149 Enable quantisation multiplier > 1 in all convolutions

Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com>
Change-Id: I9652844a868ce8e05c0433c051e7079cf203c422

4 years agoIVGCVSW-4316 First draft of IBackendProfiling and IBackendProfilingContext
Colm Donelan [Wed, 29 Jan 2020 15:22:43 +0000 (15:22 +0000)]
IVGCVSW-4316 First draft of IBackendProfiling and IBackendProfilingContext

* Introduce two new backend profiling interfaces IBackendProfiling
  and IBackendProfilingContext.
* Add a mechanism to pull a context from a backend through IBackendInternal
* Update CL, Neon and Ref backends to return an empty profiling backend.

Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
Change-Id: I6e7438fcb126ad7a073a226862dc44836c9998b7

4 years agoIVGCVSW-4152 Remove check for QAsymm8 in ArgMinMax CL layer support
Ryan OShea [Thu, 23 Jan 2020 11:56:05 +0000 (11:56 +0000)]
IVGCVSW-4152 Remove check for QAsymm8 in ArgMinMax CL layer support

 * Added ClLayerTests
 * Added ClEndToEndTests

Signed-off-by: Ryan OShea <ryaosh02@e121865.galway.arm.com>
Change-Id: I1512ebae248dee9a0e6a8c4f52ecf99f677a22c6

4 years agoIVGCVSW-4306 Verify the tflite Yolo v3
Keith Davis [Mon, 27 Jan 2020 15:24:59 +0000 (15:24 +0000)]
IVGCVSW-4306 Verify the tflite Yolo v3

 * Added debug layer support for QSymmS8
 * QSymmS8 support for workloads

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I51af92fadc0be290629dd9198beab5abef9e351f

4 years agoIVGCVSW-4335 Add support for per-channel QSymm8 to TfLite parser
Keith Davis [Wed, 22 Jan 2020 11:57:54 +0000 (11:57 +0000)]
IVGCVSW-4335 Add support for per-channel QSymm8 to TfLite parser

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I52f777f56138a27655a821aff376ecd0d3d23511

4 years agoIVGCVSW-4360 Update ACL pin to 19bd412fd044197726dbd8c756dbd74a9e33fd2b
Teresa Charlin [Tue, 21 Jan 2020 13:29:22 +0000 (13:29 +0000)]
IVGCVSW-4360 Update ACL pin to 19bd412fd044197726dbd8c756dbd74a9e33fd2b

!android-nn-driver:2614

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I3b4019cb562bd13cc661d9c175de4e3e1adea9a2

4 years agoIVGCVSW-4369 Add default offset and scale to IsLayerSupportedTestImpl
Teresa Charlin [Tue, 28 Jan 2020 12:24:34 +0000 (12:24 +0000)]
IVGCVSW-4369 Add default offset and scale to IsLayerSupportedTestImpl

*Fix IsLayerSupportedUint8Cl failure due to scale=0

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I6e5125eccdd495a9c98b434837d1e9ab371a4e8e

4 years agoIVGCVSW-4316 Promote ISendTimelinePacket and IProfilingGuidGenerator
Colm Donelan [Fri, 24 Jan 2020 16:27:02 +0000 (16:27 +0000)]
IVGCVSW-4316 Promote ISendTimelinePacket and IProfilingGuidGenerator

As part of IVGCVSW-4316 we need to expose ISendTimelinePacket and
IProfilingGuidGenerator to enable them to be used by backends for
profiling. This also required moving ProfilingRelationshipType from
ProfilingUtils.

Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
Change-Id: I58cc64e32ecfffa5231c9d2028522ed58d0ddf31

4 years agoIVGCVSW-4313 Add Android case to dynamic reference CMakeLists
Narumol Prangnawarat [Mon, 27 Jan 2020 14:13:03 +0000 (14:13 +0000)]
IVGCVSW-4313 Add Android case to dynamic reference CMakeLists

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I10724f2874018fb214cd12c3aef45be5347a8306

4 years agoIVGCVSW-4380 Add NEON backend support for BatchToSpaceNd
Mike Kelly [Mon, 27 Jan 2020 12:14:47 +0000 (12:14 +0000)]
IVGCVSW-4380 Add NEON backend support for BatchToSpaceNd

 * Added NeonBatchToSpaceNdWorkload class.
 * Added CreateBatchToSpaceNd implementation to NeonWorkloadFactory.
 * Added IsBatchToSpaceNdSupported implementation to NeonLayerSupport.
 * Enabled BatchToSpaceNd tests on Neon backend.

Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I179feefaa67dc87a03fcbe52e5df100c1188f9a5

4 years agoIVGCVSW-4262 Use ACL Permute and Reshape Validate function in Neon and CL
Kevin May [Thu, 12 Dec 2019 17:28:05 +0000 (17:28 +0000)]
IVGCVSW-4262 Use ACL Permute and Reshape Validate function in Neon and CL

!android-nn-driver:2642

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: Ibabb73c0ae0df2e530a68398f75c76e6b80c0701

4 years agoUpdates to Filesystem.cpp/hpp and NetworkSockets.cpp/hpp to fix failing master
David Monahan [Fri, 24 Jan 2020 09:13:33 +0000 (09:13 +0000)]
Updates to Filesystem.cpp/hpp and NetworkSockets.cpp/hpp to fix failing master

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I566c29754aa586167a938d2c2b4e5069a39b5e50

4 years agoMLCE-156: Add Division workload in CpuAcc
Pablo Tello [Thu, 23 Jan 2020 10:37:17 +0000 (10:37 +0000)]
MLCE-156: Add Division workload in CpuAcc

Change-Id: I1f228fcaf1077867d9755a2b850c6703387fab34
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
4 years agoIVGCVSW-4374 Add NEON backend support for SpaceToBatchNd
Mike Kelly [Fri, 24 Jan 2020 11:27:50 +0000 (11:27 +0000)]
IVGCVSW-4374 Add NEON backend support for SpaceToBatchNd

 * Added NeonSpaceToBatchNdWorkload class.
 * Added CreateSpaceToBatchNd implementation to NeonWorkloadFactory.
 * Added IsSpaceToBatchNdSupported implementation to NeonLayerSupport.
 * Enabled SpaceToBatchNd tests on Neon backend.

Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: Ic7d469a380482ec9febd44450f72dd7e53cda03f

4 years agoAdd ARMNN_DLLEXPORT macro to import/export static data symbols on Windows
Rob Hughes [Tue, 7 Jan 2020 09:40:12 +0000 (09:40 +0000)]
Add ARMNN_DLLEXPORT macro to import/export static data symbols on Windows

Armnn has several static data symbols that are needed by the unit tests.
These are now explicitly marked for import when that header is included
from the unit test code.

See also https://cmake.org/cmake/help/v3.4/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html.

Change-Id: I4e71ba659b6321659a1396125b5a9c271578040f
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoIVGCVSW-4370 Deprecate DataType::QuantizedSymm8PerAxis
Derek Lamberti [Wed, 22 Jan 2020 15:37:29 +0000 (15:37 +0000)]
IVGCVSW-4370 Deprecate DataType::QuantizedSymm8PerAxis

!android-nn-driver:2622

Change-Id: If99d3eff71ff66ba28af1e5af248299fe04511b9
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4259 Add frontend and reference workload for UnaryOperationLayer
josh minor [Mon, 6 Jan 2020 22:40:46 +0000 (16:40 -0600)]
IVGCVSW-4259 Add frontend and reference workload for UnaryOperationLayer

* Added new layer named ElementwiseUnary
* Deprecated existing Abs/Rsqrt layer functions
* Updated existing Abs/Rsqrt test infrastructure to use new layer
* Added boilerplate for new Exp,Neg,Sqrt elemwise op layers
* AbsQuantize test removed pending future commit
* Serialization support added

!android-nn-driver:2550

Change-Id: Ic595c645925e17b45db568187fd05646daf2e87f
Signed-off-by: josh minor <josh.minor@arm.com>
4 years agoIVGCVSW-4268 Print all Descriptors on dot graph
Teresa Charlin [Thu, 23 Jan 2020 11:44:24 +0000 (11:44 +0000)]
IVGCVSW-4268 Print all Descriptors on dot graph

Change-Id: I82a7dcffc3771efa8350e2e1e22cfb20969551f9
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
4 years agoAdd check to NetworkSockets.cpp to fix failing Android build
David Monahan [Wed, 22 Jan 2020 15:40:34 +0000 (15:40 +0000)]
Add check to NetworkSockets.cpp to fix failing Android build

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: Ieaa91fae464047c6eeff557b4e01dac09653473d

4 years agoAdd thin abstraction layer for processes and filesystem
Rob Hughes [Tue, 7 Jan 2020 17:05:24 +0000 (17:05 +0000)]
Add thin abstraction layer for processes and filesystem

This is used instead of some hardcoded Unix calls and means this code
now works on Windows

(This is a rework of a previous patch which used boost, now that I have
been informed that we are trying to move towards removing boost).

Change-Id: Ib0d11055279bbd7b710f086e9890369e3ecbfe9a
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoAdd thin abstraction layer for network sockets
Rob Hughes [Mon, 13 Jan 2020 11:14:59 +0000 (11:14 +0000)]
Add thin abstraction layer for network sockets

This makes SocketProfilingConnection and GatordMock work on Windows as
well as Linux

Change-Id: I4b10c079b653a1c3f61eb20694e5b5f8a6f5fdfb
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoIVGCVSW-4364 Only apply deprecated attribute where available
Derek Lamberti [Tue, 21 Jan 2020 13:43:21 +0000 (13:43 +0000)]
IVGCVSW-4364 Only apply deprecated attribute where available

Change-Id: Ifde03ea6d9057db0949acad95560be8852c05f73
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4239 Remove dynamic link to libOpenCL.so
Francis Murtagh [Fri, 17 Jan 2020 11:18:01 +0000 (11:18 +0000)]
IVGCVSW-4239 Remove dynamic link to libOpenCL.so

 * Instead rely on ACL's dlopen() to dynamically load the libraries

Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Change-Id: I2b451c1c382f3baf51665da9add8f2415353849a
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
4 years agoIVGCVSW-4331 Calling RemoveDebugLayers can break connections
Mike Kelly [Mon, 20 Jan 2020 17:18:18 +0000 (17:18 +0000)]
IVGCVSW-4331 Calling RemoveDebugLayers can break connections

 * Changed RemoveDebugLayers to move all connections from its OutputSlot.

Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I3c649e3f660804ca48f3c2af993a5af6a7ed4d4a

4 years agoRemove inclusion of ArmNN.hpp where it is unnecessary.
Matthew Bentham [Mon, 20 Jan 2020 16:16:06 +0000 (16:16 +0000)]
Remove inclusion of ArmNN.hpp where it is unnecessary.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: Idb583f8de4470eefb47c90189cd3c90e74e0440a

4 years agoRemove use of ArmNN.hpp where it is unnecessary.
Matthew Bentham [Mon, 20 Jan 2020 10:09:09 +0000 (10:09 +0000)]
Remove use of ArmNN.hpp where it is unnecessary.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: I6c90eab1c6bad76d5c7b3bf094998fa4b454bcd1

4 years agoRemove use of ArmNN.hpp from other public headers
Matthew Bentham [Fri, 17 Jan 2020 11:47:42 +0000 (11:47 +0000)]
Remove use of ArmNN.hpp from other public headers

Also remove it from armnnSerializer and armnnUtils.

In general code within Arm NN should only include exactly what it needs.
This will help keep compile times down, and reduces the need for a
complete rebuild when anything in the public headers changes.

ArmNN.hpp should only be provided as a convenience for user code where the
user doesn't know enough of the API to decide which specific headers
they need.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: I4ffcaa7662af4f88a1babf2bf17d03da6f77d665

4 years agoIVGCVSW-4106 Network not failing when Inference time is greater than threshold time
Nikhil Raj [Mon, 20 Jan 2020 11:50:16 +0000 (11:50 +0000)]
IVGCVSW-4106 Network not failing when Inference time is greater than threshold time

Signed-off-by: Nikhil Raj <nikraj01@e110586.galway.arm.com>
Change-Id: I4e5f96cb3a843a4ae29bad539c0eed42282344a8

4 years agoAdd Signed32 to debug layer
Narumol Prangnawarat [Thu, 9 Jan 2020 10:16:39 +0000 (10:16 +0000)]
Add Signed32 to debug layer

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Iedfc196bfd18e8280e99a06db68df9c15c8ea835

4 years agoGithub #320 Add logging and error checking to SimpleSample
Matthew Bentham [Fri, 17 Jan 2020 09:36:49 +0000 (09:36 +0000)]
Github #320 Add logging and error checking to SimpleSample

These things are frequently asked questions, so I think it makes sense
to add them to the basic sample.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: I17cacb37fbe87e2a8fb14e7b7e85ebc528575386

4 years agoRemove Logging.hpp from ArmNN.hpp
Matthew Bentham [Wed, 15 Jan 2020 17:55:08 +0000 (17:55 +0000)]
Remove Logging.hpp from ArmNN.hpp

Logging.hpp is mainly useful for raising Arm NN log messages. There's
very little point in automatically including it for users of the library
via the ArmNN.hpp convenience header.

Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
Change-Id: I71fb3188dc0b30c1bbc86a31996470c707d38c19

4 years agoRemove use of boost from Logging.hpp
Matthew Bentham [Wed, 15 Jan 2020 17:21:38 +0000 (17:21 +0000)]
Remove use of boost from Logging.hpp

This helps prevent leaking of boost names into Arm NN public headers.

Change-Id: I1605d2ed178965f8e502bc6a4b4ac3e627bbbbed
Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
4 years agoSupport different flatbuffer libs for debug and release
Rob Hughes [Tue, 7 Jan 2020 13:26:42 +0000 (13:26 +0000)]
Support different flatbuffer libs for debug and release

The existing FLATBUFFERS_LIBRARY variable is still honoured, but if
not specified then we use CMake's find_library to find the debug and release
variants, using PATH_SUFFIXES to help separate debug and release.

This is the same approach we use for the armcompute libs.

Change-Id: I21e8da3f76669dbfb8dbdf49046f9db46cba50a2
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoFix typo in name of GatordMock executable :O
Rob Hughes [Fri, 10 Jan 2020 09:15:30 +0000 (09:15 +0000)]
Fix typo in name of GatordMock executable :O

Change-Id: I36cbaa89dd521728835ca1e90da27a5f9b93a89d
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoIVGCVSW-4193 Add QUANTIZE to the TfLite parser
Sadik Armagan [Tue, 10 Dec 2019 16:32:07 +0000 (16:32 +0000)]
IVGCVSW-4193 Add QUANTIZE to the TfLite parser

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I53431c70edb64c9283ae556407cc07e54469d8cc

4 years agoIVGCVSW-4229 Fix Intermittent failures in ExternalProfiling
Finn Williams [Thu, 19 Dec 2019 17:05:18 +0000 (17:05 +0000)]
IVGCVSW-4229 Fix Intermittent failures in ExternalProfiling

 * Added a BufferManager.Reset() method to prevent packets being retained after a test
 * Fixed a bug causing the send thread to wait needlessly before moving to active state
 * Refactored SendCoundPacketTests and ProfilingTests test helper classes
 * Fixed issue where WaitForPacketSent could miss a notification and timeout

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I353a652260c2f7dd465baa9e979e22f50f3ca6a7

4 years agoRename quantized data types to remove ambiguity for signed/unsigned payloads
Derek Lamberti [Fri, 10 Jan 2020 17:14:08 +0000 (17:14 +0000)]
Rename quantized data types to remove ambiguity for signed/unsigned payloads

!android-nn-driver:2572

Change-Id: I8fe52ceb09987b3d05c539409510f535165455cc
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoUpdate commented clframework revision to match SHA of actual pinned ref
Francis Murtagh [Thu, 9 Jan 2020 14:24:11 +0000 (14:24 +0000)]
Update commented clframework revision to match SHA of actual pinned ref

 * Prevent confusion as branches/arm_compute_19_11 had different SHA

Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Change-Id: I9348f444a9c132285977e2768bc6124b10e58e15

4 years agoFix issues due to #include Windows.h
Rob Hughes [Thu, 9 Jan 2020 10:59:34 +0000 (10:59 +0000)]
Fix issues due to #include Windows.h

Change-Id: I9d77b5ad6cd81e87217da0c47788a43834c3ac28
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoFix build error on gcc 7+ for implicit switch statement fallthroughs
Rob Hughes [Thu, 9 Jan 2020 12:46:21 +0000 (12:46 +0000)]
Fix build error on gcc 7+ for implicit switch statement fallthroughs

Change-Id: I48632a42892d8e9a616255fe106e40161b0ee55f
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoIVGCVSW-4246 Enable -Wextra by default
Derek Lamberti [Tue, 10 Dec 2019 22:20:54 +0000 (22:20 +0000)]
IVGCVSW-4246 Enable -Wextra by default

!referencetests:218340

Change-Id: If24a604310d0363b1f09b406e4d53ebfeb106aad
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4246 Clean build of parsers with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 22:00:43 +0000 (22:00 +0000)]
IVGCVSW-4246 Clean build of parsers with -Wextra

Change-Id: Ib00f185b431ab74fd9425d8f478bd2ddb182f74b
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4246 Clean build of profiling with -Wextra Pt2
Derek Lamberti [Thu, 2 Jan 2020 13:50:57 +0000 (13:50 +0000)]
IVGCVSW-4246 Clean build of profiling with -Wextra Pt2

Change-Id: Iae306546e7c009105712f177943ed76451bbe8e7
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4195 Fix MultipleNetworksCifar10 test to load dynamic backend
Narumol Prangnawarat [Thu, 2 Jan 2020 17:46:53 +0000 (17:46 +0000)]
IVGCVSW-4195 Fix MultipleNetworksCifar10 test to load dynamic backend
before checking if requested backends are valid

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I5274d27a50fa10f0c86275140acec7bdc681a24f

4 years agoIVGCVSW-4246 Clean build of backends with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 22:07:09 +0000 (22:07 +0000)]
IVGCVSW-4246 Clean build of backends with -Wextra

Change-Id: I9e8d5576b3ec04c871785d5f2f9545bf1136e59b
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4246 Clean build of ArmNN API with -Wextra
Francis Murtagh [Tue, 31 Dec 2019 12:44:20 +0000 (12:44 +0000)]
IVGCVSW-4246 Clean build of ArmNN API with -Wextra

Change-Id: I6003d2f82ca02d926dd95abee712337783eacfc7
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
4 years agoIVGCVSW-4246 Clean build profiling with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 21:23:23 +0000 (21:23 +0000)]
IVGCVSW-4246 Clean build profiling with -Wextra

Change-Id: Ieab870fa2194075433a0a26abdb13f69e1fbaaae
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4246 Clean build of Visitors with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 22:05:21 +0000 (22:05 +0000)]
IVGCVSW-4246 Clean build of Visitors with -Wextra

Change-Id: Icb1b35ff55fa22103777853e6f49fc282d61750d
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4246 Clean build Layers with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 21:12:59 +0000 (21:12 +0000)]
IVGCVSW-4246 Clean build Layers with -Wextra

Change-Id: I649cd2304fb0040164763d31a12fc77c6c3bed87
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoReplace Schema.s with generated .cpp file
Rob Hughes [Fri, 20 Dec 2019 17:43:16 +0000 (17:43 +0000)]
Replace Schema.s with generated .cpp file

This removes the dependency on an assembler (which must support .incbin).
Instead we use xxd as a custom build command to generate a .cpp file
which is included in the build.

This makes it possible to build on Windows, for which you need
cp.exe (from GNU Core Utils) and xxd.exe (from Vim).

Change-Id: I3a929640b1fdbfc27e2c38abd05bf3a298245ba5
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoSome build fixes for MSVC
Rob Hughes [Mon, 16 Dec 2019 17:10:51 +0000 (17:10 +0000)]
Some build fixes for MSVC

Change-Id: I749430918b1268786690c3c8dc9fa2a9542d5d1d
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
4 years agoIVGCVSW-4246 Clean build optimizations with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 21:42:57 +0000 (21:42 +0000)]
IVGCVSW-4246 Clean build optimizations with -Wextra

Change-Id: I2e0884c66855071eb3aa72b86de06c6ed6389d50
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4246 Clean build end-to-end tests with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 21:20:10 +0000 (21:20 +0000)]
IVGCVSW-4246 Clean build end-to-end tests with -Wextra

Change-Id: Ia25f919e45a210e1e2d5d50b0c9098bf01d88013
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoFix compilation error when building for Linux (non Android)
Ayan Halder [Wed, 25 Dec 2019 23:27:12 +0000 (23:27 +0000)]
Fix compilation error when building for Linux (non Android)

When building for Linux, 'boost::ignore_unused()' should be used to suppress
the following error :-
error: unused parameter 's' [-Werror=unused-parameter]

Change-Id: I9ecfe93c75ee4117eb6d2e1e75442179cee9fec9

4 years agoIVGCVSW-4214 Add README for standalone dynamic backend developer guide
Narumol Prangnawarat [Thu, 12 Dec 2019 15:10:38 +0000 (15:10 +0000)]
IVGCVSW-4214 Add README for standalone dynamic backend developer guide

 * Add README of an example how to build standalone dynamic backends
 * Change the links to public API for backends

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I32ee15ba1b9ea3a6317ae184de8d28bb31eb5d9d

4 years agoIVGCVSW-4295 Disable mixed precision in ClPooling2dWorkload
janeil01 [Wed, 18 Dec 2019 11:52:20 +0000 (11:52 +0000)]
IVGCVSW-4295 Disable mixed precision in ClPooling2dWorkload

* google provided a patch so mixed precision can be removed

!devenv:217181

Signed-off-by: janeil01 <jan.eilers@arm.com>
Change-Id: I13630f465e51c629a85ca4e1ac504feeeec39aaa

4 years agoIVGCVSW-4237 Solve build dependencies to allow isolated build on sbuild
Francis Murtagh [Thu, 19 Dec 2019 11:35:55 +0000 (11:35 +0000)]
IVGCVSW-4237 Solve build dependencies to allow isolated build on sbuild

 * Remove FindBoost search for libboost-log which caused unnecessary dependency.

Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Change-Id: I58e30ca8ca76106ef08ddc782c462e96ddb211cf

4 years agoIVGCVSW-4302 Depthwise CTS. Fix ReorderWeightChannelsForAcl.
Teresa Charlin [Wed, 18 Dec 2019 22:10:47 +0000 (22:10 +0000)]
IVGCVSW-4302  Depthwise CTS. Fix ReorderWeightChannelsForAcl.

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I8d2050f4478fe9d9cdf9e374b8906827cc769689

4 years agoIVGCVSW-4246 Clean build of LayerTests with -Wextra
Derek Lamberti [Tue, 10 Dec 2019 21:57:35 +0000 (21:57 +0000)]
IVGCVSW-4246 Clean build of LayerTests with -Wextra

Change-Id: If3d98e45a6e2fa8e1afd19a4052334335feacf63
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4293 Fix multiple Concat issues.
Derek Lamberti [Tue, 17 Dec 2019 09:25:19 +0000 (09:25 +0000)]
IVGCVSW-4293 Fix multiple Concat issues.

* Fix issue with InputLayer or ConstantLayer being used as inputs to Concat.
* Fix issue with same input being used multiple times for same Concat.
* Fix issue where input is used by multiple concats.

Change-Id: Id4819aeec5a40e2afa0351838ba082b9f74aba33
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4261 Add backward compatibility to the Backend API
Narumol Prangnawarat [Thu, 12 Dec 2019 12:05:43 +0000 (12:05 +0000)]
IVGCVSW-4261 Add backward compatibility to the Backend API

 * Redirect the backendsCommon headers to the new headers
   in armnn/backends

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I53424a16b378e50a20cf1e3f7f8e9ea477fed52f

4 years agoIVGCVSW-4178 Add code to increment the 3 ArmNN counters
Keith Davis [Mon, 2 Dec 2019 15:12:19 +0000 (15:12 +0000)]
IVGCVSW-4178 Add code to increment the 3 ArmNN counters

 * Increment at Runtime.cpp | BackendRegistry.cpp | LoadedNetwork.cpp
 * Update unit tests
 * UID generation is now handled by backends

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: Ifa53763409078c14839675206d8b260cdc36a8df

4 years agoIVGCVSW-4212 Example of standalone dynamic reference backend
Narumol Prangnawarat [Mon, 9 Dec 2019 17:24:41 +0000 (17:24 +0000)]
IVGCVSW-4212 Example of standalone dynamic reference backend

 * Add example to build dynamic reference backend
 * Add functions to clear dynamic backends
 * Fix the error when dynamic backend is not deregistered
 * Add DYARMNN_DYNAMIC_BACKEND_ENABLED to check disable empty
   dynamic backend when dynamic backend is enabled

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I1ef3a3f10ed6ca5ec18d0af04b007fc3bc71a3cb

4 years agoIVGCVSW-4191 Add DEQUANTIZE to the TfLite Parser
Finn Williams [Fri, 6 Dec 2019 09:55:55 +0000 (09:55 +0000)]
IVGCVSW-4191 Add DEQUANTIZE to the TfLite Parser

!armnn:2421

Change-Id: Icdb02b7248ed408c3c8ad2e3e38df5b7cda1c545
Signed-off-by: Finn Williams <Finn.Williams@arm.com>
4 years agoIVGCVSW-4157 Pass custom options directly to backends
Derek Lamberti [Wed, 20 Nov 2019 10:51:57 +0000 (10:51 +0000)]
IVGCVSW-4157 Pass custom options directly to backends

Change-Id: I98cfb913dbd00cb94bdb5dbe82753ca147f7f671
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4211 Add Signed 8 bit Quantisation support into the Reference backend
Finn Williams [Wed, 4 Dec 2019 14:27:27 +0000 (14:27 +0000)]
IVGCVSW-4211 Add Signed 8 bit Quantisation support into the Reference backend

!android-nn-driver:2435

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I10ecd4a8937725953396805f33a3562a5384c4d4

4 years agoIVGCVSW-4227 Add CpuAcc backend support for DetectionPostProcess
Derek Lamberti [Thu, 5 Dec 2019 14:41:20 +0000 (14:41 +0000)]
IVGCVSW-4227 Add CpuAcc backend support for DetectionPostProcess

Change-Id: I318bf92b8d1db593d9c30b9b4412bfecbe65bc12
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
4 years agoIVGCVSW-4210 Create a public API for the common backend files
Matteo Martincigh [Thu, 28 Nov 2019 15:45:42 +0000 (15:45 +0000)]
IVGCVSW-4210 Create a public API for the common backend files

 * Create a public API for the common backend files
 * Move OutputHandler to armnn internal
 * Remove unused headers

Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I3e86d908b021e3561befa9d45158d87d2cbb18c0