ArmNN
 22.11
TosaMappings.cpp File Reference
#include "TosaMappings.hpp"

Go to the source code of this file.

Functions

void SetBasicBlockConstantTensorData (Layer *layer, TosaSerializationBasicBlock *)
 
TosaSerializationBasicBlock * GetTosaMapping (const LayerType type, const std::vector< const TensorInfo *> &inputs, const std::vector< const TensorInfo *> &outputs, const BaseDescriptor &, bool isMain=false)
 
TosaSerializationBasicBlock * GetTosaMappingFromLayer (Layer *layer, bool isMain=false)
 

Function Documentation

◆ GetTosaMapping()

TosaSerializationBasicBlock* GetTosaMapping ( const LayerType  type,
const std::vector< const TensorInfo *> &  inputs,
const std::vector< const TensorInfo *> &  outputs,
const BaseDescriptor ,
bool  isMain = false 
)

Definition at line 26 of file TosaMappings.cpp.

References armnn::Addition, and ConvertAdditionToTosaOperator().

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

31 {
32  switch (type)
33  {
34  case LayerType::Addition:
35  {
36  return ConvertAdditionToTosaOperator(inputs, outputs, isMain);
37  }
38  default:
39  {
40  // empty basic block when no tosa mapping implemented/exists
41  TosaSerializationOperator* op = new TosaSerializationOperator(Op_UNKNOWN, Attribute_NONE, nullptr, {}, {});
42  return new TosaSerializationBasicBlock("", {op}, {}, {}, {});
43  }
44  }
45 }
TosaSerializationBasicBlock * ConvertAdditionToTosaOperator(const std::vector< const TensorInfo *> &inputs, const std::vector< const TensorInfo *> &outputs, bool isMain)

◆ GetTosaMappingFromLayer()

TosaSerializationBasicBlock* GetTosaMappingFromLayer ( Layer layer,
bool  isMain = false 
)

Definition at line 47 of file TosaMappings.cpp.

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

Referenced by TosaRefBackend::OptimizeSubgraphView().

48 {
49  std::vector<const TensorInfo*> inputs;
50  for (auto inputSlot : layer->GetInputSlots())
51  {
52  inputs.push_back(&inputSlot.GetConnection()->GetTensorInfo());
53  }
54 
55  std::vector<const TensorInfo*> outputs;
56  for (auto& outputSlot : layer->GetOutputSlots())
57  {
58  outputs.push_back(&outputSlot.GetTensorInfo());
59  }
60 
61  TosaSerializationBasicBlock* basicBlock = GetTosaMapping(layer->GetType(),
62  inputs,
63  outputs,
64  layer->GetParameters(),
65  isMain);
66  SetBasicBlockConstantTensorData(layer, basicBlock);
67  return basicBlock;
68 }
TosaSerializationBasicBlock * GetTosaMapping(const LayerType type, const std::vector< const TensorInfo *> &inputs, const std::vector< const TensorInfo *> &outputs, const BaseDescriptor &, bool isMain=false)
const std::vector< InputSlot > & GetInputSlots() const
Definition: Layer.hpp:245
LayerType GetType() const override
Returns the armnn::LayerType of this layer.
Definition: Layer.hpp:273
const std::vector< OutputSlot > & GetOutputSlots() const
Definition: Layer.hpp:246
virtual const BaseDescriptor & GetParameters() const override
If the layer has a descriptor return it.
Definition: Layer.hpp:365
void SetBasicBlockConstantTensorData(Layer *layer, TosaSerializationBasicBlock *)

◆ SetBasicBlockConstantTensorData()

void SetBasicBlockConstantTensorData ( Layer layer,
TosaSerializationBasicBlock *   
)

Definition at line 11 of file TosaMappings.cpp.

References armnn::Convolution2d, and Layer::GetType().

Referenced by GetTosaMappingFromLayer().

12 {
13  switch (layer->GetType())
14  {
15  case LayerType::Convolution2d:
16  {
17  // ToDo: using Convolution2d as an example as it has constant tensors for weights and bias.
18  // ToDo: manually set TosaOperator data of basicBlock where constant tensors exist.
19  }
20  default:
21  // If no switch statement for layer, no constant tensors exist in that layer, return
22  return;
23  }
24 }
LayerType GetType() const override
Returns the armnn::LayerType of this layer.
Definition: Layer.hpp:273