aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/test/CreateWorkload.hpp
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2020-09-22 14:35:19 +0100
committerSadik Armagan <sadik.armagan@arm.com>2020-09-22 16:21:40 +0000
commit283a8b4aeaebf27c7f14e0c9c4cbfaf06a577cf5 (patch)
tree15867a066249115b309a0969ff73cf6de75957a4 /src/armnn/test/CreateWorkload.hpp
parenta2364ed649290f74e0608d0208c4746664b0abbc (diff)
downloadarmnn-283a8b4aeaebf27c7f14e0c9c4cbfaf06a577cf5.tar.gz
IVGCVSW-5318 'Create a Neon/CL Workload Unit Test fast_math option enabled'
* Unit test implemented to make sure it returns WINOGRAD * Updated the enable-fast-math option in ExecuteNetwork to be consistent Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: Id64f114ae47966def69a9eef0770a4251ee56a41
Diffstat (limited to 'src/armnn/test/CreateWorkload.hpp')
-rw-r--r--src/armnn/test/CreateWorkload.hpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/armnn/test/CreateWorkload.hpp b/src/armnn/test/CreateWorkload.hpp
index 3f3cdc3986..60beb51c32 100644
--- a/src/armnn/test/CreateWorkload.hpp
+++ b/src/armnn/test/CreateWorkload.hpp
@@ -279,6 +279,64 @@ std::unique_ptr<Convolution2dWorkload> CreateConvolution2dWorkloadTest(armnn::IW
return workload;
}
+template <typename Convolution2dWorkload, armnn::DataType DataType>
+std::unique_ptr<Convolution2dWorkload> CreateConvolution2dWorkloadFastMathTest(armnn::IWorkloadFactory& factory,
+ armnn::Graph& graph,
+ DataLayout dataLayout = DataLayout::NCHW,
+ const ModelOptions& modelOptions = {})
+{
+ // Creates the layer we're testing.
+ Convolution2dDescriptor layerDesc;
+ layerDesc.m_PadLeft = 0;
+ layerDesc.m_PadRight = 0;
+ layerDesc.m_PadTop = 0;
+ layerDesc.m_PadBottom = 0;
+ layerDesc.m_StrideX = 1;
+ layerDesc.m_StrideY = 1;
+ layerDesc.m_BiasEnabled = false;
+ layerDesc.m_DataLayout = dataLayout;
+
+ Convolution2dLayer* const layer = graph.AddLayer<Convolution2dLayer>(layerDesc, "layer");
+
+ TensorShape weightShape = TensorShape{32, 32, 3, 3};
+ TensorShape inputShape = TensorShape{1, 32, 149, 149};
+ TensorShape outputShape = TensorShape{1, 32, 147, 147};
+
+ layer->m_Weight = std::make_unique<ScopedCpuTensorHandle>(TensorInfo(weightShape, DataType));
+ layer->m_Bias = std::make_unique<ScopedCpuTensorHandle>(TensorInfo({2}, GetBiasDataType(DataType)));
+
+ layer->m_Weight->Allocate();
+ layer->m_Bias->Allocate();
+
+ // Creates extra layers.
+ Layer* const input = graph.AddLayer<InputLayer>(0, "input");
+ Layer* const output = graph.AddLayer<OutputLayer>(0, "output");
+
+ // Connects up.
+ Connect(input, layer, TensorInfo(inputShape, DataType));
+ Connect(layer, output, TensorInfo(outputShape, DataType));
+ CreateTensorHandles(graph, factory);
+
+ // Makes the workload and checks it.
+ auto workload = MakeAndCheckWorkload<Convolution2dWorkload>(*layer, factory, modelOptions);
+
+ Convolution2dQueueDescriptor queueDescriptor = workload->GetData();
+ BOOST_TEST(queueDescriptor.m_Parameters.m_StrideX == 1);
+ BOOST_TEST(queueDescriptor.m_Parameters.m_StrideY == 1);
+ BOOST_TEST(queueDescriptor.m_Parameters.m_PadLeft == 0);
+ BOOST_TEST(queueDescriptor.m_Parameters.m_PadRight == 0);
+ BOOST_TEST(queueDescriptor.m_Parameters.m_PadTop == 0);
+ BOOST_TEST(queueDescriptor.m_Parameters.m_PadBottom == 0);
+ BOOST_TEST((queueDescriptor.m_Parameters.m_DataLayout == dataLayout));
+
+ BOOST_TEST(queueDescriptor.m_Inputs.size() == 1);
+ BOOST_TEST(queueDescriptor.m_Outputs.size() == 1);
+ BOOST_TEST((queueDescriptor.m_Weight->GetTensorInfo() == TensorInfo(weightShape, DataType)));
+
+ // Returns so we can do extra, backend-specific tests.
+ return workload;
+}
+
template <typename LstmWorkload>
std::unique_ptr<LstmWorkload> CreateLstmWorkloadTest(armnn::IWorkloadFactory& factory, armnn::Graph& graph)
{