IVGCVSW-6310 Update ICustomAllocator and add GetDefaultAllocator function to backends
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Change-Id: If2879e8a82692285e7fa3f4d09abd608ca28de12
diff --git a/include/armnn/backends/IBackendInternal.hpp b/include/armnn/backends/IBackendInternal.hpp
index f4fe678..7500e35 100644
--- a/include/armnn/backends/IBackendInternal.hpp
+++ b/include/armnn/backends/IBackendInternal.hpp
@@ -13,12 +13,12 @@
#include <SubgraphView.hpp>
#include <optimizations/Optimization.hpp>
-#include "IBackendContext.hpp"
-#include "armnn/backends/profiling/IBackendProfiling.hpp"
-#include "armnn/backends/profiling/IBackendProfilingContext.hpp"
-#include "IMemoryManager.hpp"
-#include "ITensorHandleFactory.hpp"
-#include "OptimizationViews.hpp"
+#include <armnn/backends/IBackendContext.hpp>
+#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/backends/ITensorHandleFactory.hpp>
+#include <armnn/backends/OptimizationViews.hpp>
+#include <armnn/backends/profiling/IBackendProfiling.hpp>
+#include <armnn/backends/profiling/IBackendProfilingContext.hpp>
#include <vector>
#include <memory>
@@ -198,6 +198,14 @@
}
return false;
}
+
+ /// Returns the default memory allocator for the backend
+ ///
+ /// \return - Returns unique pointer to the Default Allocator of the Backend
+ virtual std::unique_ptr<ICustomAllocator> GetDefaultAllocator() const
+ {
+ throw armnn::Exception("GetDefaultAllocator: Function has not been implemented in backend.");
+ }
};
using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>;
diff --git a/include/armnn/backends/ICustomAllocator.hpp b/include/armnn/backends/ICustomAllocator.hpp
index 2cb5f41..eb8dfe1 100644
--- a/include/armnn/backends/ICustomAllocator.hpp
+++ b/include/armnn/backends/ICustomAllocator.hpp
@@ -8,6 +8,7 @@
#include <cstddef>
#include <memory>
#include <armnn/MemorySources.hpp>
+#include <armnn/utility/IgnoreUnused.hpp>
namespace armnn
{
@@ -31,13 +32,26 @@
/** Interface to be implemented by the child class to free the allocated bytes */
virtual void free(void* ptr) = 0;
- // Used to specify what type of memory is being allocated by this allocator.
- // Supported types are:
- // MemorySource::Malloc
- // MemorySource::DmaBuf
- // Unsupported types are:
- // MemorySource::DmaBufProtected
+ /** Used to specify what type of memory is being allocated by this allocator.
+ * Supported types are:
+ * MemorySource::Malloc
+ * MemorySource::DmaBuf
+ * Unsupported types are:
+ * MemorySource::DmaBufProtected
+ */
virtual armnn::MemorySource GetMemorySourceType() = 0;
+ /** Interface that may be implemented to allow retrieval of Memory Region
+ * from allocated buffer at a certain offset
+ */
+ virtual void* GetMemoryRegionAtOffset(void* buffer, size_t offset, size_t alignment = 0)
+ {
+ IgnoreUnused(offset);
+ IgnoreUnused(alignment);
+ IgnoreUnused(buffer);
+ throw armnn::Exception(
+ "ICustomerAllocator::GetMemoryRegionAtOffset(): This function should be overridden in subclass.");
+ }
+
};
} // namespace armnn
\ No newline at end of file