ArmNN
 22.05
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 1559 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(), ConcatTestImpl(), ConcatUint16Test(), ConcatUint8DifferentQParamsTest(), ConcatUint8Test(), ConstantLinearActivationTestCommon(), ConvertBf16ToFp32Test(), ConvertFp32ToBf16Test(), Convolution1dTestImpl(), Convolution2dPerAxisQuantTest(), ConvertFp32ToFp16Layer::CreateWorkload(), FillLayer::CreateWorkload(), RankLayer::CreateWorkload(), ActivationLayer::CreateWorkload(), CastLayer::CreateWorkload(), InstanceNormalizationLayer::CreateWorkload(), SwitchLayer::CreateWorkload(), L2NormalizationLayer::CreateWorkload(), AbsLayer::CreateWorkload(), AdditionLayer::CreateWorkload(), DebugLayer::CreateWorkload(), ConcatLayer::CreateWorkload(), NormalizationLayer::CreateWorkload(), DequantizeLayer::CreateWorkload(), Pooling3dLayer::CreateWorkload(), Pooling2dLayer::CreateWorkload(), QuantizeLayer::CreateWorkload(), ConvertBf16ToFp32Layer::CreateWorkload(), ReduceLayer::CreateWorkload(), FakeQuantizationLayer::CreateWorkload(), ResizeLayer::CreateWorkload(), RsqrtLayer::CreateWorkload(), BatchToSpaceNdLayer::CreateWorkload(), ConvertFp16ToFp32Layer::CreateWorkload(), FloorLayer::CreateWorkload(), ShapeLayer::CreateWorkload(), SliceLayer::CreateWorkload(), SoftmaxLayer::CreateWorkload(), ConvertFp32ToBf16Layer::CreateWorkload(), SplitterLayer::CreateWorkload(), GatherNdLayer::CreateWorkload(), StackLayer::CreateWorkload(), StridedSliceLayer::CreateWorkload(), SubtractionLayer::CreateWorkload(), TransposeLayer::CreateWorkload(), LogicalBinaryLayer::CreateWorkload(), LogSoftmaxLayer::CreateWorkload(), MaximumLayer::CreateWorkload(), MeanLayer::CreateWorkload(), MinimumLayer::CreateWorkload(), ComparisonLayer::CreateWorkload(), MultiplicationLayer::CreateWorkload(), DepthToSpaceLayer::CreateWorkload(), PadLayer::CreateWorkload(), ArgMinMaxLayer::CreateWorkload(), PreluLayer::CreateWorkload(), ElementwiseUnaryLayer::CreateWorkload(), DivisionLayer::CreateWorkload(), SpaceToBatchNdLayer::CreateWorkload(), SpaceToDepthLayer::CreateWorkload(), GatherLayer::CreateWorkload(), PermuteLayer::CreateWorkload(), ConstantLayer::CreateWorkload(), ReshapeLayer::CreateWorkload(), Convolution3dLayer::CreateWorkload(), ChannelShuffleLayer::CreateWorkload(), DetectionPostProcessLayer::CreateWorkload(), TransposeConvolution2dLayer::CreateWorkload(), CreateWorkload(), PreCompiledLayer::CreateWorkload(), DepthwiseConvolution2dLayer::CreateWorkload(), FullyConnectedLayer::CreateWorkload(), UnidirectionalSequenceLstmLayer::CreateWorkload(), Convolution2dLayer::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().

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

◆ IsLayerSupported() [2/4]

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

Definition at line 1524 of file WorkloadFactory.cpp.

1527 {
1528  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1529  return IsLayerConfigurationSupported(layer->GetBackendId(), connectableLayer, dataType, outReasonIfUnsupported);
1530 }

◆ IsLayerSupported() [3/4]

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

Definition at line 1533 of file WorkloadFactory.cpp.

1537 {
1538  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1539  return IsLayerConfigurationSupported(layer->GetBackendId(),
1540  connectableLayer,
1541  dataType,
1542  outReasonIfUnsupported,
1543  modelOptions);
1544 }

◆ IsLayerSupported() [4/4]

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

Definition at line 1546 of file WorkloadFactory.cpp.

References ARMNN_NO_DEPRECATE_WARN_BEGIN.

1551 {
1552  return IsLayerConfigurationSupported(backendId,
1553  connectableLayer,
1554  dataType,
1555  outReasonIfUnsupported,
1556  modelOptions);
1557 }

◆ SupportsSubTensors()


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