diff options
author | Finn Williams <finn.williams@arm.com> | 2021-10-28 19:07:32 +0100 |
---|---|---|
committer | Finn Williams <finn.williams@arm.com> | 2021-11-08 14:33:17 +0000 |
commit | b1aad4270fa8ad5c4aa62e27d564baf723b2cee5 (patch) | |
tree | 98b19ba85b50e2c730d5d2e3822cd2b1438bd149 /src/backends/reference/RefWorkloadFactory.cpp | |
parent | 3f22d27f51c493e37b9da0692b6bf776f4430dcf (diff) | |
download | armnn-b1aad4270fa8ad5c4aa62e27d564baf723b2cee5.tar.gz |
IVGCVSW-6527 Support the new memory API in loaded network
* enable external memory management for neon and ref backends
* change m_TensorMemoryVector to hold shared pointers
* change input layer backend Id to match backend id of connected layer
Signed-off-by: Finn Williams <finn.williams@arm.com>
Change-Id: I2216a724028312eb101b290df3f224177826b1a0
Diffstat (limited to 'src/backends/reference/RefWorkloadFactory.cpp')
-rw-r--r-- | src/backends/reference/RefWorkloadFactory.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index 75008bc866..36dcd21d32 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -113,10 +113,14 @@ bool RefWorkloadFactory::IsLayerSupported(const IConnectableLayer& layer, 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. - IgnoreUnused(isMemoryManaged); - return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager); + if (isMemoryManaged) + { + return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager); + } + else + { + return std::make_unique<RefTensorHandle>(tensorInfo, static_cast<unsigned int>(MemorySource::Malloc)); + } } std::unique_ptr<ITensorHandle> RefWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo, @@ -126,7 +130,15 @@ std::unique_ptr<ITensorHandle> RefWorkloadFactory::CreateTensorHandle(const Tens // 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. IgnoreUnused(isMemoryManaged, dataLayout); - return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager); + + if (isMemoryManaged) + { + return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager); + } + else + { + return std::make_unique<RefTensorHandle>(tensorInfo, static_cast<unsigned int>(MemorySource::Malloc)); + } } std::unique_ptr<IWorkload> RefWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, |