ArmNN
 21.05
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 1836 of file Serializer.cpp.

References armnn::Activation, armnn::Addition, armnn::ArgMinMax, armnn::BatchNormalization, armnn::BatchToSpaceNd, armnn::Cast, 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.

1841 {
1842  IgnoreUnused(constants);
1843 
1844  switch (layer->GetType())
1845  {
1847  {
1848  const armnn::ActivationDescriptor& layerDescriptor =
1849  static_cast<const armnn::ActivationDescriptor&>(descriptor);
1850  SerializeActivationLayer(layer, layerDescriptor, name);
1851  break;
1852  }
1854  {
1855  SerializeAdditionLayer(layer, name);
1856  break;
1857  }
1859  {
1860  const armnn::ArgMinMaxDescriptor& layerDescriptor =
1861  static_cast<const armnn::ArgMinMaxDescriptor&>(descriptor);
1862  SerializeArgMinMaxLayer(layer, layerDescriptor, name);
1863  break;
1864  }
1866  {
1867  const armnn::BatchNormalizationDescriptor& layerDescriptor =
1868  static_cast<const armnn::BatchNormalizationDescriptor&>(descriptor);
1869  SerializeBatchNormalizationLayer(layer,
1870  layerDescriptor,
1871  constants,
1872  name);
1873  break;
1874  }
1876  {
1877  const armnn::BatchToSpaceNdDescriptor& layerDescriptor =
1878  static_cast<const armnn::BatchToSpaceNdDescriptor&>(descriptor);
1879  SerializeBatchToSpaceNdLayer(layer,
1880  layerDescriptor,
1881  name);
1882  break;
1883  }
1884  case armnn::LayerType::Cast :
1885  {
1886  SerializeCastLayer(layer, name);
1887  break;
1888  }
1890  {
1891  const armnn::ComparisonDescriptor& layerDescriptor =
1892  static_cast<const armnn::ComparisonDescriptor&>(descriptor);
1893  SerializeComparisonLayer(layer,
1894  layerDescriptor,
1895  name);
1896  break;
1897  }
1899  {
1900  const armnn::ConcatDescriptor& layerDescriptor =
1901  static_cast<const armnn::ConcatDescriptor&>(descriptor);
1902  SerializeConcatLayer(layer,
1903  layerDescriptor,
1904  name);
1905  break;
1906  }
1908  {
1909  SerializeConstantLayer(layer,
1910  constants,
1911  name);
1912  break;
1913  }
1915  {
1916  const armnn::Convolution2dDescriptor& layerDescriptor =
1917  static_cast<const armnn::Convolution2dDescriptor&>(descriptor);
1918  SerializeConvolution2dLayer(layer,
1919  layerDescriptor,
1920  constants,
1921  name);
1922  break;
1923  }
1925  {
1926  const armnn::DepthToSpaceDescriptor& layerDescriptor =
1927  static_cast<const armnn::DepthToSpaceDescriptor&>(descriptor);
1928  SerializeDepthToSpaceLayer(layer,
1929  layerDescriptor,
1930  name);
1931  break;
1932  }
1934  {
1935  const armnn::DepthwiseConvolution2dDescriptor& layerDescriptor =
1936  static_cast<const armnn::DepthwiseConvolution2dDescriptor&>(descriptor);
1937  SerializeDepthwiseConvolution2dLayer(layer,
1938  layerDescriptor,
1939  constants,
1940  name);
1941  break;
1942  }
1944  {
1945  SerializeDequantizeLayer(layer,
1946  name);
1947  break;
1948  }
1950  {
1951  const armnn::DetectionPostProcessDescriptor& layerDescriptor =
1952  static_cast<const armnn::DetectionPostProcessDescriptor&>(descriptor);
1953  SerializeDetectionPostProcessLayer(layer, layerDescriptor, constants, name);
1954  break;
1955  }
1957  {
1958  SerializeDivisionLayer(layer, name);
1959  break;
1960  }
1962  {
1963  const armnn::ElementwiseUnaryDescriptor& layerDescriptor =
1964  static_cast<const armnn::ElementwiseUnaryDescriptor&>(descriptor);
1965  SerializeElementwiseUnaryLayer(layer, layerDescriptor, name);
1966  break;
1967  }
1968  case armnn::LayerType::Fill :
1969  {
1970  const armnn::FillDescriptor& layerDescriptor =
1971  static_cast<const armnn::FillDescriptor&>(descriptor);
1972  SerializeFillLayer(layer, layerDescriptor, name);
1973  break;
1974  }
1976  {
1977  SerializeFloorLayer(layer, name);
1978  break;
1979  }
1981  {
1982  const armnn::FullyConnectedDescriptor& layerDescriptor =
1983  static_cast<const armnn::FullyConnectedDescriptor&>(descriptor);
1984  SerializeFullyConnectedLayer(layer, layerDescriptor, constants, name);
1985  break;
1986  }
1988  {
1989  const armnn::GatherDescriptor& layerDescriptor =
1990  static_cast<const armnn::GatherDescriptor&>(descriptor);
1991  SerializeGatherLayer(layer, layerDescriptor, name);
1992  break;
1993  }
1995  {
1996  SerializeInputLayer(layer, id, name);
1997  break;
1998  }
2000  {
2001  const armnn::InstanceNormalizationDescriptor& layerDescriptor =
2002  static_cast<const armnn::InstanceNormalizationDescriptor&>(descriptor);
2003  SerializeInstanceNormalizationLayer(layer, layerDescriptor, name);
2004  break;
2005  }
2007  {
2008  const armnn::L2NormalizationDescriptor& layerDescriptor =
2009  static_cast<const armnn::L2NormalizationDescriptor&>(descriptor);
2010  SerializeL2NormalizationLayer(layer, layerDescriptor, name);
2011  break;
2012  }
2014  {
2015  const armnn::LogicalBinaryDescriptor& layerDescriptor =
2016  static_cast<const armnn::LogicalBinaryDescriptor&>(descriptor);
2017  SerializeLogicalBinaryLayer(layer, layerDescriptor, name);
2018  break;
2019  }
2021  {
2022  const armnn::LogSoftmaxDescriptor& layerDescriptor =
2023  static_cast<const armnn::LogSoftmaxDescriptor&>(descriptor);
2024  SerializeLogSoftmaxLayer(layer, layerDescriptor, name);
2025  break;
2026  }
2027  case armnn::LayerType::Lstm :
2028  {
2029  const armnn::LstmDescriptor& layerDescriptor =
2030  static_cast<const armnn::LstmDescriptor&>(descriptor);
2031  SerializeLstmLayer(layer, layerDescriptor, constants, name);
2032  break;
2033  }
2035  {
2036  const armnn::QLstmDescriptor& layerDescriptor =
2037  static_cast<const armnn::QLstmDescriptor&>(descriptor);
2038  SerializeQLstmLayer(layer, layerDescriptor, constants, name);
2039  break;
2040  }
2042  {
2043  SerializeMaximumLayer(layer, name);
2044  break;
2045  }
2046  case armnn::LayerType::Mean :
2047  {
2048  const armnn::MeanDescriptor& layerDescriptor =
2049  static_cast<const armnn::MeanDescriptor&>(descriptor);
2050  SerializeMeanLayer(layer, layerDescriptor, name);
2051  break;
2052  }
2054  {
2055  SerializeMergeLayer(layer, name);
2056  break;
2057  }
2059  {
2060  SerializeMinimumLayer(layer, name);
2061  break;
2062  }
2064  {
2065  SerializeMultiplicationLayer(layer, name);
2066  break;
2067  }
2069  {
2070  const armnn::NormalizationDescriptor& layerDescriptor =
2071  static_cast<const armnn::NormalizationDescriptor&>(descriptor);
2072  SerializeNormalizationLayer(layer, layerDescriptor, name);
2073  break;
2074  }
2076  {
2077  SerializeOutputLayer(layer, id, name);
2078  break;
2079  }
2080  case armnn::LayerType::Pad :
2081  {
2082  const armnn::PadDescriptor& layerDescriptor =
2083  static_cast<const armnn::PadDescriptor&>(descriptor);
2084  SerializePadLayer(layer, layerDescriptor, name);
2085  break;
2086  }
2088  {
2089  const armnn::PermuteDescriptor& layerDescriptor =
2090  static_cast<const armnn::PermuteDescriptor&>(descriptor);
2091  SerializePermuteLayer(layer, layerDescriptor, name);
2092  break;
2093  }
2095  {
2096  const armnn::Pooling2dDescriptor& layerDescriptor =
2097  static_cast<const armnn::Pooling2dDescriptor&>(descriptor);
2098  SerializePooling2dLayer(layer, layerDescriptor, name);
2099  break;
2100  }
2102  {
2103  SerializePreluLayer(layer, name);
2104  break;
2105  }
2107  {
2108  SerializeQuantizeLayer(layer, name);
2109  break;
2110  }
2112  SerializeQuantizedLstmLayer(layer, constants, name);
2113  break;
2115  {
2116  const armnn::ReshapeDescriptor &layerDescriptor =
2117  static_cast<const armnn::ReshapeDescriptor &>(descriptor);
2118  SerializeReshapeLayer(layer, layerDescriptor, name);
2119  break;
2120  }
2122  {
2123  SerializeRankLayer(layer, name);
2124  break;
2125  }
2127  {
2128  const armnn::ReduceDescriptor& layerDescriptor =
2129  static_cast<const armnn::ReduceDescriptor&>(descriptor);
2130  SerializeReduceLayer(layer, layerDescriptor, name);
2131  break;
2132  }
2134  {
2135  const armnn::ResizeDescriptor& layerDescriptor =
2136  static_cast<const armnn::ResizeDescriptor&>(descriptor);
2137  SerializeResizeLayer(layer, layerDescriptor, name);
2138  break;
2139  }
2141  {
2142  const armnn::SliceDescriptor& layerDescriptor =
2143  static_cast<const armnn::SliceDescriptor&>(descriptor);
2144  SerializeSliceLayer(layer, layerDescriptor, name);
2145  break;
2146  }
2148  {
2149  const armnn::SoftmaxDescriptor& layerDescriptor =
2150  static_cast<const armnn::SoftmaxDescriptor&>(descriptor);
2151  SerializeSoftmaxLayer(layer, layerDescriptor, name);
2152  break;
2153  }
2155  {
2156  const armnn::SpaceToBatchNdDescriptor& layerDescriptor =
2157  static_cast<const armnn::SpaceToBatchNdDescriptor&>(descriptor);
2158  SerializeSpaceToBatchNdLayer(layer, layerDescriptor, name);
2159  break;
2160  }
2162  {
2163  const armnn::SpaceToDepthDescriptor& layerDescriptor =
2164  static_cast<const armnn::SpaceToDepthDescriptor&>(descriptor);
2165  SerializeSpaceToDepthLayer(layer, layerDescriptor, name);
2166  break;
2167  }
2169  {
2170  const armnn::SplitterDescriptor& layerDescriptor =
2171  static_cast<const armnn::SplitterDescriptor&>(descriptor);
2172  SerializeSplitterLayer(layer, layerDescriptor, name);
2173  break;
2174  }
2176  {
2177  const armnn::StackDescriptor& layerDescriptor =
2178  static_cast<const armnn::StackDescriptor&>(descriptor);
2179  SerializeStackLayer(layer, layerDescriptor, name);
2180  break;
2181  }
2183  {
2184  const armnn::StandInDescriptor& layerDescriptor =
2185  static_cast<const armnn::StandInDescriptor&>(descriptor);
2186  SerializeStandInLayer(layer, layerDescriptor, name);
2187  break;
2188  }
2190  {
2191  const armnn::StridedSliceDescriptor& layerDescriptor =
2192  static_cast<const armnn::StridedSliceDescriptor&>(descriptor);
2193  SerializeStridedSliceLayer(layer, layerDescriptor, name);
2194  break;
2195  }
2197  {
2198  SerializeSubtractionLayer(layer, name);
2199  break;
2200  }
2202  {
2203  SerializeSwitchLayer(layer, name);
2204  break;
2205  }
2207  {
2208  const armnn::TransposeDescriptor& layerDescriptor =
2209  static_cast<const armnn::TransposeDescriptor&>(descriptor);
2210  SerializeTransposeLayer(layer, layerDescriptor, name);
2211  break;
2212  }
2214  {
2215  const armnn::TransposeConvolution2dDescriptor& layerDescriptor =
2216  static_cast<const armnn::TransposeConvolution2dDescriptor&>(descriptor);
2217  SerializeTransposeConvolution2dLayer(layer, layerDescriptor, constants, name);
2218  break;
2219  }
2220  default:
2221  {
2223  fmt::format("A layer of unknown type was given to the serializer. Layer name: {}; Layer Id: {}",
2224  layer->GetName(),
2225  id));
2226  }
2227  }
2228 }
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 1785 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().

1786 {
1787  flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> versionsTable =
1789  m_flatBufferBuilder,
1790  1 // Binding ids scheme version
1791  );
1792  return versionsTable;
1793 }
flatbuffers::Offset< FeatureCompatibilityVersions > CreateFeatureCompatibilityVersions(flatbuffers::FlatBufferBuilder &_fbb, uint32_t bindingIdsScheme=0)

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