xref: /aosp_15_r20/external/armnn/src/armnn/SerializeLayerParameters.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017,2022 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include <string>
8 #include <functional>
9 #include <armnn/Descriptors.hpp>
10 
11 namespace armnn
12 {
13 
14 using ParameterStringifyFunction = std::function<void(const std::string& name, const std::string& value)>;
15 
16 ///
17 /// StringifyLayerParameters allows serializing layer parameters to string.
18 /// The default implementation is a no-op because this operation is considered
19 /// non-vital for ArmNN and thus we allow adding new layer parameters without
20 /// supplying the corresponding stringify functionality.
21 ///
22 template <typename LayerParameter>
23 struct StringifyLayerParameters
24 {
Serializearmnn::StringifyLayerParameters25     static void Serialize(ParameterStringifyFunction&, const LayerParameter&) {}
26 };
27 
28 template <> struct StringifyLayerParameters<ActivationDescriptor>
29 {
30     static void Serialize(ParameterStringifyFunction& fn, const ActivationDescriptor& desc);
31 };
32 
33 template <> struct StringifyLayerParameters<BatchNormalizationDescriptor>
34 {
35     static void Serialize(ParameterStringifyFunction& fn, const BatchNormalizationDescriptor& desc);
36 };
37 
38 template <> struct StringifyLayerParameters<BatchMatMulDescriptor>
39 {
40     static void Serialize(ParameterStringifyFunction& fn, const BatchMatMulDescriptor& desc);
41 };
42 
43 template <> struct StringifyLayerParameters<BatchToSpaceNdDescriptor>
44 {
45     static void Serialize(ParameterStringifyFunction& fn, const BatchToSpaceNdDescriptor& desc);
46 };
47 
48 template <> struct StringifyLayerParameters<ChannelShuffleDescriptor>
49 {
50     static void Serialize(ParameterStringifyFunction& fn, const ChannelShuffleDescriptor& desc);
51 };
52 
53 template <> struct StringifyLayerParameters<ComparisonDescriptor>
54 {
55     static void Serialize(ParameterStringifyFunction& fn, const ComparisonDescriptor& desc);
56 };
57 
58 template <> struct StringifyLayerParameters<Convolution2dDescriptor>
59 {
60     static void Serialize(ParameterStringifyFunction& fn, const Convolution2dDescriptor& desc);
61 };
62 
63 template <> struct StringifyLayerParameters<Convolution3dDescriptor>
64 {
65     static void Serialize(ParameterStringifyFunction& fn, const Convolution3dDescriptor& desc);
66 };
67 
68 template <> struct StringifyLayerParameters<DetectionPostProcessDescriptor>
69 {
70     static void Serialize(ParameterStringifyFunction& fn, const DetectionPostProcessDescriptor& desc);
71 };
72 
73 template <> struct StringifyLayerParameters<DepthwiseConvolution2dDescriptor>
74 {
75     static void Serialize(ParameterStringifyFunction& fn, const DepthwiseConvolution2dDescriptor& desc);
76 };
77 
78 template <> struct StringifyLayerParameters<ElementwiseUnaryDescriptor>
79 {
80     static void Serialize(ParameterStringifyFunction& fn, const ElementwiseUnaryDescriptor& desc);
81 };
82 
83 template <> struct StringifyLayerParameters<FakeQuantizationDescriptor>
84 {
85     static void Serialize(ParameterStringifyFunction& fn, const FakeQuantizationDescriptor& desc);
86 };
87 
88 template <> struct StringifyLayerParameters<FullyConnectedDescriptor>
89 {
90     static void Serialize(ParameterStringifyFunction& fn, const FullyConnectedDescriptor& desc);
91 };
92 
93 template <> struct StringifyLayerParameters<GatherDescriptor>
94 {
95     static void Serialize(ParameterStringifyFunction& fn, const GatherDescriptor& desc);
96 };
97 
98 template <> struct StringifyLayerParameters<L2NormalizationDescriptor>
99 {
100     static void Serialize(ParameterStringifyFunction& fn, const L2NormalizationDescriptor& desc);
101 };
102 
103 template <> struct StringifyLayerParameters<LstmDescriptor>
104 {
105     static void Serialize(ParameterStringifyFunction& fn, const LstmDescriptor& desc);
106 };
107 
108 template <> struct StringifyLayerParameters<MeanDescriptor>
109 {
110     static void Serialize(ParameterStringifyFunction& fn, const MeanDescriptor& desc);
111 };
112 
113 template <> struct StringifyLayerParameters<NormalizationDescriptor>
114 {
115     static void Serialize(ParameterStringifyFunction& fn, const NormalizationDescriptor& desc);
116 };
117 
118 template <> struct StringifyLayerParameters<OriginsDescriptor>
119 {
120     static void Serialize(ParameterStringifyFunction& fn, const OriginsDescriptor& desc);
121 };
122 
123 template <> struct StringifyLayerParameters<PadDescriptor>
124 {
125     static void Serialize(ParameterStringifyFunction& fn, const PadDescriptor& desc);
126 };
127 template <> struct StringifyLayerParameters<PermuteDescriptor>
128 {
129     static void Serialize(ParameterStringifyFunction& fn, const PermuteDescriptor& desc);
130 };
131 
132 template <> struct StringifyLayerParameters<Pooling2dDescriptor>
133 {
134     static void Serialize(ParameterStringifyFunction& fn, const Pooling2dDescriptor& desc);
135 };
136 
137 template <> struct StringifyLayerParameters<Pooling3dDescriptor>
138 {
139     static void Serialize(ParameterStringifyFunction& fn, const Pooling3dDescriptor& desc);
140 };
141 
142 template <> struct StringifyLayerParameters<PreCompiledDescriptor>
143 {
144     static void Serialize(ParameterStringifyFunction& fn, const PreCompiledDescriptor& desc);
145 };
146 
147 template <> struct StringifyLayerParameters<ReduceDescriptor>
148 {
149     static void Serialize(ParameterStringifyFunction& fn, const ReduceDescriptor& desc);
150 };
151 
152 template <> struct StringifyLayerParameters<ReshapeDescriptor>
153 {
154     static void Serialize(ParameterStringifyFunction& fn, const ReshapeDescriptor& desc);
155 };
156 
157 template <> struct StringifyLayerParameters<ResizeDescriptor>
158 {
159     static void Serialize(ParameterStringifyFunction& fn, const ResizeDescriptor& desc);
160 };
161 
162 template <> struct StringifyLayerParameters<SpaceToBatchNdDescriptor>
163 {
164     static void Serialize(ParameterStringifyFunction& fn, const SpaceToBatchNdDescriptor& desc);
165 };
166 
167 template <> struct StringifyLayerParameters<SpaceToDepthDescriptor>
168 {
169     static void Serialize(ParameterStringifyFunction& fn, const SpaceToDepthDescriptor& desc);
170 };
171 
172 template <> struct StringifyLayerParameters<StackDescriptor>
173 {
174     static void Serialize(ParameterStringifyFunction& fn, const StackDescriptor& desc);
175 };
176 
177 template <> struct StringifyLayerParameters<StridedSliceDescriptor>
178 {
179     static void Serialize(ParameterStringifyFunction& fn, const StridedSliceDescriptor& desc);
180 };
181 
182 template <> struct StringifyLayerParameters<SoftmaxDescriptor>
183 {
184     static void Serialize(ParameterStringifyFunction& fn, const SoftmaxDescriptor& desc);
185 };
186 
187 template <> struct StringifyLayerParameters<TransposeConvolution2dDescriptor>
188 {
189     static void Serialize(ParameterStringifyFunction& fn, const TransposeConvolution2dDescriptor& desc);
190 };
191 
192 template <> struct StringifyLayerParameters<TransposeDescriptor>
193 {
194     static void Serialize(ParameterStringifyFunction& fn, const TransposeDescriptor& desc);
195 };
196 
197 template <> struct StringifyLayerParameters<ViewsDescriptor>
198 {
199     static void Serialize(ParameterStringifyFunction& fn, const ViewsDescriptor& desc);
200 };
201 
202 } // namespace armnn