1 // 2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "RefBaseWorkload.hpp" 9 #include <armnn/backends/WorkloadData.hpp> 10 11 #include "RefWorkloadUtils.hpp" 12 13 namespace armnn 14 { 15 16 struct RefRankWorkload : public RefBaseWorkload<RankQueueDescriptor> 17 { 18 public: 19 using RefBaseWorkload<RankQueueDescriptor>::RefBaseWorkload; Executearmnn::RefRankWorkload20 virtual void Execute() const override 21 { 22 Execute(m_Data.m_Inputs, m_Data.m_Outputs); 23 24 } ExecuteAsyncarmnn::RefRankWorkload25 void ExecuteAsync(ExecutionData& executionData) override 26 { 27 WorkingMemDescriptor* workingMemDescriptor = static_cast<WorkingMemDescriptor*>(executionData.m_Data); 28 Execute(workingMemDescriptor->m_Inputs, workingMemDescriptor->m_Outputs); 29 } 30 31 private: Executearmnn::RefRankWorkload32 void Execute(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs) const 33 { 34 const int32_t rank = static_cast<int32_t>(GetTensorInfo(inputs[0]).GetNumDimensions()); 35 36 std::memcpy(outputs[0]->Map(), &rank, sizeof(int32_t)); 37 outputs[0]->Unmap(); 38 } 39 }; 40 41 } //namespace armnn 42 43 44 45 46