From b4b3ac91990eb5deaffca2300319f2ddf7aa0886 Mon Sep 17 00:00:00 2001 From: Kevin May Date: Fri, 21 May 2021 16:42:21 +0100 Subject: IVGCVSW-6009 Integrate threadpool into ExNet * Remove concurrent flag from ExecuteNetwork as it is possible to deduce if SimultaneousIterations > 1 * Add void RunAsync() * Refactor some unit tests Change-Id: I7021d4821b0e460470908294cbd9462850e8b361 Signed-off-by: Keith Davis Signed-off-by: Kevin May --- .../test/StridedSliceAsyncEndToEndTest.hpp | 109 ++------------------- 1 file changed, 9 insertions(+), 100 deletions(-) (limited to 'src/backends/backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp') diff --git a/src/backends/backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp b/src/backends/backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp index 87cade7dca..0ad6bc4964 100644 --- a/src/backends/backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp +++ b/src/backends/backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp @@ -123,7 +123,7 @@ void AsyncEndToEndTestImpl(INetworkPtr network, const std::map>& expectedOutputData, std::vector backends, float tolerance = 0.000001f, - size_t numThreads = 0) + size_t numThreads = 1) { // Create Runtime in which test will run IRuntime::CreationOptions options; @@ -161,7 +161,7 @@ void AsyncEndToEndTestImpl(INetworkPtr network, outputStorage.at(it.first).data())}); } - if (numThreads == 0) + if (numThreads <= 1) { // Create WorkingMemHandle for this async network std::unique_ptr workingMemHandle = runtime->CreateWorkingMemHandle(networkId); @@ -254,7 +254,7 @@ INetworkPtr CreateStridedSliceNetwork(const TensorShape& inputShape, } template -void StridedSlicedEndToEndTest(const std::vector& backends) +void StridedSlicedEndToEndTest(const std::vector& backends, size_t numThreads) { using namespace armnn; using T = ResolveType; @@ -300,103 +300,12 @@ void StridedSlicedEndToEndTest(const std::vector& backends) std::map> inputTensorData = {{0, inputData}}; std::map> expectedOutputData = {{0, outputExpected}}; - AsyncEndToEndTestImpl(move(net), inputTensorData, expectedOutputData, backends, 0.000001f); -} - -template -void AsyncScheduledStridedSlicedEndToEndTest(const std::vector& backends) -{ - using namespace armnn; - using T = ResolveType; - - const TensorShape& inputShape = {3, 2, 3, 1}; - const TensorShape& outputShape = {1, 2, 3, 1}; - const std::vector& beginData = {1, 0, 0, 0}; - const std::vector& endData = {2, 2, 3, 1}; - const std::vector& stridesData = {1, 1, 1, 1}; - int beginMask = 0; - int endMask = 0; - int shrinkAxisMask = 0; - int ellipsisMask = 0; - int newAxisMask = 0; - - // Builds up the structure of the network - INetworkPtr net = CreateStridedSliceNetwork(inputShape, - outputShape, - beginData, - endData, - stridesData, - beginMask, - endMask, - shrinkAxisMask, - ellipsisMask, - newAxisMask); - - // Creates structures for input & output. - std::vector inputData{ - 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f, - - 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f, - - 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f - }; - - std::vector outputExpected{ - 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f - }; - - std::map> inputTensorData = {{0, inputData}}; - std::map> expectedOutputData = {{0, outputExpected}}; - - AsyncEndToEndTestImpl(move(net), inputTensorData, expectedOutputData, backends, 0.000001f, 1); -} - -template -void AsyncScheduledStridedSlicedMultiThreadedEndToEndTest(const std::vector& backends) -{ - using namespace armnn; - using T = ResolveType; - - const TensorShape& inputShape = {3, 2, 3, 1}; - const TensorShape& outputShape = {1, 2, 3, 1}; - const std::vector& beginData = {1, 0, 0, 0}; - const std::vector& endData = {2, 2, 3, 1}; - const std::vector& stridesData = {1, 1, 1, 1}; - int beginMask = 0; - int endMask = 0; - int shrinkAxisMask = 0; - int ellipsisMask = 0; - int newAxisMask = 0; - - // Builds up the structure of the network - INetworkPtr net = CreateStridedSliceNetwork(inputShape, - outputShape, - beginData, - endData, - stridesData, - beginMask, - endMask, - shrinkAxisMask, - ellipsisMask, - newAxisMask); - - // Creates structures for input & output. - std::vector inputData{ - 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f, - - 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f, - - 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f - }; - - std::vector outputExpected{ - 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f - }; - - std::map> inputTensorData = {{0, inputData}}; - std::map> expectedOutputData = {{0, outputExpected}}; - - AsyncEndToEndTestImpl(move(net), inputTensorData, expectedOutputData, backends, 0.000001f, 3); + AsyncEndToEndTestImpl(move(net), + inputTensorData, + expectedOutputData, + backends, + 0.000001f, + numThreads); } template -- cgit v1.2.1