ArmNN
 26.01
Loading...
Searching...
No Matches
TosaMappings.cpp File Reference
Include dependency graph for TosaMappings.cpp:

Go to the source code of this file.

Functions

TosaSerializationBasicBlock * CreateEmptyTosaSerializationBasicBlock ()
 
TosaSerializationBasicBlock * GetTosaMapping (const Layer *layer, const LayerType type, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const BaseDescriptor &descriptor)
 
TosaSerializationBasicBlock * GetTosaMappingFromLayer (const Layer *layer)
 

Function Documentation

◆ CreateEmptyTosaSerializationBasicBlock()

TosaSerializationBasicBlock * CreateEmptyTosaSerializationBasicBlock ( )

Definition at line 14 of file TosaMappings.cpp.

15{
16 // Empty basic block when no TOSA mapping implemented/exists
17 auto* op = new TosaSerializationOperator(Op_UNKNOWN, Attribute_NONE, nullptr, {}, {});
18 return new TosaSerializationBasicBlock("", "", {op}, {}, {}, {});
19}

Referenced by GetTosaMapping().

◆ GetTosaMapping()

TosaSerializationBasicBlock * GetTosaMapping ( const Layer * layer,
const LayerType type,
const std::vector< const TensorInfo * > & inputs,
const std::vector< const TensorInfo * > & outputs,
const BaseDescriptor & descriptor )

Definition at line 21 of file TosaMappings.cpp.

26{
27 switch (type)
28 {
29 case LayerType::Activation:
30 {
31 auto activationDesc = PolymorphicDowncast<const ActivationDescriptor*>(&descriptor);
32 switch (activationDesc->m_Function)
33 {
34 case ActivationFunction::LeakyReLu:
35 {
36 return ConvertLeakyReluToTosaOperator(layer, inputs, outputs, activationDesc);
37 }
38 case ActivationFunction::ReLu:
39 case ActivationFunction::BoundedReLu:
40 {
41 return ConvertReluToTosaOperator(layer, inputs, outputs, activationDesc);
42 }
43 case ActivationFunction::Gelu:
44 {
45 return ConvertGeluToTosaOperator(layer, inputs, outputs, activationDesc);
46 }
47 case ActivationFunction::HardSwish:
48 {
49 return ConvertHardSwishToTosaOperator(layer, inputs, outputs, activationDesc);
50 }
51 case ActivationFunction::Sigmoid:
52 {
53 return ConvertSigmoidToTosaOperator(layer, inputs, outputs, activationDesc);
54 }
55 case ActivationFunction::TanH:
56 {
57 return ConvertTanHToTosaOperator(layer, inputs, outputs, activationDesc);
58 }
59 default:
60 {
62 }
63 }
64 }
65 case LayerType::Addition:
66 case LayerType::Multiplication:
67 case LayerType::Subtraction:
68 {
69 return ConvertElementwiseBinaryToTosaOperator(layer, type, inputs, outputs);
70 }
71 case LayerType::ElementwiseBinary:
72 {
73 auto binaryDesc = PolymorphicDowncast<const ElementwiseBinaryDescriptor*>(&descriptor);
74 switch (binaryDesc->m_Operation)
75 {
76 case BinaryOperation::SqDiff:
77 return ConvertSquaredDifferenceToTosaOperator(layer, type, inputs, outputs, binaryDesc);
78 default:
79 return ConvertElementwiseBinaryToTosaOperator(layer, type, inputs, outputs, binaryDesc);
80 }
81 }
82 case LayerType::ElementwiseUnary:
83 {
84 auto unaryDesc = PolymorphicDowncast<const ElementwiseUnaryDescriptor*>(&descriptor);
85 switch(unaryDesc->m_Operation)
86 {
87 case UnaryOperation::Rsqrt:
88 {
89 return ConvertRsqrtOperator(layer, inputs, outputs, unaryDesc);
90 }
91 case UnaryOperation::Exp:
92 {
93 return ConvertExpOperator(layer, inputs, outputs, unaryDesc);
94 }
95 case UnaryOperation::Log:
96 {
97 return ConvertLogOperator(layer, inputs, outputs, unaryDesc);
98 }
99 default:
100 {
102 }
103 }
104 }
105 case LayerType::BatchMatMul:
106 {
107 auto batchMatMulDesc = PolymorphicDowncast<const BatchMatMulDescriptor*>(&descriptor);
108 return ConvertBatchMatMulToTosaOperator(layer, inputs, outputs, batchMatMulDesc);
109 }
110 case LayerType::BatchToSpaceNd:
111 {
112 auto batchToSpaceDesc = PolymorphicDowncast<const BatchToSpaceNdDescriptor*>(&descriptor);
113 return ConvertBatchToSpaceToTosaOperator(layer, inputs, outputs, batchToSpaceDesc);
114 }
115 case LayerType::Concat:
116 {
117 auto concatDesc = PolymorphicDowncast<const OriginsDescriptor*>(&descriptor);
118 return ConvertConcatToTosaOperator(layer, inputs, outputs, concatDesc);
119 }
120 case LayerType::Constant:
121 {
122 bool isDepthwiseConv2dWeights = false;
123 if(layer)
124 {
125 // The difference in layout of weights in Tensorflow/ArmNN and the layout
126 // described in TOSA means we must permute the weights from [1, H, W, C * M] to [H, W, C, M].
127 unsigned int slotIdx = layer->GetOutputSlot().GetConnection(0)->GetSlotIndex();
129 if(type == LayerType::DepthwiseConvolution2d && slotIdx == 1)
130 {
131 isDepthwiseConv2dWeights = true;
132 }
133 }
134 return ConvertConstantToTosaOperator(layer, outputs, isDepthwiseConv2dWeights);
135 }
136 case LayerType::Convolution2d:
137 {
138 auto conv2dDesc = PolymorphicDowncast<const Convolution2dDescriptor*>(&descriptor);
139 return ConvertConv2dToTosaOperator(layer, inputs, outputs, conv2dDesc);
140 }
141 case LayerType::Convolution3d:
142 {
143 auto conv3dDesc = PolymorphicDowncast<const Convolution3dDescriptor*>(&descriptor);
144 return ConvertConv3dToTosaOperator(layer, inputs, outputs, conv3dDesc);
145 }
146 case LayerType::DepthwiseConvolution2d:
147 {
148 auto conv2dDesc = PolymorphicDowncast<const DepthwiseConvolution2dDescriptor*>(&descriptor);
149 return ConvertDepthwiseConv2dToTosaOperator(layer, inputs, outputs, conv2dDesc);
150 }
151 case LayerType::DepthToSpace:
152 {
153 auto desc = PolymorphicDowncast<const DepthToSpaceDescriptor*>(&descriptor);
154 return ConvertDepthToSpaceToTosaOperator(layer, inputs, outputs, desc);
155 }
156 case LayerType::FullyConnected:
157 {
158 auto fullyConnectedDesc = PolymorphicDowncast<const FullyConnectedDescriptor*>(&descriptor);
159 return ConvertFullyConnectedToTosaOperator(layer, inputs, outputs, fullyConnectedDesc);
160 }
161 case LayerType::Gather:
162 {
163 auto gatherDesc = PolymorphicDowncast<const GatherDescriptor*>(&descriptor);
164 return ConvertGatherToTosaOperator(layer, inputs, outputs, gatherDesc);
165 }
166 case LayerType::Pad:
167 {
168 auto padDesc = PolymorphicDowncast<const PadDescriptor*>(&descriptor);
169 return ConvertPadToTosaOperator(layer, inputs, outputs, padDesc);
170 }
171 case LayerType::Pooling2d:
172 {
173 auto poolDesc = PolymorphicDowncast<const Pooling2dDescriptor*>(&descriptor);
174
175 bool avgPoolIgnoreValue =
176 (poolDesc->m_PoolType == PoolingAlgorithm::Average) &&
177 (poolDesc->m_PaddingMethod == PaddingMethod::IgnoreValue);
178
179 if (poolDesc->m_PoolType == PoolingAlgorithm::L2)
180 {
182 }
183 else if (avgPoolIgnoreValue)
184 {
185 return ConvertAvgPool2DIgnoreValueToTosaOperator(layer, inputs, outputs, poolDesc);
186 }
187 else
188 {
189 return ConvertPooling2DToTosaOperator(layer, inputs, outputs, poolDesc);
190 }
191 }
192 case LayerType::Mean:
193 {
194 auto meanDesc = PolymorphicDowncast<const MeanDescriptor*>(&descriptor);
195
196 ReduceDescriptor reduceDesc;
197 reduceDesc.m_KeepDims = meanDesc->m_KeepDims;
198 reduceDesc.m_vAxis = meanDesc->m_Axis;
199 reduceDesc.m_ReduceOperation = ReduceOperation::Mean;
200
201 return ConvertReduceToTosaOperator(layer, inputs, outputs, &reduceDesc);
202 }
203 case LayerType::Dequantize:
204 {
205 return ConvertDequantizeToTosaOperator(layer, inputs, outputs);
206 }
207 case LayerType::Quantize:
208 {
209 return ConvertQuantizeToTosaOperator(layer, inputs, outputs);
210 }
211 case LayerType::Prelu:
212 {
213 return ConvertPReluToTosaOperator(layer, inputs, outputs);
214 }
215 case LayerType::Reduce:
216 {
217 auto reduceDesc = PolymorphicDowncast<const ReduceDescriptor*>(&descriptor);
218 return ConvertReduceToTosaOperator(layer, inputs, outputs, reduceDesc);
219 }
220 case LayerType::Reshape:
221 {
222 auto reshapeDesc = PolymorphicDowncast<const ReshapeDescriptor*>(&descriptor);
223 return ConvertReshapeToTosaOperator(layer, inputs, outputs, reshapeDesc);
224 }
225 case LayerType::Resize:
226 {
227 auto resizeDesc = PolymorphicDowncast<const ResizeDescriptor*>(&descriptor);
228 return ConvertResizeToTosaOperator(layer, inputs, outputs, resizeDesc);
229 }
230 case LayerType::Slice:
231 {
232 auto sliceDesc = PolymorphicDowncast<const SliceDescriptor*>(&descriptor);
233 return ConvertSliceToTosaOperator(layer, inputs, outputs, sliceDesc);
234 }
235 case LayerType::Softmax:
236 {
237 auto softmaxDesc = PolymorphicDowncast<const SoftmaxDescriptor*>(&descriptor);
238 return ConvertSoftmaxToTosaOperator(layer, inputs, outputs, softmaxDesc);
239 }
240 case LayerType::Splitter:
241 {
242 auto splitDesc = PolymorphicDowncast<const SplitterDescriptor*>(&descriptor);
243 return ConvertSplitToTosaOperator(layer, inputs, outputs, splitDesc);
244 }
245 case LayerType::SpaceToBatchNd:
246 {
247 auto spaceToBatchDesc = PolymorphicDowncast<const SpaceToBatchNdDescriptor*>(&descriptor);
248 return ConvertSpaceToBatchToTosaOperator(layer, inputs, outputs, spaceToBatchDesc);
249 }
250 case LayerType::Stack:
251 {
252 auto stackDesc = PolymorphicDowncast<const StackDescriptor*>(&descriptor);
253 return ConvertStackToTosaOperator(layer, inputs, outputs, stackDesc);
254 }
255 case LayerType::StridedSlice:
256 {
257 auto sliceDesc = PolymorphicDowncast<const StridedSliceDescriptor*>(&descriptor);
258 return ConvertStridedSliceToTosaOperator(layer, inputs, outputs, sliceDesc);
259 }
260 case LayerType::TransposeConvolution2d:
261 {
262 auto transposeConv2dDesc = PolymorphicDowncast<const TransposeConvolution2dDescriptor*>(&descriptor);
263 return ConvertTransposeConv2dToTosaOperator(layer, inputs, outputs, transposeConv2dDesc);
264 }
265 case LayerType::Transpose:
266 {
267 auto transposeDesc = PolymorphicDowncast<const TransposeDescriptor*>(&descriptor);
268 return ConvertTransposeToTosaOperator(layer, inputs, outputs, transposeDesc);
269 }
270 default:
271 {
273 }
274 }
275}
TosaSerializationBasicBlock * ConvertAvgPool2DIgnoreValueToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const Pooling2dDescriptor *poolDescriptor)
TosaSerializationBasicBlock * ConvertBatchMatMulToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const BatchMatMulDescriptor *descriptor)
TosaSerializationBasicBlock * ConvertBatchToSpaceToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const BatchToSpaceNdDescriptor *batchToSpaceDescriptor)
TosaSerializationBasicBlock * ConvertConcatToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const OriginsDescriptor *concatDescriptor)
TosaSerializationBasicBlock * ConvertConstantToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &outputs, bool isDepthwiseConv2dWeights=false)
TosaSerializationBasicBlock * ConvertConv2dToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const Convolution2dDescriptor *conv2dDescriptor)
TosaSerializationBasicBlock * ConvertConv3dToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const Convolution3dDescriptor *conv3dDescriptor)
TosaSerializationBasicBlock * ConvertDepthToSpaceToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const DepthToSpaceDescriptor *descriptor)
TosaSerializationBasicBlock * ConvertDepthwiseConv2dToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const DepthwiseConvolution2dDescriptor *conv2dDescriptor)
TosaSerializationBasicBlock * ConvertDequantizeToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs)
TosaSerializationBasicBlock * ConvertSquaredDifferenceToTosaOperator(const Layer *layer, const LayerType, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ElementwiseBinaryDescriptor *descriptor)
TosaSerializationBasicBlock * ConvertElementwiseBinaryToTosaOperator(const Layer *layer, const LayerType type, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ElementwiseBinaryDescriptor *descriptor)
TosaSerializationBasicBlock * ConvertExpOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ElementwiseUnaryDescriptor *unaryDescriptor)
TosaSerializationBasicBlock * ConvertFullyConnectedToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const FullyConnectedDescriptor *fcDescriptor)
TosaSerializationBasicBlock * ConvertGatherToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const GatherDescriptor *gatherDescriptor)
TosaSerializationBasicBlock * ConvertGeluToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ActivationDescriptor *desc)
TosaSerializationBasicBlock * ConvertHardSwishToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ActivationDescriptor *desc)
TosaSerializationBasicBlock * ConvertLeakyReluToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ActivationDescriptor *activationDescriptor)
TosaSerializationBasicBlock * ConvertLogOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ElementwiseUnaryDescriptor *unaryDescriptor)
TosaSerializationBasicBlock * ConvertPReluToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs)
TosaSerializationBasicBlock * ConvertPadToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const PadDescriptor *padDescriptor)
TosaSerializationBasicBlock * ConvertPooling2DToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const Pooling2dDescriptor *poolDescriptor)
TosaSerializationBasicBlock * ConvertQuantizeToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs)
TosaSerializationBasicBlock * ConvertReduceToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ReduceDescriptor *reduceDescriptor)
TosaSerializationBasicBlock * ConvertReluToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ActivationDescriptor *desc)
TosaSerializationBasicBlock * ConvertReshapeToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ReshapeDescriptor *reshapeDescriptor)
TosaSerializationBasicBlock * ConvertResizeToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ResizeDescriptor *resizeDescriptor)
TosaSerializationBasicBlock * ConvertRsqrtOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ElementwiseUnaryDescriptor *unaryDescriptor)
TosaSerializationBasicBlock * ConvertSigmoidToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ActivationDescriptor *desc)
TosaSerializationBasicBlock * ConvertSliceToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const SliceDescriptor *sliceDescriptor)
TosaSerializationBasicBlock * ConvertSoftmaxToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const SoftmaxDescriptor *softmaxDescriptor)
TosaSerializationBasicBlock * ConvertSpaceToBatchToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const SpaceToBatchNdDescriptor *spaceToBatchDescriptor)
TosaSerializationBasicBlock * ConvertSplitToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const SplitterDescriptor *splitDescriptor)
TosaSerializationBasicBlock * ConvertStackToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const StackDescriptor *stackDescriptor)
TosaSerializationBasicBlock * ConvertStridedSliceToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const StridedSliceDescriptor *stridedSliceDescriptor)
TosaSerializationBasicBlock * ConvertTanHToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const ActivationDescriptor *desc)
TosaSerializationBasicBlock * CreateEmptyTosaSerializationBasicBlock()
TosaSerializationBasicBlock * ConvertTransposeConv2dToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const TransposeConvolution2dDescriptor *descriptor)
TosaSerializationBasicBlock * ConvertTransposeToTosaOperator(const Layer *layer, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const TransposeDescriptor *transposeDescriptor)
Layer & GetOwningLayer() const
Definition Layer.hpp:53
unsigned int GetSlotIndex() const override
Definition Layer.hpp:54
const OutputSlot & GetOutputSlot(unsigned int index=0) const override
Get the const output slot handle by slot index.
Definition Layer.hpp:339
LayerType GetType() const override
Returns the armnn::LayerType of this layer.
Definition Layer.hpp:286
const InputSlot * GetConnection(unsigned int index) const override
Definition Layer.cpp:83
LayerType
When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below.
Definition Types.hpp:494
A ReduceDescriptor for the REDUCE operators.
bool m_KeepDims
if true then output shape has no change.
std::vector< uint32_t > m_vAxis
The indices of the dimensions to reduce.
ReduceOperation m_ReduceOperation
Specifies the reduction operation to execute.

References ConvertAvgPool2DIgnoreValueToTosaOperator(), ConvertBatchMatMulToTosaOperator(), ConvertBatchToSpaceToTosaOperator(), ConvertConcatToTosaOperator(), ConvertConstantToTosaOperator(), ConvertConv2dToTosaOperator(), ConvertConv3dToTosaOperator(), ConvertDepthToSpaceToTosaOperator(), ConvertDepthwiseConv2dToTosaOperator(), ConvertDequantizeToTosaOperator(), ConvertElementwiseBinaryToTosaOperator(), ConvertExpOperator(), ConvertFullyConnectedToTosaOperator(), ConvertGatherToTosaOperator(), ConvertGeluToTosaOperator(), ConvertHardSwishToTosaOperator(), ConvertLeakyReluToTosaOperator(), ConvertLogOperator(), ConvertPadToTosaOperator(), ConvertPooling2DToTosaOperator(), ConvertPReluToTosaOperator(), ConvertQuantizeToTosaOperator(), ConvertReduceToTosaOperator(), ConvertReluToTosaOperator(), ConvertReshapeToTosaOperator(), ConvertResizeToTosaOperator(), ConvertRsqrtOperator(), ConvertSigmoidToTosaOperator(), ConvertSliceToTosaOperator(), ConvertSoftmaxToTosaOperator(), ConvertSpaceToBatchToTosaOperator(), ConvertSplitToTosaOperator(), ConvertSquaredDifferenceToTosaOperator(), ConvertStackToTosaOperator(), ConvertStridedSliceToTosaOperator(), ConvertTanHToTosaOperator(), ConvertTransposeConv2dToTosaOperator(), ConvertTransposeToTosaOperator(), CreateEmptyTosaSerializationBasicBlock(), OutputSlot::GetConnection(), Layer::GetOutputSlot(), InputSlot::GetOwningLayer(), InputSlot::GetSlotIndex(), Layer::GetType(), ReduceDescriptor::m_KeepDims, ReduceDescriptor::m_ReduceOperation, and ReduceDescriptor::m_vAxis.

Referenced by GetTosaMappingFromLayer(), and TosaRefLayerSupport::IsLayerSupported().

◆ GetTosaMappingFromLayer()

TosaSerializationBasicBlock * GetTosaMappingFromLayer ( const Layer * layer)

Definition at line 277 of file TosaMappings.cpp.

278{
279 std::vector<const TensorInfo*> inputs;
280 for (auto const& inputSlot : layer->GetInputSlots())
281 {
282 inputs.emplace_back(&inputSlot.GetTensorInfo());
283 }
284
285 std::vector<const TensorInfo*> outputs;
286 for (auto& outputSlot : layer->GetOutputSlots())
287 {
288 outputs.emplace_back(&outputSlot.GetTensorInfo());
289 }
290
291 TosaSerializationBasicBlock* basicBlock = GetTosaMapping(layer,
292 layer->GetType(),
293 inputs,
294 outputs,
295 layer->GetParameters());
296
297 return basicBlock;
298}
TosaSerializationBasicBlock * GetTosaMapping(const Layer *layer, const LayerType type, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const BaseDescriptor &descriptor)
virtual const BaseDescriptor & GetParameters() const override
If the layer has a descriptor return it.
Definition Layer.hpp:378

References Layer::GetInputSlots(), Layer::GetOutputSlots(), Layer::GetParameters(), GetTosaMapping(), and Layer::GetType().

Referenced by TosaRefBackend::OptimizeSubgraphView().