ArmNN
 22.11
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()

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

Definition at line 1575 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, 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 IWorkloadFactory::AfterWorkloadsCreated(), ConvertFp32ToFp16Layer::CreateWorkload(), ActivationLayer::CreateWorkload(), QuantizeLayer::CreateWorkload(), RankLayer::CreateWorkload(), FillLayer::CreateWorkload(), AbsLayer::CreateWorkload(), StackLayer::CreateWorkload(), AdditionLayer::CreateWorkload(), ConvertFp32ToBf16Layer::CreateWorkload(), GatherNdLayer::CreateWorkload(), SoftmaxLayer::CreateWorkload(), SliceLayer::CreateWorkload(), ShapeLayer::CreateWorkload(), StridedSliceLayer::CreateWorkload(), InstanceNormalizationLayer::CreateWorkload(), BatchToSpaceNdLayer::CreateWorkload(), L2NormalizationLayer::CreateWorkload(), CastLayer::CreateWorkload(), DebugLayer::CreateWorkload(), NormalizationLayer::CreateWorkload(), DequantizeLayer::CreateWorkload(), Pooling2dLayer::CreateWorkload(), Pooling3dLayer::CreateWorkload(), BatchMatMulLayer::CreateWorkload(), ConcatLayer::CreateWorkload(), FakeQuantizationLayer::CreateWorkload(), ReduceLayer::CreateWorkload(), ResizeLayer::CreateWorkload(), SwitchLayer::CreateWorkload(), ConvertBf16ToFp32Layer::CreateWorkload(), RsqrtLayer::CreateWorkload(), FloorLayer::CreateWorkload(), ConvertFp16ToFp32Layer::CreateWorkload(), SplitterLayer::CreateWorkload(), TransposeLayer::CreateWorkload(), ElementwiseUnaryLayer::CreateWorkload(), SpaceToDepthLayer::CreateWorkload(), GatherLayer::CreateWorkload(), MeanLayer::CreateWorkload(), LogicalBinaryLayer::CreateWorkload(), LogSoftmaxLayer::CreateWorkload(), MaximumLayer::CreateWorkload(), MinimumLayer::CreateWorkload(), MultiplicationLayer::CreateWorkload(), DivisionLayer::CreateWorkload(), ArgMinMaxLayer::CreateWorkload(), ComparisonLayer::CreateWorkload(), PadLayer::CreateWorkload(), SubtractionLayer::CreateWorkload(), PreluLayer::CreateWorkload(), DepthToSpaceLayer::CreateWorkload(), SpaceToBatchNdLayer::CreateWorkload(), ReshapeLayer::CreateWorkload(), ChannelShuffleLayer::CreateWorkload(), PermuteLayer::CreateWorkload(), ConstantLayer::CreateWorkload(), Convolution3dLayer::CreateWorkload(), DetectionPostProcessLayer::CreateWorkload(), TransposeConvolution2dLayer::CreateWorkload(), PreCompiledLayer::CreateWorkload(), FullyConnectedLayer::CreateWorkload(), DepthwiseConvolution2dLayer::CreateWorkload(), LstmLayer::CreateWorkload(), UnidirectionalSequenceLstmLayer::CreateWorkload(), Convolution2dLayer::CreateWorkload(), BatchNormalizationLayer::CreateWorkload(), QuantizedLstmLayer::CreateWorkload(), and QLstmLayer::CreateWorkload().

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

◆ GetBackendId()

◆ IsLayerSupported() [1/4]

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

Definition at line 1532 of file WorkloadFactory.cpp.

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

1536 {
1537  return IsLayerConfigurationSupported(backendId, connectableLayer, dataType, outReasonIfUnsupported);
1538 }

◆ IsLayerSupported() [2/4]

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

Definition at line 1540 of file WorkloadFactory.cpp.

1543 {
1544  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1545  return IsLayerConfigurationSupported(layer->GetBackendId(), connectableLayer, dataType, outReasonIfUnsupported);
1546 }

◆ IsLayerSupported() [3/4]

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

Definition at line 1549 of file WorkloadFactory.cpp.

1553 {
1554  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1555  return IsLayerConfigurationSupported(layer->GetBackendId(),
1556  connectableLayer,
1557  dataType,
1558  outReasonIfUnsupported,
1559  modelOptions);
1560 }

◆ IsLayerSupported() [4/4]

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

Definition at line 1562 of file WorkloadFactory.cpp.

References ARMNN_NO_DEPRECATE_WARN_BEGIN.

1567 {
1568  return IsLayerConfigurationSupported(backendId,
1569  connectableLayer,
1570  dataType,
1571  outReasonIfUnsupported,
1572  modelOptions);
1573 }

◆ SupportsSubTensors()


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