IVGCVSW-5203 Fix Dynamic Sample Backend build
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Tue, 11 Aug 2020 10:24:25 +0000 (11:24 +0100)
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Tue, 11 Aug 2020 15:49:07 +0000 (15:49 +0000)
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ie2a8b0e4f439500a1978f66dd332281220c75a82

src/dynamic/sample/SampleDynamicBackend.cpp
src/dynamic/sample/SampleTensorHandle.cpp
src/dynamic/sample/SampleTensorHandle.hpp

index 2ef8faa..7a3475b 100644 (file)
@@ -44,9 +44,15 @@ public:
     }
 
     IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
-        class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const override
+        class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const override
     {
-        return IWorkloadFactoryPtr{};
+        auto memoryManager = std::make_shared<SampleMemoryManager>();
+
+        tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);
+        tensorHandleFactoryRegistry.RegisterFactory(std::make_unique<SampleDynamicTensorHandleFactory>(memoryManager));
+
+        return std::make_unique<SampleDynamicWorkloadFactory>(
+            PolymorphicPointerDowncast<SampleMemoryManager>(memoryManager));
     }
 
     IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext(
@@ -80,7 +86,7 @@ public:
         return optimizationViews;
     }
 
-    void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) const override
+    void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) override
     {
         auto memoryManager = std::make_shared<SampleMemoryManager>();
 
index 48f8cf4..fb4eddc 100644 (file)
@@ -21,14 +21,13 @@ SampleTensorHandle::SampleTensorHandle(const TensorInfo &tensorInfo,
 }
 
 SampleTensorHandle::SampleTensorHandle(const TensorInfo& tensorInfo,
-                                       std::shared_ptr<SampleMemoryManager> &memoryManager,
                                        MemorySourceFlags importFlags)
     : m_TensorInfo(tensorInfo),
-      m_MemoryManager(memoryManager),
+      m_MemoryManager(nullptr),
       m_Pool(nullptr),
       m_UnmanagedMemory(nullptr),
       m_ImportFlags(importFlags),
-      m_Imported(false)
+      m_Imported(true)
 {
 
 }
@@ -134,4 +133,18 @@ bool SampleTensorHandle::Import(void* memory, MemorySource source)
     return false;
 }
 
+void SampleTensorHandle::CopyOutTo(void* dest) const
+{
+    const void *src = GetPointer();
+    ARMNN_ASSERT(src);
+    memcpy(dest, src, m_TensorInfo.GetNumBytes());
+}
+
+void SampleTensorHandle::CopyInFrom(const void* src)
+{
+    void *dest = GetPointer();
+    ARMNN_ASSERT(dest);
+    memcpy(dest, src, m_TensorInfo.GetNumBytes());
+}
+
 }
index c08edc6..2a44ed6 100644 (file)
@@ -17,9 +17,7 @@ class SampleTensorHandle : public ITensorHandle
 public:
     SampleTensorHandle(const TensorInfo& tensorInfo, std::shared_ptr<SampleMemoryManager> &memoryManager);
 
-    SampleTensorHandle(const TensorInfo& tensorInfo,
-                       std::shared_ptr<SampleMemoryManager> &memoryManager,
-                       MemorySourceFlags importFlags);
+    SampleTensorHandle(const TensorInfo& tensorInfo, MemorySourceFlags importFlags);
 
     ~SampleTensorHandle();
 
@@ -61,6 +59,10 @@ public:
     virtual bool Import(void* memory, MemorySource source) override;
 
 private:
+    // Only used for testing
+    void CopyOutTo(void*) const override;
+    void CopyInFrom(const void*) override;
+
     void* GetPointer() const;
 
     SampleTensorHandle(const SampleTensorHandle& other) = delete; // noncopyable