IVGCVSW-3307 Add RefMemoryManager

Simple pool memory manager for use in the reference backend,
in order to make the backend usable for testing large networks.

Change-Id: I5694da29052c60f95b57da595c64cc114d75b8ba
Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index 0a296be..3680831 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -15,6 +15,7 @@
 #include <Optimizer.hpp>
 
 #include <boost/cast.hpp>
+#include <boost/polymorphic_pointer_cast.hpp>
 
 namespace armnn
 {
@@ -43,7 +44,7 @@
 IBackendInternal::IWorkloadFactoryPtr RefBackend::CreateWorkloadFactory(
     const IBackendInternal::IMemoryManagerSharedPtr& memoryManager) const
 {
-    return std::make_unique<RefWorkloadFactory>();
+    return std::make_unique<RefWorkloadFactory>(boost::polymorphic_pointer_downcast<RefMemoryManager>(memoryManager));
 }
 
 IBackendInternal::IBackendContextPtr RefBackend::CreateBackendContext(const IRuntime::CreationOptions&) const
@@ -53,7 +54,7 @@
 
 IBackendInternal::IMemoryManagerUniquePtr RefBackend::CreateMemoryManager() const
 {
-    return IMemoryManagerUniquePtr{};
+    return std::make_unique<RefMemoryManager>();
 }
 
 IBackendInternal::Optimizations RefBackend::GetOptimizations() const