ArmNN
 22.02
IWorkloadFactory Class Referenceabstract

#include <WorkloadFactory.hpp>

Inheritance diagram for IWorkloadFactory:
MockWorkloadFactory RefWorkloadFactory 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< IWorkloadCreateInput (const InputQueueDescriptor &descriptor, const WorkloadInfo &info) 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()

◆ CreateInput()

◆ 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 RefWorkloadFactory, ClWorkloadFactory, NeonWorkloadFactory, and WorkloadFactoryBase.

Definition at line 1541 of file WorkloadFactory.cpp.

References armnn::Activation, armnn::Addition, armnn::ArgMinMax, ARMNN_NO_DEPRECATE_WARN_END, armnn::BatchNormalization, armnn::BatchToSpaceNd, armnn::Cast, armnn::ChannelShuffle, armnn::Comparison, armnn::Concat, armnn::Constant, armnn::ConvertBf16ToFp32, armnn::ConvertFp16ToFp32, armnn::ConvertFp32ToBf16, armnn::ConvertFp32ToFp16, armnn::Convolution2d, armnn::Convolution3d, IWorkloadFactory::CreateInput(), armnn::Debug, armnn::DepthToSpace, armnn::DepthwiseConvolution2d, armnn::Dequantize, armnn::DetectionPostProcess, armnn::Division, armnn::ElementwiseUnary, armnn::FakeQuantization, armnn::Fill, armnn::Floor, armnn::FullyConnected, armnn::Gather, 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 AdditionAfterMaxPoolTest(), AdditionBroadcast1ElementTestImpl(), AdditionBroadcastTestImpl(), IWorkloadFactory::AfterWorkloadsCreated(), BoundedReLuTestCommon(), BoundedReLuUint8UpperAndLowerBoundTest(), CastTest(), CompareActivationTestImpl(), CompareAdditionTest(), CompareBatchNormTest(), CompareConvolution2dTestImpl(), CompareDepthwiseConvolution2dTestImpl(), CompareMultiplicationTest(), ConcatDifferentInputOutputQParamTest(), Concatenate(), ConcatTest(), ConcatUint16Test(), ConcatUint8DifferentQParamsTest(), ConcatUint8Test(), ConstantLinearActivationTestCommon(), ConvertBf16ToFp32Test(), ConvertFp32ToBf16Test(), Convolution1dTestImpl(), Convolution2dPerAxisQuantTest(), ConvertFp32ToFp16Layer::CreateWorkload(), ActivationLayer::CreateWorkload(), RankLayer::CreateWorkload(), FillLayer::CreateWorkload(), CastLayer::CreateWorkload(), L2NormalizationLayer::CreateWorkload(), SwitchLayer::CreateWorkload(), AdditionLayer::CreateWorkload(), AbsLayer::CreateWorkload(), DebugLayer::CreateWorkload(), ConcatLayer::CreateWorkload(), NormalizationLayer::CreateWorkload(), Pooling2dLayer::CreateWorkload(), ShapeLayer::CreateWorkload(), Pooling3dLayer::CreateWorkload(), DequantizeLayer::CreateWorkload(), QuantizeLayer::CreateWorkload(), ReduceLayer::CreateWorkload(), ResizeLayer::CreateWorkload(), ConvertBf16ToFp32Layer::CreateWorkload(), RsqrtLayer::CreateWorkload(), FakeQuantizationLayer::CreateWorkload(), BatchToSpaceNdLayer::CreateWorkload(), ConvertFp16ToFp32Layer::CreateWorkload(), FloorLayer::CreateWorkload(), SliceLayer::CreateWorkload(), SoftmaxLayer::CreateWorkload(), ConvertFp32ToBf16Layer::CreateWorkload(), SplitterLayer::CreateWorkload(), StackLayer::CreateWorkload(), InstanceNormalizationLayer::CreateWorkload(), StridedSliceLayer::CreateWorkload(), LogicalBinaryLayer::CreateWorkload(), TransposeLayer::CreateWorkload(), LogSoftmaxLayer::CreateWorkload(), MaximumLayer::CreateWorkload(), MeanLayer::CreateWorkload(), MinimumLayer::CreateWorkload(), MultiplicationLayer::CreateWorkload(), ComparisonLayer::CreateWorkload(), DepthToSpaceLayer::CreateWorkload(), PadLayer::CreateWorkload(), ArgMinMaxLayer::CreateWorkload(), PreluLayer::CreateWorkload(), DivisionLayer::CreateWorkload(), ElementwiseUnaryLayer::CreateWorkload(), SpaceToBatchNdLayer::CreateWorkload(), SpaceToDepthLayer::CreateWorkload(), GatherLayer::CreateWorkload(), SubtractionLayer::CreateWorkload(), PermuteLayer::CreateWorkload(), ReshapeLayer::CreateWorkload(), ConstantLayer::CreateWorkload(), Convolution3dLayer::CreateWorkload(), ChannelShuffleLayer::CreateWorkload(), DetectionPostProcessLayer::CreateWorkload(), TransposeConvolution2dLayer::CreateWorkload(), DepthwiseConvolution2dLayer::CreateWorkload(), CreateWorkload(), Convolution2dLayer::CreateWorkload(), PreCompiledLayer::CreateWorkload(), FullyConnectedLayer::CreateWorkload(), UnidirectionalSequenceLstmLayer::CreateWorkload(), LstmLayer::CreateWorkload(), BatchNormalizationLayer::CreateWorkload(), QuantizedLstmLayer::CreateWorkload(), QLstmLayer::CreateWorkload(), DepthwiseConvolution2dAsymmetricTestImpl(), DepthwiseConvolution2dDepthMul1TestImpl(), DepthwiseConvolution2dPerAxisQuantTest(), DepthwiseConvolution2dTestImpl(), FakeQuantizationTest(), L2Normalization2dShapeTest(), MirrorPad2dTestCommon(), MirrorPad3dTestCommon(), MirrorPad4dTestCommon(), Pad2dTestCommon(), Pad3dTestCommon(), Pad4dTestCommon(), PadQAsymmTestCommon(), PermuteTensorData(), PreluTest(), RankTest(), ShapeTest(), SimpleActivationTest(), SimpleConvertFp16ToFp32Test(), SimpleConvertFp32ToFp16Test(), SimpleConvolution2dNhwcTestImpl(), SimpleConvolution2dTestImpl(), SimpleConvolution3dTestImpl(), SimpleFillTest(), SimpleFloorTest(), SimpleFullyConnectedTestImpl(), SimplePermuteTestImpl(), SimpleTransposeTestImpl(), SqrtNNTest(), TransposeConvolution2dPerAxisQuantTest(), UnidirectionalSequenceLstmInt8WithCifgWithPeepholeNoProjectionTest(), UnidirectionalSequenceLstmLayerInt8NoCifgWithPeepholeWithProjectionTest(), UnidirectionalSequenceLstmLayerInt8NoCifgWithPeepholeWithProjectionWithLayerNormTest(), UnidirectionalSequenceLstmLayerInt8Test(), UnidirectionalSequenceLstmLayerInt8TimeMajorTest(), UnidirectionalSequenceLstmLayerNoCifgWithPeepholeWithProjectionTest(), UnidirectionalSequenceLstmLayerNoCifgWithPeepholeWithProjectionWithLayerNormTest(), and UnidirectionalSequenceLstmWithCifgWithPeepholeNoProjectionTest().

1544 {
1545  switch(type)
1546  {
1547  case LayerType::Activation :
1548  {
1549  auto activationQueueDescriptor = PolymorphicDowncast<const ActivationQueueDescriptor*>(&descriptor);
1550  return CreateActivation(*activationQueueDescriptor, info);
1551  }
1552  case LayerType::Addition :
1553  {
1554  auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor);
1555  return CreateAddition(*additionQueueDescriptor, info);
1556  }
1557  case LayerType::ArgMinMax :
1558  {
1559  auto argMinMaxQueueDescriptor = PolymorphicDowncast<const ArgMinMaxQueueDescriptor*>(&descriptor);
1560  return CreateArgMinMax(*argMinMaxQueueDescriptor, info);
1561  }
1563  {
1564  auto batchNormQueueDescriptor = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
1565  return CreateBatchNormalization(*batchNormQueueDescriptor, info);
1566  }
1568  {
1569  auto batchToSpaceNdQueueDescriptor
1570  = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
1571  return CreateBatchToSpaceNd(*batchToSpaceNdQueueDescriptor, info);
1572  }
1573  case LayerType::Cast :
1574  {
1575  auto castQueueDescriptor = PolymorphicDowncast<const CastQueueDescriptor*>(&descriptor);
1576  return CreateCast(*castQueueDescriptor, info);
1577  }
1579  {
1580  auto channelShuffleQueueDescriptor
1581  = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
1582  return CreateChannelShuffle(*channelShuffleQueueDescriptor, info);
1583  }
1584  case LayerType::Comparison :
1585  {
1586  auto comparisonQueueDescriptor = PolymorphicDowncast<const ComparisonQueueDescriptor*>(&descriptor);
1587  return CreateComparison(*comparisonQueueDescriptor, info);
1588  }
1589  case LayerType::Concat :
1590  {
1591  auto concatQueueDescriptor = PolymorphicDowncast<const ConcatQueueDescriptor*>(&descriptor);
1592  return CreateConcat(*concatQueueDescriptor, info);
1593  }
1594  case LayerType::Constant :
1595  {
1596  auto constantQueueDescriptor = PolymorphicDowncast<const ConstantQueueDescriptor*>(&descriptor);
1597  return CreateConstant(*constantQueueDescriptor, info);
1598  }
1600  {
1601  auto convertBf16ToFp32QueueDescriptor
1602  = PolymorphicDowncast<const ConvertBf16ToFp32QueueDescriptor*>(&descriptor);
1603  return CreateConvertBf16ToFp32(*convertBf16ToFp32QueueDescriptor, info);
1604  }
1606  {
1607  auto convertFp16ToFp32QueueDescriptor
1608  = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
1609  return CreateConvertFp16ToFp32(*convertFp16ToFp32QueueDescriptor, info);
1610  }
1612  {
1613  auto convertFp32ToBf16QueueDescriptor
1614  = PolymorphicDowncast<const ConvertFp32ToBf16QueueDescriptor*>(&descriptor);
1615  return CreateConvertFp32ToBf16(*convertFp32ToBf16QueueDescriptor, info);
1616  }
1618  {
1619  auto convertFp32ToFp16QueueDescriptor
1620  = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
1621  return CreateConvertFp32ToFp16(*convertFp32ToFp16QueueDescriptor, info);
1622  }
1624  {
1625  auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor);
1626  return CreateConvolution2d(*convolution2dQueueDescriptor, info);
1627  }
1629  {
1630  auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor);
1631  return CreateConvolution3d(*convolution3dQueueDescriptor, info);
1632  }
1633  case LayerType::Debug:
1634  {
1635  auto debugQueueDescriptor = PolymorphicDowncast<const DebugQueueDescriptor*>(&descriptor);
1636  return CreateDebug(*debugQueueDescriptor, info);
1637  }
1639  {
1640  auto depthToSpaceQueueDescriptor = PolymorphicDowncast<const DepthToSpaceQueueDescriptor*>(&descriptor);
1641  return CreateDepthToSpace(*depthToSpaceQueueDescriptor, info);
1642  }
1644  {
1645  auto depthwiseConvolution2DQueueDescriptor
1646  = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
1647  return CreateDepthwiseConvolution2d(*depthwiseConvolution2DQueueDescriptor, info);
1648  }
1649  case LayerType::Dequantize:
1650  {
1651  auto dequantizeQueueDescriptor = PolymorphicDowncast<const DequantizeQueueDescriptor*>(&descriptor);
1652  return CreateDequantize(*dequantizeQueueDescriptor, info);
1653  }
1655  {
1656  auto detectionPostProcessQueueDescriptor
1657  = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
1658  return CreateDetectionPostProcess(*detectionPostProcessQueueDescriptor, info);
1659  }
1660  case LayerType::Division:
1661  {
1662  auto divisionQueueDescriptor = PolymorphicDowncast<const DivisionQueueDescriptor*>(&descriptor);
1663  return CreateDivision(*divisionQueueDescriptor, info);
1664  }
1666  {
1667  auto elementwiseUnaryQueueDescriptor
1668  = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
1669  return CreateElementwiseUnary(*elementwiseUnaryQueueDescriptor, info);
1670 
1671  }
1673  {
1674  auto fakeQuantizationQueueDescriptor
1675  = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor);
1676  return CreateFakeQuantization(*fakeQuantizationQueueDescriptor, info);
1677  }
1678  case LayerType::Fill:
1679  {
1680  auto fillQueueDescriptor = PolymorphicDowncast<const FillQueueDescriptor*>(&descriptor);
1681  return CreateFill(*fillQueueDescriptor, info);
1682  }
1683  case LayerType::Floor:
1684  {
1685  auto floorQueueDescriptor = PolymorphicDowncast<const FloorQueueDescriptor*>(&descriptor);
1686  return CreateFloor(*floorQueueDescriptor, info);
1687  }
1689  {
1690  auto fullyConnectedQueueDescriptor
1691  = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
1692  return CreateFullyConnected(*fullyConnectedQueueDescriptor, info);
1693  }
1694  case LayerType::Gather:
1695  {
1696  auto gatherQueueDescriptor = PolymorphicDowncast<const GatherQueueDescriptor*>(&descriptor);
1697  return CreateGather(*gatherQueueDescriptor, info);
1698  }
1699  case LayerType::Input:
1700  {
1701  auto inputQueueDescriptor = PolymorphicDowncast<const InputQueueDescriptor*>(&descriptor);
1702  return CreateInput(*inputQueueDescriptor, info);
1703  }
1705  {
1706  auto instanceNormalizationQueueDescriptor
1707  = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
1708  return CreateInstanceNormalization(*instanceNormalizationQueueDescriptor, info);
1709  }
1711  {
1712  auto l2NormalizationQueueDescriptor
1713  = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
1714  return CreateL2Normalization(*l2NormalizationQueueDescriptor, info);
1715  }
1717  {
1718  auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor);
1719  return CreateLogicalBinary(*logicalBinaryQueueDescriptor, info);
1720  }
1721  case LayerType::LogSoftmax:
1722  {
1723  auto logSoftmaxQueueDescriptor = PolymorphicDowncast<const LogSoftmaxQueueDescriptor*>(&descriptor);
1724  return CreateLogSoftmax(*logSoftmaxQueueDescriptor, info);
1725  }
1726  case LayerType::Lstm:
1727  {
1728  auto lstmQueueDescriptor = PolymorphicDowncast<const LstmQueueDescriptor*>(&descriptor);
1729  return CreateLstm(*lstmQueueDescriptor, info);
1730  }
1731  case LayerType::Maximum:
1732  {
1733  auto maximumQueueDescriptor = PolymorphicDowncast<const MaximumQueueDescriptor*>(&descriptor);
1734  return CreateMaximum(*maximumQueueDescriptor, info);
1735  }
1736  case LayerType::Mean:
1737  {
1738  auto meanQueueDescriptor = PolymorphicDowncast<const MeanQueueDescriptor*>(&descriptor);
1739  return CreateMean(*meanQueueDescriptor, info);
1740  }
1741  case LayerType::MemCopy:
1742  {
1743  auto memCopyQueueDescriptor = PolymorphicDowncast<const MemCopyQueueDescriptor*>(&descriptor);
1744  return CreateMemCopy(*memCopyQueueDescriptor, info);
1745  }
1746  case LayerType::MemImport:
1747  {
1748  auto memImportQueueDescriptor = PolymorphicDowncast<const MemImportQueueDescriptor*>(&descriptor);
1749  return CreateMemImport(*memImportQueueDescriptor, info);
1750  }
1751  case LayerType::Minimum:
1752  {
1753  auto minimumQueueDescriptor = PolymorphicDowncast<const MinimumQueueDescriptor*>(&descriptor);
1754  return CreateMinimum(*minimumQueueDescriptor, info);
1755  }
1757  {
1758  auto multiplicationQueueDescriptor
1759  = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor);
1760  return CreateMultiplication(*multiplicationQueueDescriptor, info);
1761  }
1763  {
1764  auto normalizationQueueDescriptor = PolymorphicDowncast<const NormalizationQueueDescriptor*>(&descriptor);
1765  return CreateNormalization(*normalizationQueueDescriptor, info);
1766  }
1767  case LayerType::Output:
1768  {
1769  auto outputQueueDescriptor = PolymorphicDowncast<const OutputQueueDescriptor*>(&descriptor);
1770  return CreateOutput(*outputQueueDescriptor, info);
1771  }
1772  case LayerType::Pad:
1773  {
1774  auto padQueueDescriptor = PolymorphicDowncast<const PadQueueDescriptor*>(&descriptor);
1775  return CreatePad(*padQueueDescriptor, info);
1776  }
1777  case LayerType::Permute:
1778  {
1779  auto permuteQueueDescriptor = PolymorphicDowncast<const PermuteQueueDescriptor*>(&descriptor);
1780  return CreatePermute(*permuteQueueDescriptor, info);
1781  }
1782  case LayerType::Pooling2d:
1783  {
1784  auto pooling2dQueueDescriptor = PolymorphicDowncast<const Pooling2dQueueDescriptor*>(&descriptor);
1785  return CreatePooling2d(*pooling2dQueueDescriptor, info);
1786  }
1787  case LayerType::Pooling3d:
1788  {
1789  auto pooling3dQueueDescriptor = PolymorphicDowncast<const Pooling3dQueueDescriptor*>(&descriptor);
1790  return CreatePooling3d(*pooling3dQueueDescriptor, info);
1791  }
1793  {
1794  auto preCompiledQueueDescriptor = PolymorphicDowncast<const PreCompiledQueueDescriptor*>(&descriptor);
1795  return CreatePreCompiled(*preCompiledQueueDescriptor, info);
1796  }
1797  case LayerType::Prelu:
1798  {
1799  auto preluQueueDescriptor = PolymorphicDowncast<const PreluQueueDescriptor*>(&descriptor);
1800  return CreatePrelu(*preluQueueDescriptor, info);
1801  }
1802  case LayerType::QLstm:
1803  {
1804  auto qlstmQueueDescriptor = PolymorphicDowncast<const QLstmQueueDescriptor*>(&descriptor);
1805  return CreateQLstm(*qlstmQueueDescriptor, info);
1806  }
1807  case LayerType::Quantize:
1808  {
1809  auto quantizeQueueDescriptor = PolymorphicDowncast<const QuantizeQueueDescriptor*>(&descriptor);
1810  return CreateQuantize(*quantizeQueueDescriptor, info);
1811  }
1812  case LayerType::Rank:
1813  {
1814  auto rankQueueDescriptor = PolymorphicDowncast<const RankQueueDescriptor*>(&descriptor);
1815  return CreateRank(*rankQueueDescriptor, info);
1816  }
1817  case LayerType::Reduce:
1818  {
1819  auto reduceQueueDescriptor = PolymorphicDowncast<const ReduceQueueDescriptor*>(&descriptor);
1820  return CreateReduce(*reduceQueueDescriptor, info);
1821  }
1822  case LayerType::Reshape:
1823  {
1824  auto reshapeQueueDescriptor = PolymorphicDowncast<const ReshapeQueueDescriptor*>(&descriptor);
1825  return CreateReshape(*reshapeQueueDescriptor, info);
1826  }
1827  case LayerType::Resize:
1828  {
1829  auto resizeQueueDescriptor = PolymorphicDowncast<const ResizeQueueDescriptor*>(&descriptor);
1830  return CreateResize(*resizeQueueDescriptor, info);
1831  }
1832  case LayerType::Shape:
1833  {
1834  auto shapeQueueDescriptor = PolymorphicDowncast<const ShapeQueueDescriptor*>(&descriptor);
1835  return CreateShape(*shapeQueueDescriptor, info);
1836  }
1837  case LayerType::Slice:
1838  {
1839  auto sliceQueueDescriptor = PolymorphicDowncast<const SliceQueueDescriptor*>(&descriptor);
1840  return CreateSlice(*sliceQueueDescriptor, info);
1841  }
1842  case LayerType::Softmax:
1843  {
1844  auto softmaxQueueDescriptor = PolymorphicDowncast<const SoftmaxQueueDescriptor*>(&descriptor);
1845  return CreateSoftmax(*softmaxQueueDescriptor, info);
1846  }
1848  {
1849  auto spaceToBatchNdQueueDescriptor
1850  = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
1851  return CreateSpaceToBatchNd(*spaceToBatchNdQueueDescriptor, info);
1852  }
1854  {
1855  auto spaceToDepthQueueDescriptor = PolymorphicDowncast<const SpaceToDepthQueueDescriptor*>(&descriptor);
1856  return CreateSpaceToDepth(*spaceToDepthQueueDescriptor, info);
1857  }
1858  case LayerType::Splitter:
1859  {
1860  auto splitterQueueDescriptor = PolymorphicDowncast<const SplitterQueueDescriptor*>(&descriptor);
1861  return CreateSplitter(*splitterQueueDescriptor, info);
1862  }
1863  case LayerType::Stack:
1864  {
1865  auto stackQueueDescriptor = PolymorphicDowncast<const StackQueueDescriptor*>(&descriptor);
1866  return CreateStack(*stackQueueDescriptor, info);
1867  }
1869  {
1870  auto stridedSliceQueueDescriptor = PolymorphicDowncast<const StridedSliceQueueDescriptor*>(&descriptor);
1871  return CreateStridedSlice(*stridedSliceQueueDescriptor, info);
1872  }
1874  {
1875  auto subtractionQueueDescriptor = PolymorphicDowncast<const SubtractionQueueDescriptor*>(&descriptor);
1876  return CreateSubtraction(*subtractionQueueDescriptor, info);
1877  }
1878  case LayerType::Transpose:
1879  {
1880  auto transposeQueueDescriptor = PolymorphicDowncast<const TransposeQueueDescriptor*>(&descriptor);
1881  return CreateTranspose(*transposeQueueDescriptor, info);
1882  }
1884  {
1885  auto transposeConvolution2dQueueDescriptor
1886  = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
1887  return CreateTransposeConvolution2d(*transposeConvolution2dQueueDescriptor, info);
1888  }
1890  {
1891  auto unidirectionalSequenceLstmQueueDescriptor
1892  = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor);
1893  return CreateUnidirectionalSequenceLstm(*unidirectionalSequenceLstmQueueDescriptor, info);
1894  }
1895  default:
1896  return nullptr;
1897  }
1898 }
virtual std::unique_ptr< IWorkload > CreateInput(const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const =0

◆ GetBackendId()

◆ IsLayerSupported() [1/4]

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

Definition at line 1498 of file WorkloadFactory.cpp.

Referenced by IWorkloadFactory::AfterWorkloadsCreated(), armnn::AttemptBackendAssignment(), LoadedNetwork::GetOutputTensorInfo(), NeonWorkloadFactory::IsLayerSupported(), ClWorkloadFactory::IsLayerSupported(), and RefWorkloadFactory::IsLayerSupported().

1502 {
1503  return IsLayerConfigurationSupported(backendId, connectableLayer, dataType, outReasonIfUnsupported);
1504 }

◆ IsLayerSupported() [2/4]

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

Definition at line 1506 of file WorkloadFactory.cpp.

1509 {
1510  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1511  return IsLayerConfigurationSupported(layer->GetBackendId(), connectableLayer, dataType, outReasonIfUnsupported);
1512 }

◆ IsLayerSupported() [3/4]

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

Definition at line 1515 of file WorkloadFactory.cpp.

1519 {
1520  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1521  return IsLayerConfigurationSupported(layer->GetBackendId(),
1522  connectableLayer,
1523  dataType,
1524  outReasonIfUnsupported,
1525  modelOptions);
1526 }

◆ IsLayerSupported() [4/4]

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

Definition at line 1528 of file WorkloadFactory.cpp.

References ARMNN_NO_DEPRECATE_WARN_BEGIN.

1533 {
1534  return IsLayerConfigurationSupported(backendId,
1535  connectableLayer,
1536  dataType,
1537  outReasonIfUnsupported,
1538  modelOptions);
1539 }

◆ SupportsSubTensors()


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