diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2020-07-27 15:52:13 +0100 |
---|---|---|
committer | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2020-07-27 15:52:13 +0100 |
commit | 1a26896fd8d48205393ba0f22db864b5302b703f (patch) | |
tree | f5bdc6414951f10c88b6375cec694685b0682c8c /src/backends/neon/test/NeonTensorHandleTests.cpp | |
parent | 11c4efc983cacfae6b1442d18a1744e114a82e64 (diff) | |
download | armnn-1a26896fd8d48205393ba0f22db864b5302b703f.tar.gz |
IVGCVSW-5011 Implement GetCapabilities in NeonTensorHandleFactory
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I43591ec1250c1d84d286de85956a86eb5e2abc2a
Diffstat (limited to 'src/backends/neon/test/NeonTensorHandleTests.cpp')
-rw-r--r-- | src/backends/neon/test/NeonTensorHandleTests.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/backends/neon/test/NeonTensorHandleTests.cpp b/src/backends/neon/test/NeonTensorHandleTests.cpp new file mode 100644 index 0000000000..fe5e8f9fb3 --- /dev/null +++ b/src/backends/neon/test/NeonTensorHandleTests.cpp @@ -0,0 +1,80 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#include <neon/NeonTensorHandle.hpp> +#include <neon/NeonTensorHandleFactory.hpp> + +#include <boost/test/unit_test.hpp> + +BOOST_AUTO_TEST_SUITE(NeonTensorHandleTests) +using namespace armnn; + +BOOST_AUTO_TEST_CASE(NeonTensorHandleGetCapabilitiesNoPadding) +{ + std::shared_ptr<NeonMemoryManager> memoryManager = std::make_shared<NeonMemoryManager>(); + NeonTensorHandleFactory handleFactory(memoryManager); + + INetworkPtr network(INetwork::Create()); + + // Add the layers + IConnectableLayer* input = network->AddInputLayer(0); + SoftmaxDescriptor descriptor; + descriptor.m_Beta = 1.0f; + IConnectableLayer* softmax = network->AddSoftmaxLayer(descriptor); + IConnectableLayer* output = network->AddOutputLayer(2); + + // Establish connections + input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0)); + softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0)); + + // No padding required for input + std::vector<Capability> capabilities = handleFactory.GetCapabilities(input, + softmax, + CapabilityClass::PaddingRequired); + BOOST_TEST(capabilities.empty()); + + // No padding required for Softmax + capabilities = handleFactory.GetCapabilities(softmax, output, CapabilityClass::PaddingRequired); + BOOST_TEST(capabilities.empty()); + + // No padding required for output + capabilities = handleFactory.GetCapabilities(output, nullptr, CapabilityClass::PaddingRequired); + BOOST_TEST(capabilities.empty()); +} + +BOOST_AUTO_TEST_CASE(NeonTensorHandleGetCapabilitiesPadding) +{ + std::shared_ptr<NeonMemoryManager> memoryManager = std::make_shared<NeonMemoryManager>(); + NeonTensorHandleFactory handleFactory(memoryManager); + + INetworkPtr network(INetwork::Create()); + + // Add the layers + IConnectableLayer* input = network->AddInputLayer(0); + Pooling2dDescriptor descriptor; + IConnectableLayer* pooling = network->AddPooling2dLayer(descriptor); + IConnectableLayer* output = network->AddOutputLayer(2); + + // Establish connections + input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0)); + pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0)); + + // No padding required for input + std::vector<Capability> capabilities = handleFactory.GetCapabilities(input, + pooling, + CapabilityClass::PaddingRequired); + BOOST_TEST(capabilities.empty()); + + // No padding required for output + capabilities = handleFactory.GetCapabilities(output, nullptr, CapabilityClass::PaddingRequired); + BOOST_TEST(capabilities.empty()); + + // Padding required for Pooling2d + capabilities = handleFactory.GetCapabilities(pooling, output, CapabilityClass::PaddingRequired); + BOOST_TEST(capabilities.size() == 1); + BOOST_TEST((capabilities[0].m_CapabilityClass == CapabilityClass::PaddingRequired)); + BOOST_TEST(capabilities[0].m_Value); +} + +BOOST_AUTO_TEST_SUITE_END() |