ArmNN
 23.02
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 1561 of file WorkloadFactory.cpp.

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

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::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(), CastLayer::CreateWorkload(), SplitterLayer::CreateWorkload(), DebugLayer::CreateWorkload(), NormalizationLayer::CreateWorkload(), BatchMatMulLayer::CreateWorkload(), SliceLayer::CreateWorkload(), DequantizeLayer::CreateWorkload(), RsqrtLayer::CreateWorkload(), Pooling2dLayer::CreateWorkload(), Pooling3dLayer::CreateWorkload(), ConcatLayer::CreateWorkload(), SwitchLayer::CreateWorkload(), ConvertFp16ToFp32Layer::CreateWorkload(), FakeQuantizationLayer::CreateWorkload(), FloorLayer::CreateWorkload(), ResizeLayer::CreateWorkload(), ShapeLayer::CreateWorkload(), AdditionLayer::CreateWorkload(), BatchToSpaceNdLayer::CreateWorkload(), SoftmaxLayer::CreateWorkload(), GatherNdLayer::CreateWorkload(), InstanceNormalizationLayer::CreateWorkload(), StackLayer::CreateWorkload(), L2NormalizationLayer::CreateWorkload(), SpaceToDepthLayer::CreateWorkload(), MaximumLayer::CreateWorkload(), SubtractionLayer::CreateWorkload(), LogicalBinaryLayer::CreateWorkload(), TransposeLayer::CreateWorkload(), LogSoftmaxLayer::CreateWorkload(), ArgMinMaxLayer::CreateWorkload(), MeanLayer::CreateWorkload(), MinimumLayer::CreateWorkload(), DepthToSpaceLayer::CreateWorkload(), ComparisonLayer::CreateWorkload(), PadLayer::CreateWorkload(), PermuteLayer::CreateWorkload(), ElementwiseUnaryLayer::CreateWorkload(), GatherLayer::CreateWorkload(), DivisionLayer::CreateWorkload(), PreluLayer::CreateWorkload(), ReduceLayer::CreateWorkload(), SpaceToBatchNdLayer::CreateWorkload(), MultiplicationLayer::CreateWorkload(), ChannelShuffleLayer::CreateWorkload(), ReshapeLayer::CreateWorkload(), ConstantLayer::CreateWorkload(), FullyConnectedLayer::CreateWorkload(), Convolution3dLayer::CreateWorkload(), Convolution2dLayer::CreateWorkload(), DepthwiseConvolution2dLayer::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 1518 of file WorkloadFactory.cpp.

1522 {
1523  return IsLayerConfigurationSupported(backendId, connectableLayer, dataType, outReasonIfUnsupported);
1524 }

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 1548 of file WorkloadFactory.cpp.

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

◆ IsLayerSupported() [3/4]

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

Definition at line 1526 of file WorkloadFactory.cpp.

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

◆ IsLayerSupported() [4/4]

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

Definition at line 1535 of file WorkloadFactory.cpp.

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

◆ 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::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::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