aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2020-07-22 12:46:51 +0100
committerTeresaARM <teresa.charlinreyes@arm.com>2020-07-23 21:17:37 +0000
commitd6568772be726acd7dc2fc3e592f101c77d690a6 (patch)
treeb385a4f1231c9cd15f61b93e83779b484593ccf6
parent5b4d0d5070cee848901333e32cde7df2badf5d44 (diff)
downloadarmnn-d6568772be726acd7dc2fc3e592f101c77d690a6.tar.gz
IVGCVSW-5010 Add GetCapabilities to ITensorHandleFactory
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: Ie8acb9c729af4f95488aecf795f45ff12364f9ca
-rw-r--r--include/armnn/backends/ITensorHandleFactory.hpp33
-rw-r--r--src/backends/reference/test/RefTensorHandleTests.cpp17
2 files changed, 50 insertions, 0 deletions
diff --git a/include/armnn/backends/ITensorHandleFactory.hpp b/include/armnn/backends/ITensorHandleFactory.hpp
index cd094d2783..9d8f0cdda7 100644
--- a/include/armnn/backends/ITensorHandleFactory.hpp
+++ b/include/armnn/backends/ITensorHandleFactory.hpp
@@ -15,6 +15,29 @@
namespace armnn
{
+/// Capability class to calculate in the GetCapabilities function
+/// so that only the capability in the scope can be choose to calculate
+enum class CapabilityClass
+{
+ PaddingRequired = 1,
+
+ // add new enum values here
+
+ CapabilityClassMax = 254
+};
+
+/// Capability of the TensorHandleFactory
+struct Capability
+{
+ Capability(CapabilityClass capabilityClass, bool value)
+ : m_CapabilityClass(capabilityClass)
+ , m_Value(value)
+ {}
+
+ CapabilityClass m_CapabilityClass;
+ bool m_Value;
+};
+
class ITensorHandleFactory
{
public:
@@ -59,6 +82,16 @@ public:
virtual MemorySourceFlags GetExportFlags() const { return 0; }
virtual MemorySourceFlags GetImportFlags() const { return 0; }
+
+ virtual std::vector<Capability> GetCapabilities(const IConnectableLayer* layer,
+ const IConnectableLayer* connectedLayer,
+ CapabilityClass capabilityClass)
+ {
+ IgnoreUnused(layer);
+ IgnoreUnused(connectedLayer);
+ IgnoreUnused(capabilityClass);
+ return std::vector<Capability>();
+ }
};
enum class EdgeStrategy
diff --git a/src/backends/reference/test/RefTensorHandleTests.cpp b/src/backends/reference/test/RefTensorHandleTests.cpp
index 42f5664b72..3635a32472 100644
--- a/src/backends/reference/test/RefTensorHandleTests.cpp
+++ b/src/backends/reference/test/RefTensorHandleTests.cpp
@@ -141,6 +141,23 @@ BOOST_AUTO_TEST_CASE(RefTensorHandleImport)
BOOST_CHECK(buffer[1] == 10.0f);
}
+BOOST_AUTO_TEST_CASE(RefTensorHandleGetCapabilities)
+{
+ std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
+ RefTensorHandleFactory handleFactory(memoryManager);
+
+ // Builds up the structure of the network.
+ INetworkPtr net(INetwork::Create());
+ IConnectableLayer* input = net->AddInputLayer(0);
+ IConnectableLayer* output = net->AddOutputLayer(0);
+ input->GetOutputSlot(0).Connect(output->GetInputSlot(0));
+
+ std::vector<Capability> capabilities = handleFactory.GetCapabilities(input,
+ output,
+ CapabilityClass::PaddingRequired);
+ BOOST_CHECK(capabilities.empty());
+}
+
#if !defined(__ANDROID__)
// Only run these tests on non Android platforms
BOOST_AUTO_TEST_CASE(CheckSourceType)