ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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 26 of file PackLayer.cc.

26 : _inputs(), _output(nullptr), _axis(0)
27{
28 // DO NOTHING
29}

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 59 of file PackLayer.cc.

61{
62 assert(inputs.size() > 0);
63 assert(output != nullptr);
64
65 _inputs = inputs;
66 _axis = axis;
67 _output = output;
68}

◆ packImpl()

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

Definition at line 31 of file PackLayer.cc.

32{
33 uint32_t num_inputs = _inputs.size();
34 nnfw::cker::PackParams op_params;
35 op_params.axis = _axis;
36 op_params.inputs_count = num_inputs;
37
38 std::vector<nnfw::cker::Shape *> inputDimsPtr;
39 std::vector<nnfw::cker::Shape> inputDims;
40 inputDimsPtr.reserve(num_inputs);
41 inputDims.reserve(num_inputs);
42
43 for (uint32_t i = 0; i < num_inputs; i++)
44 {
45 inputDims.push_back(getShape(_inputs[i]));
46 inputDimsPtr.push_back(&inputDims[i]);
47 }
48
49 std::vector<const T *> inputPtrs;
50
51 for (const auto input : _inputs)
52 {
53 inputPtrs.emplace_back(getBuffer<T>(input));
54 }
55
56 nnfw::cker::Pack<T>(op_params, inputPtrs.data(), getShape(_output), getBuffer<T>(_output));
57}
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 70 of file PackLayer.cc.

71{
72 if (_output->data_type() == OperandType::FLOAT32)
73 {
74 packImpl<float>();
75 }
76 else if (_output->data_type() == OperandType::INT32)
77 {
78 packImpl<int32_t>();
79 }
80 else
81 {
82 throw std::runtime_error{"Pack: unsupported data type"};
83 }
84}
ir::DataType data_type() const override final

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


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