Compute Library
 21.02
TypePrinter.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-2020 Arm Limited.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef ARM_COMPUTE_GRAPH_TYPE_PRINTER_H
25 #define ARM_COMPUTE_GRAPH_TYPE_PRINTER_H
26 
27 #include "arm_compute/core/Error.h"
28 #include "arm_compute/core/Types.h"
30 
31 #include "utils/TypePrinter.h"
32 
33 namespace arm_compute
34 {
35 namespace graph
36 {
37 /** Formatted output of the Target. */
38 inline ::std::ostream &operator<<(::std::ostream &os, const Target &target)
39 {
40  switch(target)
41  {
43  os << "UNSPECIFIED";
44  break;
45  case Target::NEON:
46  os << "Neon";
47  break;
48  case Target::CL:
49  os << "CL";
50  break;
51  case Target::GC:
52  os << "GC";
53  break;
54  default:
55  ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
56  }
57 
58  return os;
59 }
60 
61 inline ::std::ostream &operator<<(::std::ostream &os, const NodeType &node_type)
62 {
63  switch(node_type)
64  {
66  os << "ActivationLayer";
67  break;
69  os << "ArgMinMaxLayer";
70  break;
72  os << "BatchNormalizationLayer";
73  break;
75  os << "BoundingBoxTransformLayer";
76  break;
78  os << "ChannelShuffleLayer";
79  break;
81  os << "ConcatenateLayer";
82  break;
84  os << "ConvolutionLayer";
85  break;
87  os << "DeconvolutionLayer";
88  break;
90  os << "DepthToSpaceLayer";
91  break;
93  os << "DequantizationLayer";
94  break;
96  os << "DetectionOutputLayer";
97  break;
99  os << "DetectionPostProcessLayer";
100  break;
102  os << "DepthwiseConvolutionLayer";
103  break;
105  os << "EltwiseLayer";
106  break;
108  os << "UnaryEltwiseLayer";
109  break;
111  os << "FlattenLayer";
112  break;
114  os << "FullyConnectedLayer";
115  break;
117  os << "FusedConvolutionBatchNormalizationLayer";
118  break;
120  os << "FusedDepthwiseConvolutionBatchNormalizationLayer";
121  break;
123  os << "GenerateProposalsLayer";
124  break;
126  os << "L2NormalizeLayer";
127  break;
129  os << "NormalizationLayer";
130  break;
132  os << "NormalizePlanarYUVLayer";
133  break;
134  case NodeType::PadLayer:
135  os << "PadLayer";
136  break;
138  os << "PermuteLayer";
139  break;
141  os << "PoolingLayer";
142  break;
144  os << "PReluLayer";
145  break;
147  os << "PrintLayer";
148  break;
150  os << "PriorBoxLayer";
151  break;
153  os << "QuantizationLayer";
154  break;
156  os << "ReductionOperationLayer";
157  break;
159  os << "ReorgLayer";
160  break;
162  os << "ReshapeLayer";
163  break;
165  os << "ResizeLayer";
166  break;
168  os << "ROIAlignLayer";
169  break;
171  os << "SoftmaxLayer";
172  break;
174  os << "SliceLayer";
175  break;
177  os << "SplitLayer";
178  break;
180  os << "StackLayer";
181  break;
183  os << "StridedSliceLayer";
184  break;
186  os << "UpsampleLayer";
187  break;
188  case NodeType::Input:
189  os << "Input";
190  break;
191  case NodeType::Output:
192  os << "Output";
193  break;
194  case NodeType::Const:
195  os << "Const";
196  break;
197  case NodeType::Dummy:
198  os << "Dummy";
199  break;
200  default:
201  ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
202  }
203 
204  return os;
205 }
206 
207 /** Formatted output of the EltwiseOperation type. */
208 inline ::std::ostream &operator<<(::std::ostream &os, const EltwiseOperation &eltwise_op)
209 {
210  switch(eltwise_op)
211  {
213  os << "Add";
214  break;
216  os << "Mul";
217  break;
219  os << "Sub";
220  break;
221  default:
222  ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
223  }
224 
225  return os;
226 }
227 
228 /** Formatted output of the ConvolutionMethod type. */
229 inline ::std::ostream &operator<<(::std::ostream &os, const ConvolutionMethod &method)
230 {
231  switch(method)
232  {
234  os << "Default";
235  break;
237  os << "Direct";
238  break;
240  os << "GEMM";
241  break;
243  os << "Winograd";
244  break;
245  default:
246  ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
247  }
248 
249  return os;
250 }
251 
252 /** Formatted output of the FastMathHint type. */
253 inline ::std::ostream &operator<<(::std::ostream &os, const FastMathHint &hint)
254 {
255  switch(hint)
256  {
258  os << "Enabled";
259  break;
261  os << "Disabled";
262  break;
263  default:
264  ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
265  }
266 
267  return os;
268 }
269 
270 /** Formatted output of the DepthwiseConvolutionMethod type. */
271 inline ::std::ostream &operator<<(::std::ostream &os, const DepthwiseConvolutionMethod &method)
272 {
273  switch(method)
274  {
276  os << "DEFAULT";
277  break;
279  os << "Optimized3x3";
280  break;
281  default:
282  ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
283  }
284 
285  return os;
286 }
287 } // namespace graph
288 } // namespace arm_compute
289 #endif /* ARM_COMPUTE_GRAPH_TYPE_PRINTER_H */
Neon capable target device.
EltwiseOperation
Supported Element-wise operations.
Definition: Types.h:103
#define ARM_COMPUTE_ERROR(msg)
Print the given message then throw an std::runtime_error.
Definition: Error.h:352
Fast math enabled for Convolution layer.
Copyright (c) 2017-2021 Arm Limited.
Fast math disabled for Convolution layer.
GLES compute capable target device.
inline ::std::ostream & operator<<(::std::ostream &os, const Target &target)
Formatted output of the Target.
Definition: TypePrinter.h:38
DepthwiseConvolutionMethod
Supported Depthwise Convolution layer methods.
Definition: Types.h:127
NodeType
Supported nodes.
Definition: Types.h:142
FastMathHint
Enable or disable fast math for Convolution layer.
Definition: Types.h:135
ConvolutionMethod
Supported Convolution layer methods.
Definition: Types.h:118
Default approach using internal heuristics.
Default approach using internal heuristics.
Optimized 3x3 direct depthwise convolution.
OpenCL capable target device.