ArmNN
 22.11
Converter.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include "ConversionUtils.hpp"
9 
10 #include <nnapi/OperandTypes.h>
11 #include <nnapi/Result.h>
12 #include <nnapi/Types.h>
13 
14 #include <armnn/Types.hpp>
15 using namespace armnn;
16 
17 namespace armnn_driver
18 {
19 
20 class Converter
21 {
22 
23 public:
26  using OperandLifeTime = ::android::nn::Operand::LifeTime;
31  static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
32 
33 private:
34  static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
35 
36  static bool ConvertArgMinMax(const Operation& operation,
37  const Model& model,
38  ConversionData& data,
39  armnn::ArgMinMaxFunction argMinMaxFunction);
40 
41  static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
42 
43  static bool ConvertBatchMatMul(const Operation& operation, const Model& model, ConversionData& data);
44 
45  static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
46 
47  static bool ConvertCast(const Operation& operation, const Model& model, ConversionData& data);
48 
49  static bool ConvertComparison(const Operation& operation,
50  const Model& model,
51  ConversionData& data,
52  armnn::ComparisonOperation comparisonOperation);
53 
54  static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
55 
56  static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
57 
58  static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
59 
60  static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
61 
62  static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
63 
64  static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data);
65 
66  static bool ConvertElementwiseUnary(const Operation& operation,
67  const Model& model,
68  ConversionData& data,
69  armnn::UnaryOperation unaryOperation);
70 
71  static bool ConvertElu(const Operation& operation, const Model& model, ConversionData& data);
72 
73  static bool ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data);
74 
75  static bool ConvertFill(const Operation& operation, const Model& model, ConversionData& data);
76 
77  static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
78 
79  static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
80 
81  static bool ConvertGather(const Operation& operation, const Model& model, ConversionData& data);
82 
83  static bool ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data);
84 
85  static bool ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data);
86 
87  static bool ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data);
88 
89  static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
90 
91  static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
92 
93  static bool ConvertLocalResponseNormalization(const Operation& operation,
94  const Model& model,
95  ConversionData& data);
96 
97  static bool ConvertLogicalBinary(const Operation& operation,
98  const Model& model,
99  ConversionData& data,
100  armnn::LogicalBinaryOperation logicalOperation);
101 
102  static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
103 
104  static bool ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data);
105 
106  static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
107 
108  static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
109 
110  static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data);
111 
112  static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
113 
114  static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data);
115 
116  static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
117 
118  static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
119 
120  static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data);
121 
122  static bool ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data);
123 
124  static bool ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data);
125 
126  static bool ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data);
127 
128  static bool ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data);
129 
130  static bool ConvertRank(const Operation& operation, const Model& model, ConversionData& data);
131 
132  static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
133 
134  static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
135 
136  static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
137 
138  static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
139 
140  static bool ConvertResize(const Operation& operation,
141  const Model& model,
142  ConversionData& data,
143  armnn::ResizeMethod resizeMethod);
144 
145  static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
146 
147  static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
148 
149  static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
150 
151  static bool ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data);
152 
153  static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
154 
155  static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
156 
157  static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data);
158 
159  static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
160 
161  static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
162 
163  static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data);
164 };
165 
166 } // namespace armnn_driver
::android::nn::Operand Operand
Definition: Converter.hpp:25
::android::nn::ErrorStatus ErrorStatus
::android::nn::Operation Operation
Copyright (c) 2021 ARM Limited and Contributors.
::android::nn::OperandType OperandType
LogicalBinaryOperation
Definition: Types.hpp:118
::android::nn::OperationType OperationType
Definition: Converter.hpp:29
ComparisonOperation
Definition: Types.hpp:108
::android::nn::Model Model
Helper classes.
::android::nn::ErrorStatus ErrorStatus
Definition: Converter.hpp:30
::android::nn::OperandType OperandType
Definition: Converter.hpp:27
::android::nn::Operation Operation
Definition: Converter.hpp:28
::android::nn::Operand Operand
ArgMinMaxFunction
Definition: Types.hpp:102
ResizeMethod
Definition: Types.hpp:152
UnaryOperation
Definition: Types.hpp:124
::android::nn::OperationType OperationType
::android::nn::Operand::LifeTime OperandLifeTime
Definition: Converter.hpp:26
::android::nn::Model Model
Definition: Converter.hpp:24
Helper classes.
Definition: ArmnnDevice.cpp:37