IVGCVSW-3925 Add Backward compatibility for ITensorHandle CreateTensorHandle functions
authorDavid Monahan <david.monahan@arm.com>
Wed, 2 Oct 2019 08:33:57 +0000 (09:33 +0100)
committerDavid Monahan <david.monahan@arm.com>
Fri, 4 Oct 2019 10:16:33 +0000 (10:16 +0000)
Change-Id: I940b7ca706c9a8bc38743176eb7959aa629a6876
Signed-off-by: David Monahan <david.monahan@arm.com>
src/armnn/test/TensorHandleStrategyTest.cpp
src/backends/backendsCommon/ITensorHandleFactory.hpp
src/backends/cl/ClTensorHandleFactory.cpp
src/backends/cl/ClTensorHandleFactory.hpp
src/backends/neon/NeonTensorHandleFactory.cpp
src/backends/neon/NeonTensorHandleFactory.hpp
src/backends/reference/RefTensorHandleFactory.cpp
src/backends/reference/RefTensorHandleFactory.hpp

index ceb6e4d..3c53b13 100644 (file)
@@ -45,15 +45,13 @@ public:
         return nullptr;
     }
 
-    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                      const bool IsMemoryManaged) const override
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override
     {
         return nullptr;
     }
 
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                      DataLayout dataLayout,
-                                                      const bool IsMemoryManaged) const override
+                                                      DataLayout dataLayout) const override
     {
         return nullptr;
     }
@@ -85,15 +83,13 @@ public:
         return nullptr;
     }
 
-    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                      const bool IsMemoryManaged) const override
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override
     {
         return nullptr;
     }
 
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                      DataLayout dataLayout,
-                                                      const bool IsMemoryManaged) const override
+                                                      DataLayout dataLayout) const override
     {
         return nullptr;
     }
index c6deaef..2e47423 100644 (file)
@@ -8,6 +8,9 @@
 #include <armnn/IRuntime.hpp>
 #include <armnn/MemorySources.hpp>
 #include <armnn/Types.hpp>
+#include "ITensorHandle.hpp"
+
+#include <boost/core/ignore_unused.hpp>
 
 namespace armnn
 {
@@ -25,12 +28,28 @@ public:
                                                                  TensorShape const& subTensorShape,
                                                                  unsigned int const* subTensorOrigin) const = 0;
 
+    virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const = 0;
+
+    virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
+                                                              DataLayout dataLayout) const = 0;
+
+    // Utility Functions for backends which require TensorHandles to have unmanaged memory.
+    // These should be overloaded if required to facilitate direct import of input tensors
+    // and direct export of output tensors.
     virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                              const bool IsMemoryManaged = true) const = 0;
+                                                              const bool IsMemoryManaged) const
+    {
+        boost::ignore_unused(IsMemoryManaged);
+        return CreateTensorHandle(tensorInfo);
+    }
 
     virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
                                                               DataLayout dataLayout,
-                                                              const bool IsMemoryManaged = true) const = 0;
+                                                              const bool IsMemoryManaged) const
+    {
+        boost::ignore_unused(IsMemoryManaged);
+        return CreateTensorHandle(tensorInfo, dataLayout);
+    }
 
     virtual const FactoryId& GetId() const = 0;
 
index 3d9908a..9df3f1a 100644 (file)
@@ -45,6 +45,17 @@ std::unique_ptr<ITensorHandle> ClTensorHandleFactory::CreateSubTensorHandle(ITen
             boost::polymorphic_downcast<IClTensorHandle *>(&parent), shape, coords);
 }
 
+std::unique_ptr<ITensorHandle> ClTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
+{
+    return ClTensorHandleFactory::CreateTensorHandle(tensorInfo, true);
+}
+
+std::unique_ptr<ITensorHandle> ClTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
+                                                                         DataLayout dataLayout) const
+{
+    return ClTensorHandleFactory::CreateTensorHandle(tensorInfo, dataLayout, true);
+}
+
 std::unique_ptr<ITensorHandle> ClTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
                                                                          const bool IsMemoryManaged) const
 {
index ea3728f..f0d427a 100644 (file)
@@ -28,6 +28,11 @@ public:
                                                          const TensorShape& subTensorShape,
                                                          const unsigned int* subTensorOrigin) const override;
 
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override;
+
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
+                                                      DataLayout dataLayout) const override;
+
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
                                                       const bool IsMemoryManaged = true) const override;
 
index 8296b83..4ccbb7b 100644 (file)
@@ -39,6 +39,17 @@ std::unique_ptr<ITensorHandle> NeonTensorHandleFactory::CreateSubTensorHandle(IT
             boost::polymorphic_downcast<IAclTensorHandle*>(&parent), shape, coords);
 }
 
+std::unique_ptr<ITensorHandle> NeonTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
+{
+    return NeonTensorHandleFactory::CreateTensorHandle(tensorInfo, true);
+}
+
+std::unique_ptr<ITensorHandle> NeonTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
+                                                                           DataLayout dataLayout) const
+{
+    return NeonTensorHandleFactory::CreateTensorHandle(tensorInfo, dataLayout, true);
+}
+
 std::unique_ptr<ITensorHandle> NeonTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
                                                                            const bool IsMemoryManaged) const
 {
index b034333..d9b6404 100644 (file)
@@ -26,6 +26,11 @@ public:
                                                          const TensorShape& subTensorShape,
                                                          const unsigned int* subTensorOrigin) const override;
 
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override;
+
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
+                                                      DataLayout dataLayout) const override;
+
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
                                                       const bool IsMemoryManaged = true) const override;
 
index 089f5e3..c97a779 100644 (file)
@@ -27,18 +27,15 @@ std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateSubTensorHandle(ITe
     return nullptr;
 }
 
-std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                                          const bool IsMemoryManaged) const
+std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
 {
-    boost::ignore_unused(IsMemoryManaged);
     return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager, m_ImportFlags);
 }
 
 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                                          DataLayout dataLayout,
-                                                                          const bool IsMemoryManaged) const
+                                                                          DataLayout dataLayout) const
 {
-    boost::ignore_unused(dataLayout, IsMemoryManaged);
+    boost::ignore_unused(dataLayout);
     return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager, m_ImportFlags);
 }
 
index ca6af72..220e6fd 100644 (file)
@@ -28,12 +28,10 @@ public:
                                                          TensorShape const& subTensorShape,
                                                          unsigned int const* subTensorOrigin) const override;
 
-    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                      const bool IsMemoryManaged = true) const override;
+    std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override;
 
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                      DataLayout dataLayout,
-                                                      const bool IsMemoryManaged = true) const override;
+                                                      DataLayout dataLayout) const override;
 
     static const FactoryId& GetIdStatic();