ArmNN
 23.05
IWorkloadFactory Class Referenceabstract

#include <WorkloadFactory.hpp>

Inheritance diagram for IWorkloadFactory:
RefWorkloadFactory TosaRefWorkloadFactory WorkloadFactoryBase SampleDynamicWorkloadFactory ClWorkloadFactory NeonWorkloadFactory

Public Member Functions

virtual ~IWorkloadFactory ()
 
virtual void AfterWorkloadsCreated ()
 
virtual const BackendIdGetBackendId () const =0
 
virtual bool SupportsSubTensors () const =0
 
virtual std::unique_ptr< ITensorHandleCreateSubTensorHandle (ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const =0
 
virtual std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
 
virtual std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged=true) const =0
 
virtual std::unique_ptr< IWorkloadCreateWorkload (LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
 

Static Public Member Functions

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 22 of file WorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ ~IWorkloadFactory()

virtual ~IWorkloadFactory ( )
inlinevirtual

Definition at line 25 of file WorkloadFactory.hpp.

25 { }

Member Function Documentation

◆ AfterWorkloadsCreated()

virtual void AfterWorkloadsCreated ( )
inlinevirtual

Reimplemented in ClWorkloadFactory.

Definition at line 27 of file WorkloadFactory.hpp.

27 {};

◆ CreateSubTensorHandle()

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

◆ CreateTensorHandle() [1/2]

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

◆ CreateTensorHandle() [2/2]

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

◆ CreateWorkload()

ARMNN_NO_DEPRECATE_WARN_BEGIN std::unique_ptr< IWorkload > CreateWorkload ( LayerType  type,
const QueueDescriptor descriptor,
const WorkloadInfo info 
) const
virtual

Reimplemented in WorkloadFactoryBase, RefWorkloadFactory, ClWorkloadFactory, TosaRefWorkloadFactory, and NeonWorkloadFactory.

Definition at line 1590 of file WorkloadFactory.cpp.

1593 {
1594  switch(type)
1595  {
1596  case LayerType::Activation :
1597  {
1598  auto activationQueueDescriptor = PolymorphicDowncast<const ActivationQueueDescriptor*>(&descriptor);
1599  return CreateActivation(*activationQueueDescriptor, info);
1600  }
1601  case LayerType::Addition :
1602  {
1603  auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor);
1604  return CreateAddition(*additionQueueDescriptor, info);
1605  }
1606  case LayerType::ArgMinMax :
1607  {
1608  auto argMinMaxQueueDescriptor = PolymorphicDowncast<const ArgMinMaxQueueDescriptor*>(&descriptor);
1609  return CreateArgMinMax(*argMinMaxQueueDescriptor, info);
1610  }
1612  {
1613  auto batchNormQueueDescriptor = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
1614  return CreateBatchNormalization(*batchNormQueueDescriptor, info);
1615  }
1617  {
1618  auto batchToSpaceNdQueueDescriptor
1619  = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
1620  return CreateBatchToSpaceNd(*batchToSpaceNdQueueDescriptor, info);
1621  }
1622  case LayerType::Cast :
1623  {
1624  auto castQueueDescriptor = PolymorphicDowncast<const CastQueueDescriptor*>(&descriptor);
1625  return CreateCast(*castQueueDescriptor, info);
1626  }
1628  {
1629  auto channelShuffleQueueDescriptor
1630  = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
1631  return CreateChannelShuffle(*channelShuffleQueueDescriptor, info);
1632  }
1633  case LayerType::Comparison :
1634  {
1635  auto comparisonQueueDescriptor = PolymorphicDowncast<const ComparisonQueueDescriptor*>(&descriptor);
1636  return CreateComparison(*comparisonQueueDescriptor, info);
1637  }
1638  case LayerType::Concat :
1639  {
1640  auto concatQueueDescriptor = PolymorphicDowncast<const ConcatQueueDescriptor*>(&descriptor);
1641  return CreateConcat(*concatQueueDescriptor, info);
1642  }
1643  case LayerType::Constant :
1644  {
1645  auto constantQueueDescriptor = PolymorphicDowncast<const ConstantQueueDescriptor*>(&descriptor);
1646  return CreateConstant(*constantQueueDescriptor, info);
1647  }
1649  {
1650  auto convertFp16ToFp32QueueDescriptor
1651  = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
1652  return CreateConvertFp16ToFp32(*convertFp16ToFp32QueueDescriptor, info);
1653  }
1655  {
1656  auto convertFp32ToFp16QueueDescriptor
1657  = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
1658  return CreateConvertFp32ToFp16(*convertFp32ToFp16QueueDescriptor, info);
1659  }
1661  {
1662  auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor);
1663  return CreateConvolution2d(*convolution2dQueueDescriptor, info);
1664  }
1666  {
1667  auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor);
1668  return CreateConvolution3d(*convolution3dQueueDescriptor, info);
1669  }
1670  case LayerType::Debug:
1671  {
1672  auto debugQueueDescriptor = PolymorphicDowncast<const DebugQueueDescriptor*>(&descriptor);
1673  return CreateDebug(*debugQueueDescriptor, info);
1674  }
1676  {
1677  auto depthToSpaceQueueDescriptor = PolymorphicDowncast<const DepthToSpaceQueueDescriptor*>(&descriptor);
1678  return CreateDepthToSpace(*depthToSpaceQueueDescriptor, info);
1679  }
1681  {
1682  auto depthwiseConvolution2DQueueDescriptor
1683  = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
1684  return CreateDepthwiseConvolution2d(*depthwiseConvolution2DQueueDescriptor, info);
1685  }
1686  case LayerType::Dequantize:
1687  {
1688  auto dequantizeQueueDescriptor = PolymorphicDowncast<const DequantizeQueueDescriptor*>(&descriptor);
1689  return CreateDequantize(*dequantizeQueueDescriptor, info);
1690  }
1692  {
1693  auto detectionPostProcessQueueDescriptor
1694  = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
1695  return CreateDetectionPostProcess(*detectionPostProcessQueueDescriptor, info);
1696  }
1697  case LayerType::Division:
1698  {
1699  auto divisionQueueDescriptor = PolymorphicDowncast<const DivisionQueueDescriptor*>(&descriptor);
1700  return CreateDivision(*divisionQueueDescriptor, info);
1701  }
1703  {
1704  auto queueDescriptor = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
1705  return CreateWorkload(LayerType::ElementwiseBinary, *queueDescriptor, info);
1706  }
1708  {
1709  auto elementwiseUnaryQueueDescriptor
1710  = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
1711  return CreateElementwiseUnary(*elementwiseUnaryQueueDescriptor, info);
1712 
1713  }
1715  {
1716  auto fakeQuantizationQueueDescriptor
1717  = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor);
1718  return CreateFakeQuantization(*fakeQuantizationQueueDescriptor, info);
1719  }
1720  case LayerType::Fill:
1721  {
1722  auto fillQueueDescriptor = PolymorphicDowncast<const FillQueueDescriptor*>(&descriptor);
1723  return CreateFill(*fillQueueDescriptor, info);
1724  }
1725  case LayerType::Floor:
1726  {
1727  auto floorQueueDescriptor = PolymorphicDowncast<const FloorQueueDescriptor*>(&descriptor);
1728  return CreateFloor(*floorQueueDescriptor, info);
1729  }
1731  {
1732  auto fullyConnectedQueueDescriptor
1733  = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
1734  return CreateFullyConnected(*fullyConnectedQueueDescriptor, info);
1735  }
1736  case LayerType::Gather:
1737  {
1738  auto gatherQueueDescriptor = PolymorphicDowncast<const GatherQueueDescriptor*>(&descriptor);
1739  return CreateGather(*gatherQueueDescriptor, info);
1740  }
1741  case LayerType::Input:
1742  {
1743  auto inputQueueDescriptor = PolymorphicDowncast<const InputQueueDescriptor*>(&descriptor);
1744  return CreateInput(*inputQueueDescriptor, info);
1745  }
1747  {
1748  auto instanceNormalizationQueueDescriptor
1749  = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
1750  return CreateInstanceNormalization(*instanceNormalizationQueueDescriptor, info);
1751  }
1753  {
1754  auto l2NormalizationQueueDescriptor
1755  = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
1756  return CreateL2Normalization(*l2NormalizationQueueDescriptor, info);
1757  }
1759  {
1760  auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor);
1761  return CreateLogicalBinary(*logicalBinaryQueueDescriptor, info);
1762  }
1763  case LayerType::LogSoftmax:
1764  {
1765  auto logSoftmaxQueueDescriptor = PolymorphicDowncast<const LogSoftmaxQueueDescriptor*>(&descriptor);
1766  return CreateLogSoftmax(*logSoftmaxQueueDescriptor, info);
1767  }
1768  case LayerType::Lstm:
1769  {
1770  auto lstmQueueDescriptor = PolymorphicDowncast<const LstmQueueDescriptor*>(&descriptor);
1771  return CreateLstm(*lstmQueueDescriptor, info);
1772  }
1773  case LayerType::Maximum:
1774  {
1775  auto maximumQueueDescriptor = PolymorphicDowncast<const MaximumQueueDescriptor*>(&descriptor);
1776  return CreateMaximum(*maximumQueueDescriptor, info);
1777  }
1778  case LayerType::Mean:
1779  {
1780  auto meanQueueDescriptor = PolymorphicDowncast<const MeanQueueDescriptor*>(&descriptor);
1781  return CreateMean(*meanQueueDescriptor, info);
1782  }
1783  case LayerType::MemCopy:
1784  {
1785  auto memCopyQueueDescriptor = PolymorphicDowncast<const MemCopyQueueDescriptor*>(&descriptor);
1786  return CreateMemCopy(*memCopyQueueDescriptor, info);
1787  }
1788  case LayerType::MemImport:
1789  {
1790  auto memImportQueueDescriptor = PolymorphicDowncast<const MemImportQueueDescriptor*>(&descriptor);
1791  return CreateMemImport(*memImportQueueDescriptor, info);
1792  }
1793  case LayerType::Minimum:
1794  {
1795  auto minimumQueueDescriptor = PolymorphicDowncast<const MinimumQueueDescriptor*>(&descriptor);
1796  return CreateMinimum(*minimumQueueDescriptor, info);
1797  }
1799  {
1800  auto multiplicationQueueDescriptor
1801  = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor);
1802  return CreateMultiplication(*multiplicationQueueDescriptor, info);
1803  }
1805  {
1806  auto normalizationQueueDescriptor = PolymorphicDowncast<const NormalizationQueueDescriptor*>(&descriptor);
1807  return CreateNormalization(*normalizationQueueDescriptor, info);
1808  }
1809  case LayerType::Output:
1810  {
1811  auto outputQueueDescriptor = PolymorphicDowncast<const OutputQueueDescriptor*>(&descriptor);
1812  return CreateOutput(*outputQueueDescriptor, info);
1813  }
1814  case LayerType::Pad:
1815  {
1816  auto padQueueDescriptor = PolymorphicDowncast<const PadQueueDescriptor*>(&descriptor);
1817  return CreatePad(*padQueueDescriptor, info);
1818  }
1819  case LayerType::Permute:
1820  {
1821  auto permuteQueueDescriptor = PolymorphicDowncast<const PermuteQueueDescriptor*>(&descriptor);
1822  return CreatePermute(*permuteQueueDescriptor, info);
1823  }
1824  case LayerType::Pooling2d:
1825  {
1826  auto pooling2dQueueDescriptor = PolymorphicDowncast<const Pooling2dQueueDescriptor*>(&descriptor);
1827  return CreatePooling2d(*pooling2dQueueDescriptor, info);
1828  }
1829  case LayerType::Pooling3d:
1830  {
1831  auto pooling3dQueueDescriptor = PolymorphicDowncast<const Pooling3dQueueDescriptor*>(&descriptor);
1832  return CreatePooling3d(*pooling3dQueueDescriptor, info);
1833  }
1835  {
1836  auto preCompiledQueueDescriptor = PolymorphicDowncast<const PreCompiledQueueDescriptor*>(&descriptor);
1837  return CreatePreCompiled(*preCompiledQueueDescriptor, info);
1838  }
1839  case LayerType::Prelu:
1840  {
1841  auto preluQueueDescriptor = PolymorphicDowncast<const PreluQueueDescriptor*>(&descriptor);
1842  return CreatePrelu(*preluQueueDescriptor, info);
1843  }
1844  case LayerType::QLstm:
1845  {
1846  auto qlstmQueueDescriptor = PolymorphicDowncast<const QLstmQueueDescriptor*>(&descriptor);
1847  return CreateQLstm(*qlstmQueueDescriptor, info);
1848  }
1849  case LayerType::Quantize:
1850  {
1851  auto quantizeQueueDescriptor = PolymorphicDowncast<const QuantizeQueueDescriptor*>(&descriptor);
1852  return CreateQuantize(*quantizeQueueDescriptor, info);
1853  }
1854  case LayerType::Rank:
1855  {
1856  auto rankQueueDescriptor = PolymorphicDowncast<const RankQueueDescriptor*>(&descriptor);
1857  return CreateRank(*rankQueueDescriptor, info);
1858  }
1859  case LayerType::Reduce:
1860  {
1861  auto reduceQueueDescriptor = PolymorphicDowncast<const ReduceQueueDescriptor*>(&descriptor);
1862  return CreateReduce(*reduceQueueDescriptor, info);
1863  }
1864  case LayerType::Reshape:
1865  {
1866  auto reshapeQueueDescriptor = PolymorphicDowncast<const ReshapeQueueDescriptor*>(&descriptor);
1867  return CreateReshape(*reshapeQueueDescriptor, info);
1868  }
1869  case LayerType::Resize:
1870  {
1871  auto resizeQueueDescriptor = PolymorphicDowncast<const ResizeQueueDescriptor*>(&descriptor);
1872  return CreateResize(*resizeQueueDescriptor, info);
1873  }
1874  case LayerType::Shape:
1875  {
1876  auto shapeQueueDescriptor = PolymorphicDowncast<const ShapeQueueDescriptor*>(&descriptor);
1877  return CreateShape(*shapeQueueDescriptor, info);
1878  }
1879  case LayerType::Slice:
1880  {
1881  auto sliceQueueDescriptor = PolymorphicDowncast<const SliceQueueDescriptor*>(&descriptor);
1882  return CreateSlice(*sliceQueueDescriptor, info);
1883  }
1884  case LayerType::Softmax:
1885  {
1886  auto softmaxQueueDescriptor = PolymorphicDowncast<const SoftmaxQueueDescriptor*>(&descriptor);
1887  return CreateSoftmax(*softmaxQueueDescriptor, info);
1888  }
1890  {
1891  auto spaceToBatchNdQueueDescriptor
1892  = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
1893  return CreateSpaceToBatchNd(*spaceToBatchNdQueueDescriptor, info);
1894  }
1896  {
1897  auto spaceToDepthQueueDescriptor = PolymorphicDowncast<const SpaceToDepthQueueDescriptor*>(&descriptor);
1898  return CreateSpaceToDepth(*spaceToDepthQueueDescriptor, info);
1899  }
1900  case LayerType::Splitter:
1901  {
1902  auto splitterQueueDescriptor = PolymorphicDowncast<const SplitterQueueDescriptor*>(&descriptor);
1903  return CreateSplitter(*splitterQueueDescriptor, info);
1904  }
1905  case LayerType::Stack:
1906  {
1907  auto stackQueueDescriptor = PolymorphicDowncast<const StackQueueDescriptor*>(&descriptor);
1908  return CreateStack(*stackQueueDescriptor, info);
1909  }
1911  {
1912  auto stridedSliceQueueDescriptor = PolymorphicDowncast<const StridedSliceQueueDescriptor*>(&descriptor);
1913  return CreateStridedSlice(*stridedSliceQueueDescriptor, info);
1914  }
1916  {
1917  auto subtractionQueueDescriptor = PolymorphicDowncast<const SubtractionQueueDescriptor*>(&descriptor);
1918  return CreateSubtraction(*subtractionQueueDescriptor, info);
1919  }
1920  case LayerType::Transpose:
1921  {
1922  auto transposeQueueDescriptor = PolymorphicDowncast<const TransposeQueueDescriptor*>(&descriptor);
1923  return CreateTranspose(*transposeQueueDescriptor, info);
1924  }
1926  {
1927  auto transposeConvolution2dQueueDescriptor
1928  = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
1929  return CreateTransposeConvolution2d(*transposeConvolution2dQueueDescriptor, info);
1930  }
1932  {
1933  auto unidirectionalSequenceLstmQueueDescriptor
1934  = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor);
1935  return CreateUnidirectionalSequenceLstm(*unidirectionalSequenceLstmQueueDescriptor, info);
1936  }
1937  default:
1938  return nullptr;
1939  }
1940 }

References armnn::Activation, armnn::Addition, armnn::ArgMinMax, armnn::BatchNormalization, armnn::BatchToSpaceNd, armnn::Cast, armnn::ChannelShuffle, armnn::Comparison, armnn::Concat, armnn::Constant, armnn::ConvertFp16ToFp32, armnn::ConvertFp32ToFp16, armnn::Convolution2d, armnn::Convolution3d, armnn::Debug, armnn::DepthToSpace, armnn::DepthwiseConvolution2d, armnn::Dequantize, armnn::DetectionPostProcess, armnn::Division, armnn::ElementwiseBinary, armnn::ElementwiseUnary, armnn::FakeQuantization, armnn::Fill, armnn::Floor, armnn::FullyConnected, armnn::Gather, armnn::info, armnn::Input, armnn::InstanceNormalization, armnn::L2Normalization, armnn::LogicalBinary, armnn::LogSoftmax, armnn::Lstm, armnn::Maximum, armnn::Mean, armnn::MemCopy, armnn::MemImport, armnn::Minimum, armnn::Multiplication, armnn::Normalization, armnn::Output, armnn::Pad, armnn::Permute, armnn::Pooling2d, armnn::Pooling3d, armnn::PreCompiled, armnn::Prelu, armnn::QLstm, armnn::Quantize, armnn::Rank, armnn::Reduce, armnn::Reshape, armnn::Resize, armnn::Shape, armnn::Slice, armnn::Softmax, armnn::SpaceToBatchNd, armnn::SpaceToDepth, armnn::Splitter, armnn::Stack, armnn::StridedSlice, armnn::Subtraction, armnn::Transpose, armnn::TransposeConvolution2d, and armnn::UnidirectionalSequenceLstm.

Referenced by ActivationLayer::CreateWorkload(), ConvertFp32ToFp16Layer::CreateWorkload(), FillLayer::CreateWorkload(), QuantizeLayer::CreateWorkload(), RankLayer::CreateWorkload(), AbsLayer::CreateWorkload(), StridedSliceLayer::CreateWorkload(), StackLayer::CreateWorkload(), CastLayer::CreateWorkload(), DebugLayer::CreateWorkload(), L2NormalizationLayer::CreateWorkload(), SoftmaxLayer::CreateWorkload(), SwitchLayer::CreateWorkload(), ShapeLayer::CreateWorkload(), RsqrtLayer::CreateWorkload(), BatchMatMulLayer::CreateWorkload(), DequantizeLayer::CreateWorkload(), NormalizationLayer::CreateWorkload(), Pooling2dLayer::CreateWorkload(), ConcatLayer::CreateWorkload(), Pooling3dLayer::CreateWorkload(), FakeQuantizationLayer::CreateWorkload(), ConvertFp16ToFp32Layer::CreateWorkload(), ResizeLayer::CreateWorkload(), FloorLayer::CreateWorkload(), AdditionLayer::CreateWorkload(), BatchToSpaceNdLayer::CreateWorkload(), SliceLayer::CreateWorkload(), GatherNdLayer::CreateWorkload(), SplitterLayer::CreateWorkload(), InstanceNormalizationLayer::CreateWorkload(), MeanLayer::CreateWorkload(), SpaceToBatchNdLayer::CreateWorkload(), SpaceToDepthLayer::CreateWorkload(), SubtractionLayer::CreateWorkload(), LogicalBinaryLayer::CreateWorkload(), ArgMinMaxLayer::CreateWorkload(), LogSoftmaxLayer::CreateWorkload(), DepthToSpaceLayer::CreateWorkload(), MaximumLayer::CreateWorkload(), MinimumLayer::CreateWorkload(), ComparisonLayer::CreateWorkload(), PadLayer::CreateWorkload(), PermuteLayer::CreateWorkload(), ReduceLayer::CreateWorkload(), DivisionLayer::CreateWorkload(), ElementwiseBinaryLayer::CreateWorkload(), TransposeLayer::CreateWorkload(), ElementwiseUnaryLayer::CreateWorkload(), PreluLayer::CreateWorkload(), MultiplicationLayer::CreateWorkload(), GatherLayer::CreateWorkload(), ConstantLayer::CreateWorkload(), ChannelShuffleLayer::CreateWorkload(), ReshapeLayer::CreateWorkload(), Convolution2dLayer::CreateWorkload(), FullyConnectedLayer::CreateWorkload(), DepthwiseConvolution2dLayer::CreateWorkload(), Convolution3dLayer::CreateWorkload(), DetectionPostProcessLayer::CreateWorkload(), TransposeConvolution2dLayer::CreateWorkload(), PreCompiledLayer::CreateWorkload(), UnidirectionalSequenceLstmLayer::CreateWorkload(), LstmLayer::CreateWorkload(), BatchNormalizationLayer::CreateWorkload(), QuantizedLstmLayer::CreateWorkload(), and QLstmLayer::CreateWorkload().

◆ GetBackendId()

virtual const BackendId& GetBackendId ( ) const
pure virtual

◆ IsLayerSupported() [1/4]

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

Definition at line 1548 of file WorkloadFactory.cpp.

1552 {
1553  return IsLayerConfigurationSupported(backendId, connectableLayer, dataType, outReasonIfUnsupported);
1554 }

Referenced by armnn::AttemptBackendAssignment(), TosaRefWorkloadFactory::IsLayerSupported(), NeonWorkloadFactory::IsLayerSupported(), ClWorkloadFactory::IsLayerSupported(), and RefWorkloadFactory::IsLayerSupported().

◆ IsLayerSupported() [2/4]

bool IsLayerSupported ( const BackendId backendId,
const IConnectableLayer layer,
Optional< DataType dataType,
std::string &  outReasonIfUnsupported,
const ModelOptions modelOptions 
)
static

Definition at line 1577 of file WorkloadFactory.cpp.

1582 {
1583  return IsLayerConfigurationSupported(backendId,
1584  connectableLayer,
1585  dataType,
1586  outReasonIfUnsupported,
1587  modelOptions);
1588 }

◆ IsLayerSupported() [3/4]

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

Definition at line 1556 of file WorkloadFactory.cpp.

1559 {
1560  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1561  return IsLayerConfigurationSupported(layer->GetBackendId(), connectableLayer, dataType, outReasonIfUnsupported);
1562 }

◆ IsLayerSupported() [4/4]

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

Definition at line 1564 of file WorkloadFactory.cpp.

1568 {
1569  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1570  return IsLayerConfigurationSupported(layer->GetBackendId(),
1571  connectableLayer,
1572  dataType,
1573  outReasonIfUnsupported,
1574  modelOptions);
1575 }

◆ SupportsSubTensors()

virtual bool SupportsSubTensors ( ) const
pure virtual

The documentation for this class was generated from the following files:
armnn::LayerType::Floor
@ Floor
armnn::LayerType::MemCopy
@ MemCopy
armnn::LayerType::Softmax
@ Softmax
armnn::LayerType::Pooling3d
@ Pooling3d
armnn::LayerType::FullyConnected
@ FullyConnected
armnn::LayerType::Transpose
@ Transpose
armnn::LayerType::ChannelShuffle
@ ChannelShuffle
armnn::LayerType::ConvertFp32ToFp16
@ ConvertFp32ToFp16
armnn::LayerType::L2Normalization
@ L2Normalization
armnn::LayerType::TransposeConvolution2d
@ TransposeConvolution2d
armnn::LayerType::Input
@ Input
armnn::LayerType::Slice
@ Slice
armnn::LayerType::ElementwiseBinary
@ ElementwiseBinary
armnn::LayerType::Maximum
@ Maximum
armnn::LayerType::Quantize
@ Quantize
armnn::LayerType::ArgMinMax
@ ArgMinMax
armnn::LayerType::Subtraction
@ Subtraction
armnn::LayerType::SpaceToBatchNd
@ SpaceToBatchNd
armnn::LayerType::Convolution2d
@ Convolution2d
armnn::LayerType::Shape
@ Shape
armnn::LayerType::Permute
@ Permute
armnn::LayerType::ConvertFp16ToFp32
@ ConvertFp16ToFp32
armnn::LayerType::QLstm
@ QLstm
armnn::LayerType::Pad
@ Pad
armnn::LayerType::Addition
@ Addition
armnn::LayerType::BatchNormalization
@ BatchNormalization
armnn::LayerType::Reduce
@ Reduce
armnn::LayerType::Division
@ Division
armnn::LayerType::Debug
@ Debug
armnn::LayerType::InstanceNormalization
@ InstanceNormalization
armnn::LayerType::Activation
@ Activation
armnn::LayerType::Normalization
@ Normalization
armnn::LayerType::Comparison
@ Comparison
armnn::LayerType::Stack
@ Stack
armnn::LayerType::Reshape
@ Reshape
armnn::LayerType::Gather
@ Gather
armnn::LayerType::DepthwiseConvolution2d
@ DepthwiseConvolution2d
armnn::LayerType::Fill
@ Fill
armnn::LayerType::Resize
@ Resize
armnn::LayerType::Rank
@ Rank
armnn::LayerType::LogicalBinary
@ LogicalBinary
armnn::LayerType::UnidirectionalSequenceLstm
@ UnidirectionalSequenceLstm
armnn::LayerType::Pooling2d
@ Pooling2d
armnn::LayerType::Minimum
@ Minimum
armnn::LayerType::Constant
@ Constant
armnn::LayerType::Lstm
@ Lstm
armnn::LayerType::ElementwiseUnary
@ ElementwiseUnary
armnn::LayerType::SpaceToDepth
@ SpaceToDepth
armnn::LayerType::FakeQuantization
@ FakeQuantization
armnn::LayerType::StridedSlice
@ StridedSlice
armnn::LayerType::DetectionPostProcess
@ DetectionPostProcess
armnn::LayerType::Mean
@ Mean
armnn::LayerType::BatchToSpaceNd
@ BatchToSpaceNd
armnn::LayerType::DepthToSpace
@ DepthToSpace
armnn::IWorkloadFactory::CreateWorkload
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
Definition: WorkloadFactory.cpp:1590
armnn::LayerType::Concat
@ Concat
armnn::LayerType::Cast
@ Cast
armnn::LayerType::Convolution3d
@ Convolution3d
armnn::LayerType::Splitter
@ Splitter
armnn::LayerType::LogSoftmax
@ LogSoftmax
armnn::LayerType::Output
@ Output
armnn::LayerType::Multiplication
@ Multiplication
armnn::LayerType::MemImport
@ MemImport
armnn::LayerType::Prelu
@ Prelu
armnn::LayerType::Dequantize
@ Dequantize
armnn::LayerType::PreCompiled
@ PreCompiled