ONE - On-device Neural Engine
Loading...
Searching...
No Matches
onert::backend::cpu::ops::PackLayer Class Reference

#include <PackLayer.h>

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

Public Member Functions

 PackLayer ()
 
template<typename T >
void packImpl ()
 
void configure (const std::vector< const IPortableTensor * > &inputs, int32_t axis, IPortableTensor *output)
 
void run () override
 
- Public Member Functions inherited from onert::exec::IFunction
virtual ~IFunction ()=default
 
virtual void prepare ()
 

Detailed Description

Definition at line 27 of file PackLayer.h.

Constructor & Destructor Documentation

◆ PackLayer()

onert::backend::cpu::ops::PackLayer::PackLayer ( )

Definition at line 57 of file PackLayer.cc.

57 : _inputs(), _output(nullptr), _axis(0)
58{
59 // DO NOTHING
60}

Member Function Documentation

◆ configure()

void onert::backend::cpu::ops::PackLayer::configure ( const std::vector< const IPortableTensor * > &  inputs,
int32_t  axis,
IPortableTensor output 
)

Definition at line 90 of file PackLayer.cc.

92{
93 assert(inputs.size() > 0);
94 assert(output != nullptr);
95
96 _inputs = inputs;
97 _axis = axis;
98 _output = output;
99}

◆ packImpl()

template<typename T >
void onert::backend::cpu::ops::PackLayer::packImpl ( )

Definition at line 62 of file PackLayer.cc.

63{
64 uint32_t num_inputs = _inputs.size();
65 nnfw::cker::PackParams op_params;
66 op_params.axis = _axis;
67 op_params.inputs_count = num_inputs;
68
69 std::vector<nnfw::cker::Shape *> inputDimsPtr;
70 std::vector<nnfw::cker::Shape> inputDims;
71 inputDimsPtr.reserve(num_inputs);
72 inputDims.reserve(num_inputs);
73
74 for (uint32_t i = 0; i < num_inputs; i++)
75 {
76 inputDims.push_back(getShape(_inputs[i]));
77 inputDimsPtr.push_back(&inputDims[i]);
78 }
79
80 std::vector<const T *> inputPtrs;
81
82 for (const auto input : _inputs)
83 {
84 inputPtrs.emplace_back(getBuffer<T>(input));
85 }
86
87 nnfw::cker::Pack<T>(op_params, inputPtrs.data(), getShape(_output), getBuffer<T>(_output));
88}
nnfw::cker::Shape getShape(const IPortableTensor *tensor)
uint16_t inputs_count
Definition Types.h:129

References nnfw::cker::PackParams::axis, onert::backend::cpu::ops::getShape(), and nnfw::cker::PackParams::inputs_count.

◆ run()

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

Implements onert::exec::IFunction.

Definition at line 101 of file PackLayer.cc.

102{
103 if (_output->data_type() == OperandType::FLOAT32)
104 {
105 packImpl<float>();
106 }
107 else if (_output->data_type() == OperandType::INT32)
108 {
109 packImpl<int32_t>();
110 }
111 else
112 {
113 throw std::runtime_error{"Pack: unsupported data type"};
114 }
115}
ir::DataType data_type() const override final

References onert::backend::IPortableTensor::data_type().


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