ArmNN
 21.02
SerializerStrategy Class Reference

#include <Serializer.hpp>

Inheritance diagram for SerializerStrategy:
IStrategy

Public Member Functions

void ExecuteStrategy (const armnn::IConnectableLayer *layer, const armnn::BaseDescriptor &descriptor, const std::vector< armnn::ConstTensor > &constants, const char *name, const armnn::LayerBindingId id) override
 
 SerializerStrategy ()
 
 ~SerializerStrategy ()
 
flatbuffers::FlatBufferBuilder & GetFlatBufferBuilder ()
 
std::vector< int > & GetInputIds ()
 
std::vector< int > & GetOutputIds ()
 
std::vector< flatbuffers::Offset< armnnSerializer::AnyLayer > > & GetSerializedLayers ()
 
flatbuffers::Offset< armnnSerializer::FeatureCompatibilityVersions > GetVersionTable ()
 
- Public Member Functions inherited from IStrategy
virtual void ExecuteStrategy (const armnn::IConnectableLayer *layer, const armnn::BaseDescriptor &descriptor, const std::vector< armnn::ConstTensor > &constants, const char *name, const armnn::LayerBindingId id=0)=0
 
virtual void FinishStrategy ()
 

Additional Inherited Members

- Protected Member Functions inherited from IStrategy
 IStrategy ()
 
virtual ~IStrategy ()
 

Detailed Description

Definition at line 22 of file Serializer.hpp.

Constructor & Destructor Documentation

◆ SerializerStrategy()

SerializerStrategy ( )
inline

Definition at line 31 of file Serializer.hpp.

31 : m_layerId(0) {}

◆ ~SerializerStrategy()

~SerializerStrategy ( )
inline

Definition at line 32 of file Serializer.hpp.

32 {}

Member Function Documentation

◆ ExecuteStrategy()

void ExecuteStrategy ( const armnn::IConnectableLayer layer,
const armnn::BaseDescriptor descriptor,
const std::vector< armnn::ConstTensor > &  constants,
const char *  name,
const armnn::LayerBindingId  id 
)
override

Definition at line 1812 of file Serializer.cpp.

References armnn::Activation, armnn::Addition, armnn::ArgMinMax, armnn::BatchNormalization, armnn::BatchToSpaceNd, armnn::Comparison, armnn::Concat, armnn::Constant, armnn::Convolution2d, armnn::DepthToSpace, armnn::DepthwiseConvolution2d, armnn::Dequantize, armnn::DetectionPostProcess, armnn::Division, armnn::ElementwiseUnary, armnn::Fill, armnn::Floor, armnn::FullyConnected, armnn::Gather, IConnectableLayer::GetName(), IConnectableLayer::GetType(), armnn::IgnoreUnused(), armnn::Input, armnn::InstanceNormalization, armnn::L2Normalization, armnn::LogicalBinary, armnn::LogSoftmax, armnn::Lstm, armnn::Maximum, armnn::Mean, armnn::Merge, armnn::Minimum, armnn::Multiplication, armnn::Normalization, armnn::Output, armnn::Pad, armnn::Permute, armnn::Pooling2d, armnn::Prelu, armnn::QLstm, armnn::Quantize, armnn::QuantizedLstm, armnn::Rank, armnn::Reduce, armnn::Reshape, armnn::Resize, armnn::Slice, armnn::Softmax, armnn::SpaceToBatchNd, armnn::SpaceToDepth, armnn::Splitter, armnn::Stack, armnn::StandIn, armnn::StridedSlice, armnn::Subtraction, armnn::Switch, armnn::Transpose, and armnn::TransposeConvolution2d.

1817 {
1818  IgnoreUnused(constants);
1819 
1820  switch (layer->GetType())
1821  {
1823  {
1824  const armnn::ActivationDescriptor& layerDescriptor =
1825  static_cast<const armnn::ActivationDescriptor&>(descriptor);
1826  SerializeActivationLayer(layer, layerDescriptor, name);
1827  break;
1828  }
1830  {
1831  SerializeAdditionLayer(layer, name);
1832  break;
1833  }
1835  {
1836  const armnn::ArgMinMaxDescriptor& layerDescriptor =
1837  static_cast<const armnn::ArgMinMaxDescriptor&>(descriptor);
1838  SerializeArgMinMaxLayer(layer, layerDescriptor, name);
1839  break;
1840  }
1842  {
1843  const armnn::BatchNormalizationDescriptor& layerDescriptor =
1844  static_cast<const armnn::BatchNormalizationDescriptor&>(descriptor);
1845  SerializeBatchNormalizationLayer(layer,
1846  layerDescriptor,
1847  constants,
1848  name);
1849  break;
1850  }
1852  {
1853  const armnn::BatchToSpaceNdDescriptor& layerDescriptor =
1854  static_cast<const armnn::BatchToSpaceNdDescriptor&>(descriptor);
1855  SerializeBatchToSpaceNdLayer(layer,
1856  layerDescriptor,
1857  name);
1858  break;
1859  }
1861  {
1862  const armnn::ComparisonDescriptor& layerDescriptor =
1863  static_cast<const armnn::ComparisonDescriptor&>(descriptor);
1864  SerializeComparisonLayer(layer,
1865  layerDescriptor,
1866  name);
1867  break;
1868  }
1870  {
1871  const armnn::ConcatDescriptor& layerDescriptor =
1872  static_cast<const armnn::ConcatDescriptor&>(descriptor);
1873  SerializeConcatLayer(layer,
1874  layerDescriptor,
1875  name);
1876  break;
1877  }
1879  {
1880  SerializeConstantLayer(layer,
1881  constants,
1882  name);
1883  break;
1884  }
1886  {
1887  const armnn::Convolution2dDescriptor& layerDescriptor =
1888  static_cast<const armnn::Convolution2dDescriptor&>(descriptor);
1889  SerializeConvolution2dLayer(layer,
1890  layerDescriptor,
1891  constants,
1892  name);
1893  break;
1894  }
1896  {
1897  const armnn::DepthToSpaceDescriptor& layerDescriptor =
1898  static_cast<const armnn::DepthToSpaceDescriptor&>(descriptor);
1899  SerializeDepthToSpaceLayer(layer,
1900  layerDescriptor,
1901  name);
1902  break;
1903  }
1905  {
1906  const armnn::DepthwiseConvolution2dDescriptor& layerDescriptor =
1907  static_cast<const armnn::DepthwiseConvolution2dDescriptor&>(descriptor);
1908  SerializeDepthwiseConvolution2dLayer(layer,
1909  layerDescriptor,
1910  constants,
1911  name);
1912  break;
1913  }
1915  {
1916  SerializeDequantizeLayer(layer,
1917  name);
1918  break;
1919  }
1921  {
1922  const armnn::DetectionPostProcessDescriptor& layerDescriptor =
1923  static_cast<const armnn::DetectionPostProcessDescriptor&>(descriptor);
1924  SerializeDetectionPostProcessLayer(layer, layerDescriptor, constants, name);
1925  break;
1926  }
1928  {
1929  SerializeDivisionLayer(layer, name);
1930  break;
1931  }
1933  {
1934  const armnn::ElementwiseUnaryDescriptor& layerDescriptor =
1935  static_cast<const armnn::ElementwiseUnaryDescriptor&>(descriptor);
1936  SerializeElementwiseUnaryLayer(layer, layerDescriptor, name);
1937  break;
1938  }
1939  case armnn::LayerType::Fill :
1940  {
1941  const armnn::FillDescriptor& layerDescriptor =
1942  static_cast<const armnn::FillDescriptor&>(descriptor);
1943  SerializeFillLayer(layer, layerDescriptor, name);
1944  break;
1945  }
1947  {
1948  SerializeFloorLayer(layer, name);
1949  break;
1950  }
1952  {
1953  const armnn::FullyConnectedDescriptor& layerDescriptor =
1954  static_cast<const armnn::FullyConnectedDescriptor&>(descriptor);
1955  SerializeFullyConnectedLayer(layer, layerDescriptor, constants, name);
1956  break;
1957  }
1959  {
1960  const armnn::GatherDescriptor& layerDescriptor =
1961  static_cast<const armnn::GatherDescriptor&>(descriptor);
1962  SerializeGatherLayer(layer, layerDescriptor, name);
1963  break;
1964  }
1966  {
1967  SerializeInputLayer(layer, id, name);
1968  break;
1969  }
1971  {
1972  const armnn::InstanceNormalizationDescriptor& layerDescriptor =
1973  static_cast<const armnn::InstanceNormalizationDescriptor&>(descriptor);
1974  SerializeInstanceNormalizationLayer(layer, layerDescriptor, name);
1975  break;
1976  }
1978  {
1979  const armnn::L2NormalizationDescriptor& layerDescriptor =
1980  static_cast<const armnn::L2NormalizationDescriptor&>(descriptor);
1981  SerializeL2NormalizationLayer(layer, layerDescriptor, name);
1982  break;
1983  }
1985  {
1986  const armnn::LogicalBinaryDescriptor& layerDescriptor =
1987  static_cast<const armnn::LogicalBinaryDescriptor&>(descriptor);
1988  SerializeLogicalBinaryLayer(layer, layerDescriptor, name);
1989  break;
1990  }
1992  {
1993  const armnn::LogSoftmaxDescriptor& layerDescriptor =
1994  static_cast<const armnn::LogSoftmaxDescriptor&>(descriptor);
1995  SerializeLogSoftmaxLayer(layer, layerDescriptor, name);
1996  break;
1997  }
1998  case armnn::LayerType::Lstm :
1999  {
2000  const armnn::LstmDescriptor& layerDescriptor =
2001  static_cast<const armnn::LstmDescriptor&>(descriptor);
2002  SerializeLstmLayer(layer, layerDescriptor, constants, name);
2003  break;
2004  }
2006  {
2007  const armnn::QLstmDescriptor& layerDescriptor =
2008  static_cast<const armnn::QLstmDescriptor&>(descriptor);
2009  SerializeQLstmLayer(layer, layerDescriptor, constants, name);
2010  break;
2011  }
2013  {
2014  SerializeMaximumLayer(layer, name);
2015  break;
2016  }
2017  case armnn::LayerType::Mean :
2018  {
2019  const armnn::MeanDescriptor& layerDescriptor =
2020  static_cast<const armnn::MeanDescriptor&>(descriptor);
2021  SerializeMeanLayer(layer, layerDescriptor, name);
2022  break;
2023  }
2025  {
2026  SerializeMergeLayer(layer, name);
2027  break;
2028  }
2030  {
2031  SerializeMinimumLayer(layer, name);
2032  break;
2033  }
2035  {
2036  SerializeMultiplicationLayer(layer, name);
2037  break;
2038  }
2040  {
2041  const armnn::NormalizationDescriptor& layerDescriptor =
2042  static_cast<const armnn::NormalizationDescriptor&>(descriptor);
2043  SerializeNormalizationLayer(layer, layerDescriptor, name);
2044  break;
2045  }
2047  {
2048  SerializeOutputLayer(layer, id, name);
2049  break;
2050  }
2051  case armnn::LayerType::Pad :
2052  {
2053  const armnn::PadDescriptor& layerDescriptor =
2054  static_cast<const armnn::PadDescriptor&>(descriptor);
2055  SerializePadLayer(layer, layerDescriptor, name);
2056  break;
2057  }
2059  {
2060  const armnn::PermuteDescriptor& layerDescriptor =
2061  static_cast<const armnn::PermuteDescriptor&>(descriptor);
2062  SerializePermuteLayer(layer, layerDescriptor, name);
2063  break;
2064  }
2066  {
2067  const armnn::Pooling2dDescriptor& layerDescriptor =
2068  static_cast<const armnn::Pooling2dDescriptor&>(descriptor);
2069  SerializePooling2dLayer(layer, layerDescriptor, name);
2070  break;
2071  }
2073  {
2074  SerializePreluLayer(layer, name);
2075  break;
2076  }
2078  {
2079  SerializeQuantizeLayer(layer, name);
2080  break;
2081  }
2083  SerializeQuantizedLstmLayer(layer, constants, name);
2084  break;
2086  {
2087  const armnn::ReshapeDescriptor &layerDescriptor =
2088  static_cast<const armnn::ReshapeDescriptor &>(descriptor);
2089  SerializeReshapeLayer(layer, layerDescriptor, name);
2090  break;
2091  }
2093  {
2094  SerializeRankLayer(layer, name);
2095  break;
2096  }
2098  {
2099  const armnn::ReduceDescriptor& layerDescriptor =
2100  static_cast<const armnn::ReduceDescriptor&>(descriptor);
2101  SerializeReduceLayer(layer, layerDescriptor, name);
2102  break;
2103  }
2105  {
2106  const armnn::ResizeDescriptor& layerDescriptor =
2107  static_cast<const armnn::ResizeDescriptor&>(descriptor);
2108  SerializeResizeLayer(layer, layerDescriptor, name);
2109  break;
2110  }
2112  {
2113  const armnn::SliceDescriptor& layerDescriptor =
2114  static_cast<const armnn::SliceDescriptor&>(descriptor);
2115  SerializeSliceLayer(layer, layerDescriptor, name);
2116  break;
2117  }
2119  {
2120  const armnn::SoftmaxDescriptor& layerDescriptor =
2121  static_cast<const armnn::SoftmaxDescriptor&>(descriptor);
2122  SerializeSoftmaxLayer(layer, layerDescriptor, name);
2123  break;
2124  }
2126  {
2127  const armnn::SpaceToBatchNdDescriptor& layerDescriptor =
2128  static_cast<const armnn::SpaceToBatchNdDescriptor&>(descriptor);
2129  SerializeSpaceToBatchNdLayer(layer, layerDescriptor, name);
2130  break;
2131  }
2133  {
2134  const armnn::SpaceToDepthDescriptor& layerDescriptor =
2135  static_cast<const armnn::SpaceToDepthDescriptor&>(descriptor);
2136  SerializeSpaceToDepthLayer(layer, layerDescriptor, name);
2137  break;
2138  }
2140  {
2141  const armnn::SplitterDescriptor& layerDescriptor =
2142  static_cast<const armnn::SplitterDescriptor&>(descriptor);
2143  SerializeSplitterLayer(layer, layerDescriptor, name);
2144  break;
2145  }
2147  {
2148  const armnn::StackDescriptor& layerDescriptor =
2149  static_cast<const armnn::StackDescriptor&>(descriptor);
2150  SerializeStackLayer(layer, layerDescriptor, name);
2151  break;
2152  }
2154  {
2155  const armnn::StandInDescriptor& layerDescriptor =
2156  static_cast<const armnn::StandInDescriptor&>(descriptor);
2157  SerializeStandInLayer(layer, layerDescriptor, name);
2158  break;
2159  }
2161  {
2162  const armnn::StridedSliceDescriptor& layerDescriptor =
2163  static_cast<const armnn::StridedSliceDescriptor&>(descriptor);
2164  SerializeStridedSliceLayer(layer, layerDescriptor, name);
2165  break;
2166  }
2168  {
2169  SerializeSubtractionLayer(layer, name);
2170  break;
2171  }
2173  {
2174  SerializeSwitchLayer(layer, name);
2175  break;
2176  }
2178  {
2179  const armnn::TransposeDescriptor& layerDescriptor =
2180  static_cast<const armnn::TransposeDescriptor&>(descriptor);
2181  SerializeTransposeLayer(layer, layerDescriptor, name);
2182  break;
2183  }
2185  {
2186  const armnn::TransposeConvolution2dDescriptor& layerDescriptor =
2187  static_cast<const armnn::TransposeConvolution2dDescriptor&>(descriptor);
2188  SerializeTransposeConvolution2dLayer(layer, layerDescriptor, constants, name);
2189  break;
2190  }
2191  default:
2192  {
2194  fmt::format("A layer of unknown type was given to the serializer. Layer name: {}; Layer Id: {}",
2195  layer->GetName(),
2196  id));
2197  }
2198  }
2199 }
A ViewsDescriptor for the SplitterLayer.
A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer.
A ReshapeDescriptor for the ReshapeLayer.
A ComparisonDescriptor for the ComparisonLayer.
Definition: Descriptors.hpp:78
A Convolution2dDescriptor for the Convolution2dLayer.
A LogicalBinaryDescriptor for the LogicalBinaryLayer.
void IgnoreUnused(Ts &&...)
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
A ResizeDescriptor for the ResizeLayer.
A StackDescriptor for the StackLayer.
A PadDescriptor for the PadLayer.
An LstmDescriptor for the LstmLayer.
A L2NormalizationDescriptor for the L2NormalizationLayer.
An ArgMinMaxDescriptor for ArgMinMaxLayer.
Definition: Descriptors.hpp:56
An OriginsDescriptor for the ConcatLayer.
A ReduceDescriptor for the REDUCE operators.
A FullyConnectedDescriptor for the FullyConnectedLayer.
A GatherDescriptor for the GatherLayer.
A StandInDescriptor for the StandIn layer.
A QLstmDescriptor for the QLstmLayer.
An ActivationDescriptor for the ActivationLayer.
Definition: Descriptors.hpp:25
A SliceDescriptor for the SliceLayer.
virtual LayerType GetType() const =0
Returns the armnn::LayerType of this layer.
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
Definition: Descriptors.hpp:98
A MeanDescriptor for the MeanLayer.
A TransposeDescriptor for the TransposeLayer.
A StridedSliceDescriptor for the StridedSliceLayer.
virtual const char * GetName() const =0
Returns the name of the layer.
A Pooling2dDescriptor for the Pooling2dLayer.
A NormalizationDescriptor for the NormalizationLayer.
An InstanceNormalizationDescriptor for InstanceNormalizationLayer.
A SoftmaxDescriptor for the SoftmaxLayer.
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A FillDescriptor for the FillLayer.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
A PermuteDescriptor for the PermuteLayer.

◆ GetFlatBufferBuilder()

flatbuffers::FlatBufferBuilder& GetFlatBufferBuilder ( )
inline

Definition at line 34 of file Serializer.hpp.

35  {
36  return m_flatBufferBuilder;
37  }

◆ GetInputIds()

std::vector<int>& GetInputIds ( )
inline

Definition at line 39 of file Serializer.hpp.

40  {
41  return m_inputIds;
42  }

◆ GetOutputIds()

std::vector<int>& GetOutputIds ( )
inline

Definition at line 44 of file Serializer.hpp.

45  {
46  return m_outputIds;
47  }

◆ GetSerializedLayers()

std::vector<flatbuffers::Offset<armnnSerializer::AnyLayer> >& GetSerializedLayers ( )
inline

Definition at line 49 of file Serializer.hpp.

References ARMNN_DEPRECATED_MSG, and SerializerStrategy::GetVersionTable().

50  {
51  return m_serializedLayers;
52  }

◆ GetVersionTable()

flatbuffers::Offset< armnnSerializer::FeatureCompatibilityVersions > GetVersionTable ( )

Definition at line 1761 of file Serializer.cpp.

References IOutputSlot::CalculateIndexOnOwner(), armnnSerializer::CreateFeatureCompatibilityVersions(), armnnSerializer::CreateInputSlot(), armnnSerializer::CreateOutputSlot(), armnnSerializer::CreateTensorInfo(), IInputSlot::GetConnection(), IConnectableLayer::GetInputSlot(), IConnectableLayer::GetNumInputSlots(), IConnectableLayer::GetNumOutputSlots(), IConnectableLayer::GetOutputSlot(), IOutputSlot::GetOwningLayerGuid(), and IOutputSlot::GetTensorInfo().

Referenced by SerializerStrategy::GetSerializedLayers().

1762 {
1763  flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> versionsTable =
1765  m_flatBufferBuilder,
1766  1 // Binding ids scheme version
1767  );
1768  return versionsTable;
1769 }
flatbuffers::Offset< FeatureCompatibilityVersions > CreateFeatureCompatibilityVersions(flatbuffers::FlatBufferBuilder &_fbb, uint32_t bindingIdsScheme=0)

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