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 26 of file TopKV2Layer.cc.

27 : _input(nullptr), _output_value(nullptr), _output_indices(nullptr), _k(0)
28{
29}

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 31 of file TopKV2Layer.cc.

33{
34 _input = input;
35 _output_value = output_value;
36 _output_indices = output_indices;
37
38 _k = static_cast<uint32_t>(k);
39}

◆ run()

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

Implements onert::exec::IFunction.

Definition at line 41 of file TopKV2Layer.cc.

42{
43 if (_output_indices->data_type() != OperandType::INT32)
44 throw std::runtime_error{"TopKV2: unsupported output indices type"};
45
46 if (_input->data_type() == OperandType::FLOAT32)
47 {
48 nnfw::cker::TopKV2<float, int32_t>(getShape(_input), getBuffer<float>(_input), _k,
49 getBuffer<float>(_output_value),
50 getBuffer<int32_t>(_output_indices));
51 }
52 else if (_input->data_type() == OperandType::INT32)
53 {
54 nnfw::cker::TopKV2<int32_t, int32_t>(getShape(_input), getBuffer<int32_t>(_input), _k,
55 getBuffer<int32_t>(_output_value),
56 getBuffer<int32_t>(_output_indices));
57 }
58 else if (_input->data_type() == OperandType::QUANT_UINT8_ASYMM)
59 {
60 nnfw::cker::TopKV2<uint8_t, int32_t>(getShape(_input), getBuffer<uint8_t>(_input), _k,
61 getBuffer<uint8_t>(_output_value),
62 getBuffer<int32_t>(_output_indices));
63 }
64 else
65 {
66 throw std::runtime_error{"TopKV2: unsupported data type"};
67 }
68}
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: