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

#include <TopKV2Layer.h>

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

Public Member Functions

 TopKV2Layer ()
 
void configure (const IPortableTensor *input, IPortableTensor *output_value, IPortableTensor *output_indices, const int32_t k)
 
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 TopKV2Layer.h.

Constructor & Destructor Documentation

◆ TopKV2Layer()

onert::backend::cpu::ops::TopKV2Layer::TopKV2Layer ( )

Definition at line 56 of file TopKV2Layer.cc.

57 : _input(nullptr), _output_value(nullptr), _output_indices(nullptr), _k(0)
58{
59}

Member Function Documentation

◆ configure()

void onert::backend::cpu::ops::TopKV2Layer::configure ( const IPortableTensor input,
IPortableTensor output_value,
IPortableTensor output_indices,
const int32_t  k 
)

Definition at line 61 of file TopKV2Layer.cc.

63{
64 _input = input;
65 _output_value = output_value;
66 _output_indices = output_indices;
67
68 _k = static_cast<uint32_t>(k);
69}

◆ run()

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

Implements onert::exec::IFunction.

Definition at line 71 of file TopKV2Layer.cc.

72{
73 if (_output_indices->data_type() != OperandType::INT32)
74 throw std::runtime_error{"TopKV2: unsupported output indices type"};
75
76 if (_input->data_type() == OperandType::FLOAT32)
77 {
78 nnfw::cker::TopKV2<float, int32_t>(getShape(_input), getBuffer<float>(_input), _k,
79 getBuffer<float>(_output_value),
80 getBuffer<int32_t>(_output_indices));
81 }
82 else if (_input->data_type() == OperandType::INT32)
83 {
84 nnfw::cker::TopKV2<int32_t, int32_t>(getShape(_input), getBuffer<int32_t>(_input), _k,
85 getBuffer<int32_t>(_output_value),
86 getBuffer<int32_t>(_output_indices));
87 }
88 else if (_input->data_type() == OperandType::QUANT_UINT8_ASYMM)
89 {
90 nnfw::cker::TopKV2<uint8_t, int32_t>(getShape(_input), getBuffer<uint8_t>(_input), _k,
91 getBuffer<uint8_t>(_output_value),
92 getBuffer<int32_t>(_output_indices));
93 }
94 else
95 {
96 throw std::runtime_error{"TopKV2: unsupported data type"};
97 }
98}
ir::DataType data_type() const override final
nnfw::cker::Shape getShape(const IPortableTensor *tensor)

References onert::backend::IPortableTensor::data_type(), and onert::backend::cpu::ops::getShape().


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