aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/backends/WorkloadFactory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnn/backends/WorkloadFactory.hpp')
-rw-r--r--src/armnn/backends/WorkloadFactory.hpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/armnn/backends/WorkloadFactory.hpp b/src/armnn/backends/WorkloadFactory.hpp
index 5791c1b46f..c211a290b3 100644
--- a/src/armnn/backends/WorkloadFactory.hpp
+++ b/src/armnn/backends/WorkloadFactory.hpp
@@ -8,13 +8,14 @@
#include <memory>
#include "armnn/TensorFwd.hpp"
#include "OutputHandler.hpp"
+#include <boost/optional.hpp>
namespace armnn
{
class Layer;
-// Workload factory interface for compute backends
+// Workload factory interface for compute backends.
class IWorkloadFactory
{
public:
@@ -25,9 +26,16 @@ public:
/// Informs the memory manager that the network is finalized and ready for execution.
virtual void Finalize() { }
- static bool IsLayerSupported(Compute compute, const Layer& layer, DataType dataType,
+ /// Inform the memory manager to release the memory
+ virtual void Release() { }
+
+ /// Inform the memory manager to acquire memory
+ virtual void Acquire() { }
+
+ static bool IsLayerSupported(Compute compute, const Layer& layer, boost::optional<DataType> dataType,
+ std::string& outReasonIfUnsupported);
+ static bool IsLayerSupported(const Layer& layer, boost::optional<DataType> dataType,
std::string& outReasonIfUnsupported);
- static bool IsLayerSupported(const Layer& layer, DataType dataType, std::string& outReasonIfUnsupported);
virtual bool SupportsSubTensors() const = 0;
@@ -103,6 +111,15 @@ public:
virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
const WorkloadInfo& info) const = 0;
+
+ virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
+ const WorkloadInfo& info) const = 0;
+
+ virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
+ const WorkloadInfo& info) const = 0;
+
+ virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
+ const WorkloadInfo& info) const = 0;
};
} //namespace armnn