From 20e58806b94636f579c5e8b0ca91ab771b6310e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89anna=20=C3=93=20Cath=C3=A1in?= Date: Tue, 4 Dec 2018 10:29:06 +0000 Subject: IVGCVSW-2247 Adding a min Elementwise Workload and tests Change-Id: I017ca6c23b62a8978982de0ca4ad204cb8cf7c67 --- src/backends/reference/test/RefEndToEndTests.cpp | 66 ++++++++++++++++++++++++ src/backends/reference/test/RefLayerTests.cpp | 7 ++- 2 files changed, 72 insertions(+), 1 deletion(-) (limited to 'src/backends/reference/test') diff --git a/src/backends/reference/test/RefEndToEndTests.cpp b/src/backends/reference/test/RefEndToEndTests.cpp index 97bec51645..8ad6f5a4d1 100644 --- a/src/backends/reference/test/RefEndToEndTests.cpp +++ b/src/backends/reference/test/RefEndToEndTests.cpp @@ -7,6 +7,7 @@ #include #include +#include BOOST_AUTO_TEST_SUITE(RefEndToEnd) @@ -246,6 +247,71 @@ BOOST_AUTO_TEST_CASE(MultipleOutputs) BOOST_TEST(output3Data == std::vector({ 3.f, 5.f, 2.f, 3.f, 5.f, 2.f, 2.f, 2.f, 3.f, 3.f })); // [2, 5] } +BOOST_AUTO_TEST_CASE(TrivialMin) +{ + using namespace armnn; + + // Create runtime in which test will run + armnn::IRuntime::CreationOptions options; + armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options)); + + // Builds up the structure of the network. + armnn::INetworkPtr net(INetwork::Create()); + + IConnectableLayer* input1 = net->AddInputLayer(0); + IConnectableLayer* input2 = net->AddInputLayer(1); + IConnectableLayer* min = net->AddMinimumLayer(); + IConnectableLayer* output = net->AddOutputLayer(0); + + input1->GetOutputSlot(0).Connect(min->GetInputSlot(0)); + input2->GetOutputSlot(0).Connect(min->GetInputSlot(1)); + min->GetOutputSlot(0).Connect(output->GetInputSlot(0)); + + // Sets the tensors in the network. + TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32); + input1->GetOutputSlot(0).SetTensorInfo(tensorInfo); + input2->GetOutputSlot(0).SetTensorInfo(tensorInfo); + min->GetOutputSlot(0).SetTensorInfo(tensorInfo); + + // optimize the network + IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec()); + + // Loads it into the runtime. + NetworkId netId; + runtime->LoadNetwork(netId, std::move(optNet)); + + // Creates structures for input & output - matching android nn test. + std::vector input1Data + { + 1.0f, 2.0f, 3.0f, 4.0f + }; + std::vector input2Data + { + 2.0f, 1.0f, 5.0f, 2.0f + }; + std::vector outputData(4); + + InputTensors inputTensors + { + {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())}, + {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())} + }; + OutputTensors outputTensors + { + {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())} + }; + + // Does the inference. + runtime->EnqueueWorkload(netId, inputTensors, outputTensors); + + // Checks the results + BOOST_TEST(outputData[0] == 1); + BOOST_TEST(outputData[1] == 1); + BOOST_TEST(outputData[2] == 3); + BOOST_TEST(outputData[3] == 2); +} + + BOOST_AUTO_TEST_CASE(RefMergerEndToEndDim0Test) { MergerDim0EndToEnd(defaultBackends); diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp index 54ec697ec2..fa4af96c46 100644 --- a/src/backends/reference/test/RefLayerTests.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -233,7 +233,7 @@ ARMNN_AUTO_TEST_CASE(DivisionUint8, DivisionUint8Test) ARMNN_AUTO_TEST_CASE(DivisionUint8Broadcast1Element, DivisionBroadcast1ElementUint8Test) ARMNN_AUTO_TEST_CASE(DivisionUint8Broadcast1DVector, DivisionBroadcast1DVectorUint8Test) -//Max +// Max ARMNN_AUTO_TEST_CASE(SimpleMaximum, MaximumSimpleTest) ARMNN_AUTO_TEST_CASE(MaximumBroadcast1Element, MaximumBroadcast1ElementTest) ARMNN_AUTO_TEST_CASE(MaximumBroadcast1DVector, MaximumBroadcast1DVectorTest) @@ -241,6 +241,11 @@ ARMNN_AUTO_TEST_CASE(MaximumUint8, MaximumUint8Test) ARMNN_AUTO_TEST_CASE(MaximumBroadcast1ElementUint8, MaximumBroadcast1ElementUint8Test) ARMNN_AUTO_TEST_CASE(MaximumBroadcast1DVectorUint8, MaximumBroadcast1DVectorUint8Test) +// Min +ARMNN_AUTO_TEST_CASE(SimpleMinimum1, MinimumBroadcast1ElementTest1) +ARMNN_AUTO_TEST_CASE(SimpleMinimum2, MinimumBroadcast1ElementTest2) +ARMNN_AUTO_TEST_CASE(Minimum1DVectorUint8, MinimumBroadcast1DVectorUint8Test) + // Mul ARMNN_AUTO_TEST_CASE(SimpleMultiplication, MultiplicationTest) ARMNN_AUTO_TEST_CASE(MultiplicationBroadcast1Element, MultiplicationBroadcast1ElementTest) -- cgit v1.2.1