diff options
Diffstat (limited to 'src/backends/reference')
-rw-r--r-- | src/backends/reference/RefTensorHandleFactory.cpp | 9 | ||||
-rw-r--r-- | src/backends/reference/RefTensorHandleFactory.hpp | 6 | ||||
-rw-r--r-- | src/backends/reference/RefWorkloadFactory.cpp | 10 | ||||
-rw-r--r-- | src/backends/reference/RefWorkloadFactory.hpp | 6 |
4 files changed, 22 insertions, 9 deletions
diff --git a/src/backends/reference/RefTensorHandleFactory.cpp b/src/backends/reference/RefTensorHandleFactory.cpp index c97a779cb3..089f5e3325 100644 --- a/src/backends/reference/RefTensorHandleFactory.cpp +++ b/src/backends/reference/RefTensorHandleFactory.cpp @@ -27,15 +27,18 @@ std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateSubTensorHandle(ITe return nullptr; } -std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const +std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo, + const bool IsMemoryManaged) 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 + DataLayout dataLayout, + const bool IsMemoryManaged) const { - boost::ignore_unused(dataLayout); + boost::ignore_unused(dataLayout, IsMemoryManaged); return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager, m_ImportFlags); } diff --git a/src/backends/reference/RefTensorHandleFactory.hpp b/src/backends/reference/RefTensorHandleFactory.hpp index 220e6fd0de..ca6af72f71 100644 --- a/src/backends/reference/RefTensorHandleFactory.hpp +++ b/src/backends/reference/RefTensorHandleFactory.hpp @@ -28,10 +28,12 @@ public: TensorShape const& subTensorShape, unsigned int const* subTensorOrigin) const override; - std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override; + std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, + const bool IsMemoryManaged = true) const override; std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, - DataLayout dataLayout) const override; + DataLayout dataLayout, + const bool IsMemoryManaged = true) const override; static const FactoryId& GetIdStatic(); diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index 346fd691f2..480b7e24ac 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -78,14 +78,20 @@ bool RefWorkloadFactory::IsLayerSupported(const Layer& layer, return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported); } -std::unique_ptr<ITensorHandle> RefWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const +std::unique_ptr<ITensorHandle> RefWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo, + const bool IsMemoryManaged) const { + // For Ref it is okay to make the TensorHandle memory managed as it can also store a pointer + // to unmanaged memory. This also ensures memory alignment. return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager); } std::unique_ptr<ITensorHandle> RefWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo, - DataLayout dataLayout) const + DataLayout dataLayout, + const bool IsMemoryManaged) const { + // For Ref it is okay to make the TensorHandle memory managed as it can also store a pointer + // to unmanaged memory. This also ensures memory alignment. return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager); } diff --git a/src/backends/reference/RefWorkloadFactory.hpp b/src/backends/reference/RefWorkloadFactory.hpp index 606da82d32..033f81779d 100644 --- a/src/backends/reference/RefWorkloadFactory.hpp +++ b/src/backends/reference/RefWorkloadFactory.hpp @@ -53,10 +53,12 @@ public: return nullptr; } - std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override; + std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, + const bool IsMemoryManaged = true) const override; std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, - DataLayout dataLayout) const override; + DataLayout dataLayout, + const bool IsMemoryManaged = true) const override; std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor, const WorkloadInfo& info) const override; |