ArmNN
 22.08
EthosnRefWorkloadFactory Class Reference

#include <EthosnRefWorkloadFactory.hpp>

Inheritance diagram for EthosnRefWorkloadFactory:
IWorkloadFactory

Public Member Functions

 EthosnRefWorkloadFactory (const std::shared_ptr< EthosnRefMemoryManager > &memoryManager, bool winograd, std::string BlockConfigs)
 
 EthosnRefWorkloadFactory ()
 
 ~EthosnRefWorkloadFactory ()
 
const BackendIdGetBackendId () const override
 
bool SupportsSubTensors () const override
 
std::unique_ptr< ITensorHandleCreateSubTensorHandle (ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< IWorkloadCreateInput (const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateOutput (const OutputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvolution2d (const Convolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthwiseConvolution2d (const DepthwiseConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateTransposeConvolution2d (const TransposeConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePooling2d (const Pooling2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
- Public Member Functions inherited from IWorkloadFactory
virtual ~IWorkloadFactory ()
 
virtual void AfterWorkloadsCreated ()
 
virtual std::unique_ptr< IWorkloadCreateWorkload (LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
 

Static Public Member Functions

static bool IsLayerSupported (const Layer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
- Static Public Member Functions inherited from IWorkloadFactory
static bool IsLayerSupported (const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
static bool IsLayerSupported (const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
static bool IsLayerSupported (const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported, const ModelOptions &modelOptions)
 
static bool IsLayerSupported (const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported, const ModelOptions &modelOptions)
 

Detailed Description

Definition at line 19 of file EthosnRefWorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ EthosnRefWorkloadFactory() [1/2]

EthosnRefWorkloadFactory ( const std::shared_ptr< EthosnRefMemoryManager > &  memoryManager,
bool  winograd,
std::string  BlockConfigs 
)
explicit

Definition at line 24 of file EthosnRefWorkloadFactory.cpp.

25  : m_MemoryManager(memoryManager)
26 {
27  m_EnableWinograd = winograd;
28  m_BlockConfigs = BlockConfigs;
29 }

◆ EthosnRefWorkloadFactory() [2/2]

Definition at line 31 of file EthosnRefWorkloadFactory.cpp.

32  : m_MemoryManager(new EthosnRefMemoryManager())
33 {
34 }

◆ ~EthosnRefWorkloadFactory()

Member Function Documentation

◆ CreateConvolution2d()

std::unique_ptr< IWorkload > CreateConvolution2d ( const Convolution2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
override

Definition at line 107 of file EthosnRefWorkloadFactory.cpp.

References armnn::info.

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

109 {
110  return std::make_unique<EthosnRefConvolution2dWorkload>(descriptor, info, m_EnableWinograd, m_BlockConfigs);
111 }

◆ CreateDepthwiseConvolution2d()

std::unique_ptr< IWorkload > CreateDepthwiseConvolution2d ( const DepthwiseConvolution2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
override

Definition at line 113 of file EthosnRefWorkloadFactory.cpp.

References armnn::info.

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

116 {
117  return std::make_unique<EthosnRefDepthwiseConvolution2dWorkload>(descriptor, info);
118 }

◆ CreateInput()

std::unique_ptr< IWorkload > CreateInput ( const InputQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 68 of file EthosnRefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and WorkloadInfo::m_OutputTensorInfos.

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

70 {
71  if (info.m_InputTensorInfos.empty() )
72  {
73  throw InvalidArgumentException("EthosnRefWorkloadFactory::CreateInput: Input cannot be zero length");
74  }
75  if (info.m_OutputTensorInfos.empty())
76  {
77  throw InvalidArgumentException("EthosnRefWorkloadFactory::CreateInput: Output cannot be zero length");
78  }
79 
80  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
81  {
82  throw InvalidArgumentException("EthosnRefWorkloadFactory::CreateInput: data input and output differ in byte count.");
83  }
84 
85  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
86 }

◆ CreateOutput()

std::unique_ptr< IWorkload > CreateOutput ( const OutputQueueDescriptor descriptor,
const WorkloadInfo info 
) const
override

Definition at line 88 of file EthosnRefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and WorkloadInfo::m_OutputTensorInfos.

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

90 {
91  if (info.m_InputTensorInfos.empty() )
92  {
93  throw InvalidArgumentException("EthosnRefWorkloadFactory::CreateOutput: Input cannot be zero length");
94  }
95  if (info.m_OutputTensorInfos.empty())
96  {
97  throw InvalidArgumentException("EthosnRefWorkloadFactory::CreateOutput: Output cannot be zero length");
98  }
99  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
100  {
101  throw InvalidArgumentException("EthosnRefWorkloadFactory::CreateOutput: data input and output differ in byte count.");
102  }
103 
104  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
105 }

◆ CreatePooling2d()

std::unique_ptr< IWorkload > CreatePooling2d ( const Pooling2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
override

Definition at line 127 of file EthosnRefWorkloadFactory.cpp.

References armnn::info.

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

129 {
130  return std::make_unique<EthosnRefPooling2dWorkload>(descriptor, info);
131 }

◆ CreateSubTensorHandle()

std::unique_ptr<ITensorHandle> CreateSubTensorHandle ( ITensorHandle parent,
TensorShape const &  subTensorShape,
unsigned int const *  subTensorOrigin 
) const
inlineoverridevirtual

◆ CreateTensorHandle() [1/2]

std::unique_ptr< ITensorHandle > CreateTensorHandle ( const TensorInfo tensorInfo,
const bool  IsMemoryManaged = true 
) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 48 of file EthosnRefWorkloadFactory.cpp.

References armnn::IgnoreUnused().

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

50 {
51  // For EthosnRef it is okay to make the TensorHandle memory managed as it can also store a pointer
52  // to unmanaged memory. This also ensures memory alignment.
53  IgnoreUnused(isMemoryManaged);
54  return std::make_unique<EthosnRefTensorHandle>(tensorInfo, m_MemoryManager);
55 }
void IgnoreUnused(Ts &&...)

◆ CreateTensorHandle() [2/2]

std::unique_ptr< ITensorHandle > CreateTensorHandle ( const TensorInfo tensorInfo,
DataLayout  dataLayout,
const bool  IsMemoryManaged = true 
) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 57 of file EthosnRefWorkloadFactory.cpp.

References armnn::IgnoreUnused().

60 {
61  // For EthosnRef it is okay to make the TensorHandle memory managed as it can also store a pointer
62  // to unmanaged memory. This also ensures memory alignment.
63  IgnoreUnused(isMemoryManaged, dataLayout);
64  return std::make_unique<EthosnRefTensorHandle>(tensorInfo, m_MemoryManager);
65 }
void IgnoreUnused(Ts &&...)

◆ CreateTransposeConvolution2d()

std::unique_ptr< IWorkload > CreateTransposeConvolution2d ( const TransposeConvolution2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
override

Definition at line 120 of file EthosnRefWorkloadFactory.cpp.

References armnn::info.

Referenced by EthosnRefWorkloadFactory::CreateSubTensorHandle().

123 {
124  return std::make_unique<EthosnRefTransposeConvolution2dWorkload>(descriptor, info);
125 }

◆ GetBackendId()

const BackendId & GetBackendId ( ) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 36 of file EthosnRefWorkloadFactory.cpp.

Referenced by EthosnRefWorkloadFactory::~EthosnRefWorkloadFactory().

37 {
38  return s_Id;
39 }

◆ IsLayerSupported()

bool IsLayerSupported ( const Layer layer,
Optional< DataType dataType,
std::string &  outReasonIfUnsupported 
)
static

Definition at line 41 of file EthosnRefWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

Referenced by EthosnRefWorkloadFactory::~EthosnRefWorkloadFactory().

44 {
45  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
46 }
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)

◆ SupportsSubTensors()

bool SupportsSubTensors ( ) const
inlineoverridevirtual

Implements IWorkloadFactory.

Definition at line 33 of file EthosnRefWorkloadFactory.hpp.

33 { return false; }

The documentation for this class was generated from the following files: