From 50de4fa4e7e0dd02a442ba350a1b40f293cb5a01 Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Mon, 31 May 2021 18:47:33 +0100 Subject: IVGCVSW-6088 Add Sin and Log to ElementWiseUnary * Ref workload * Cl workload * Neon workload * Serializer * Deserializer * Remove boost include from TensorTest.cpp Signed-off-by: Teresa Charlin Change-Id: I498548169cc77609c55cf3105f1de5a7429772cf --- src/armnnSerializer/test/SerializerTests.cpp | 105 ++++++++++++--------------- 1 file changed, 46 insertions(+), 59 deletions(-) (limited to 'src/armnnSerializer/test') diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp index 4cb1a81b1a..8e7ca37cfa 100644 --- a/src/armnnSerializer/test/SerializerTests.cpp +++ b/src/armnnSerializer/test/SerializerTests.cpp @@ -23,31 +23,6 @@ using armnnDeserializer::IDeserializer; TEST_SUITE("SerializerTests") { -TEST_CASE("SerializeAbs") -{ - const std::string layerName("abs"); - const armnn::TensorInfo tensorInfo({1, 2, 3}, armnn::DataType::Float32); - - armnn::INetworkPtr network = armnn::INetwork::Create(); - armnn::IConnectableLayer* const inputLayer = network->AddInputLayer(0); - - ARMNN_NO_DEPRECATE_WARN_BEGIN - armnn::IConnectableLayer* const absLayer = network->AddAbsLayer(layerName.c_str()); - ARMNN_NO_DEPRECATE_WARN_END - armnn::IConnectableLayer* const outputLayer = network->AddOutputLayer(0); - - inputLayer->GetOutputSlot(0).Connect(absLayer->GetInputSlot(0)); - absLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0)); - - inputLayer->GetOutputSlot(0).SetTensorInfo(tensorInfo); - absLayer->GetOutputSlot(0).SetTensorInfo(tensorInfo); - - armnn::INetworkPtr deserializedNetwork = DeserializeNetwork(SerializeNetwork(*network)); - CHECK(deserializedNetwork); - - LayerVerifierBase verifier(layerName, {tensorInfo}, {tensorInfo}); - deserializedNetwork->ExecuteStrategy(verifier); -} TEST_CASE("SerializeAddition") { @@ -719,6 +694,51 @@ TEST_CASE("SerializeDeserializeEqual") deserializedNetwork->ExecuteStrategy(verifier); } +void SerializeElementwiseUnaryTest(armnn::UnaryOperation unaryOperation) +{ + auto layerName = GetUnaryOperationAsCString(unaryOperation); + + const armnn::TensorShape shape{2, 1, 2, 2}; + + const armnn::TensorInfo inputInfo = armnn::TensorInfo(shape, armnn::DataType::Float32); + const armnn::TensorInfo outputInfo = armnn::TensorInfo(shape, armnn::DataType::Float32); + + armnn::ElementwiseUnaryDescriptor descriptor(unaryOperation); + + armnn::INetworkPtr network = armnn::INetwork::Create(); + armnn::IConnectableLayer* const inputLayer = network->AddInputLayer(0); + armnn::IConnectableLayer* const elementwiseUnaryLayer = + network->AddElementwiseUnaryLayer(descriptor, layerName); + armnn::IConnectableLayer* const outputLayer = network->AddOutputLayer(0); + + inputLayer->GetOutputSlot(0).Connect(elementwiseUnaryLayer->GetInputSlot(0)); + elementwiseUnaryLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0)); + + inputLayer->GetOutputSlot(0).SetTensorInfo(inputInfo); + elementwiseUnaryLayer->GetOutputSlot(0).SetTensorInfo(outputInfo); + + armnn::INetworkPtr deserializedNetwork = DeserializeNetwork(SerializeNetwork(*network)); + + CHECK(deserializedNetwork); + + LayerVerifierBaseWithDescriptor + verifier(layerName, { inputInfo }, { outputInfo }, descriptor); + + deserializedNetwork->ExecuteStrategy(verifier); +} + +TEST_CASE("SerializeElementwiseUnary") +{ + using op = armnn::UnaryOperation; + std::initializer_list allUnaryOperations = {op::Abs, op::Exp, op::Sqrt, op::Rsqrt, op::Neg, + op::LogicalNot, op::Log, op::Sin}; + + for (auto unaryOperation : allUnaryOperations) + { + SerializeElementwiseUnaryTest(unaryOperation); + } +} + TEST_CASE("SerializeFill") { const std::string layerName("fill"); @@ -1114,39 +1134,6 @@ TEST_CASE("SerializeLogicalBinary") deserializedNetwork->ExecuteStrategy(verifier); } -TEST_CASE("SerializeLogicalUnary") -{ - const std::string layerName("elementwiseUnaryLogicalNot"); - - const armnn::TensorShape shape{2, 1, 2, 2}; - - const armnn::TensorInfo inputInfo = armnn::TensorInfo(shape, armnn::DataType::Boolean); - const armnn::TensorInfo outputInfo = armnn::TensorInfo(shape, armnn::DataType::Boolean); - - armnn::ElementwiseUnaryDescriptor descriptor(armnn::UnaryOperation::LogicalNot); - - armnn::INetworkPtr network = armnn::INetwork::Create(); - armnn::IConnectableLayer* const inputLayer = network->AddInputLayer(0); - armnn::IConnectableLayer* const elementwiseUnaryLayer = - network->AddElementwiseUnaryLayer(descriptor, layerName.c_str()); - armnn::IConnectableLayer* const outputLayer = network->AddOutputLayer(0); - - inputLayer->GetOutputSlot(0).Connect(elementwiseUnaryLayer->GetInputSlot(0)); - elementwiseUnaryLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0)); - - inputLayer->GetOutputSlot(0).SetTensorInfo(inputInfo); - elementwiseUnaryLayer->GetOutputSlot(0).SetTensorInfo(outputInfo); - - armnn::INetworkPtr deserializedNetwork = DeserializeNetwork(SerializeNetwork(*network)); - - CHECK(deserializedNetwork); - - LayerVerifierBaseWithDescriptor verifier( - layerName, { inputInfo }, { outputInfo }, descriptor); - - deserializedNetwork->ExecuteStrategy(verifier); -} - TEST_CASE("SerializeLogSoftmax") { const std::string layerName("log_softmax"); @@ -2462,4 +2449,4 @@ TEST_CASE("SerializeDeserializeNonLinearNetwork") deserializedNetwork->ExecuteStrategy(verifier); } -} +} \ No newline at end of file -- cgit v1.2.1