ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
onert::backend::cpu::ops::EinsumLayer Class Reference

#include <EinsumLayer.h>

Collaboration diagram for onert::backend::cpu::ops::EinsumLayer:

Public Member Functions

 EinsumLayer ()
 
 ~EinsumLayer ()
 
void einsumFloat32 ()
 
void configure (const std::vector< const IPortableTensor * > &inputs, std::string equation, IPortableTensor *output)
 
void run () override
 
- Public Member Functions inherited from onert::exec::IFunction
virtual ~IFunction ()=default
 
virtual void prepare ()
 

Detailed Description

Definition at line 35 of file EinsumLayer.h.

Constructor & Destructor Documentation

◆ EinsumLayer()

onert::backend::cpu::ops::EinsumLayer::EinsumLayer ( )

Definition at line 24 of file EinsumLayer.cc.

25 : _inputs(), _output(nullptr), _equation(), _einsum_kernel(new nnfw::cker::Einsum())
26{
27 // DO NOTHING
28}

◆ ~EinsumLayer()

onert::backend::cpu::ops::EinsumLayer::~EinsumLayer ( )
default

Member Function Documentation

◆ configure()

void onert::backend::cpu::ops::EinsumLayer::configure ( const std::vector< const IPortableTensor * > &  inputs,
std::string  equation,
IPortableTensor output 
)

Definition at line 63 of file EinsumLayer.cc.

65{
66 assert(inputs.size() > 0);
67 assert(output != nullptr);
68
69 _inputs = inputs;
70 _equation = equation;
71 _output = output;
72}

◆ einsumFloat32()

void onert::backend::cpu::ops::EinsumLayer::einsumFloat32 ( )

Definition at line 32 of file EinsumLayer.cc.

33{
34 uint32_t num_inputs = _inputs.size();
35 nnfw::cker::Einsum &kernel = *_einsum_kernel;
36
37 kernel.prepare(_equation);
38
39 std::vector<nnfw::cker::Shape> inputShapes;
40 std::vector<const float *> inputFloatPtrs;
41
42 for (uint32_t i = 0; i < num_inputs; i++)
43 {
44 inputShapes.emplace_back(getShape(_inputs[i]));
45 inputFloatPtrs.emplace_back(getBuffer<float>(_inputs[i]));
46 }
47
48 kernel(_equation, inputShapes, inputFloatPtrs, getShape(_output), getBuffer<float>(_output));
49}
void prepare(std::string_view equation)
Definition Einsum.h:190
Option< std::vector< int > > inputShapes(optname("--input-shape"), overview("Shape of caffe2 input"), std::vector< int >{}, optional(false), optvalues(""), nullptr, separators(""), showopt(false), IOption::Group::caffe2)
Definition Options.h:32
nnfw::cker::Shape getShape(const IPortableTensor *tensor)

References onert::backend::cpu::ops::getShape(), and nnfw::cker::Einsum::prepare().

Referenced by run().

◆ run()

void onert::backend::cpu::ops::EinsumLayer::run ( )
overridevirtual

Implements onert::exec::IFunction.

Definition at line 51 of file EinsumLayer.cc.

52{
53 if (_output->data_type() == OperandType::FLOAT32)
54 {
56 }
57 else
58 {
59 throw std::runtime_error{"Einsum: unsupported data type"};
60 }
61}
ir::DataType data_type() const override final

References onert::backend::IPortableTensor::data_type(), and einsumFloat32().


The documentation for this class was generated from the following files: