ArmNN
 22.11
TosaRefPreCompiledWorkload Class Reference

#include <TosaRefPreCompiledWorkload.hpp>

Inheritance diagram for TosaRefPreCompiledWorkload:
BaseWorkload< PreCompiledQueueDescriptor > IWorkload

Public Member Functions

 TosaRefPreCompiledWorkload (const PreCompiledQueueDescriptor &descriptor, const WorkloadInfo &info)
 
void Execute () const override
 
- Public Member Functions inherited from BaseWorkload< PreCompiledQueueDescriptor >
 BaseWorkload (const PreCompiledQueueDescriptor &descriptor, const WorkloadInfo &info)
 
void ExecuteAsync (ExecutionData &executionData) override
 
void PostAllocationConfigure () override
 
const PreCompiledQueueDescriptorGetData () const
 
arm::pipe::ProfilingGuid GetGuid () const final
 
void ReplaceInputTensorHandle (ITensorHandle *tensorHandle, unsigned int slot) override
 
void ReplaceOutputTensorHandle (ITensorHandle *tensorHandle, unsigned int slot) override
 
- Public Member Functions inherited from IWorkload
virtual ~IWorkload ()
 
virtual void RegisterDebugCallback (const DebugCallbackFunction &)
 
virtual armnn::Optional< armnn::MemoryRequirementsGetMemoryRequirements ()
 

Additional Inherited Members

- Protected Attributes inherited from BaseWorkload< PreCompiledQueueDescriptor >
PreCompiledQueueDescriptor m_Data
 
const arm::pipe::ProfilingGuid m_Guid
 

Detailed Description

Definition at line 22 of file TosaRefPreCompiledWorkload.hpp.

Constructor & Destructor Documentation

◆ TosaRefPreCompiledWorkload()

TosaRefPreCompiledWorkload ( const PreCompiledQueueDescriptor descriptor,
const WorkloadInfo info 
)

Definition at line 11 of file TosaRefPreCompiledWorkload.cpp.

References BaseWorkload< PreCompiledQueueDescriptor >::m_Data, and PreCompiledQueueDescriptor::m_PreCompiledObject.

13  : BaseWorkload<PreCompiledQueueDescriptor>(descriptor, info)
14  , m_workloadInfo(info)
15 {
16  // Check that the workload is holding a pointer to a valid pre-compiled object
17  if (m_Data.m_PreCompiledObject == nullptr)
18  {
19  throw InvalidArgumentException(
20  "TosaRefPreCompiledWorkload requires a valid pre-compiled object (TosaSerializationHandler).");
21  }
22 }

Member Function Documentation

◆ Execute()

void Execute ( ) const
overridevirtual

Implements IWorkload.

Definition at line 24 of file TosaRefPreCompiledWorkload.cpp.

References armnn::Float32, BaseWorkload< PreCompiledQueueDescriptor >::m_Data, QueueDescriptor::m_Inputs, WorkloadInfo::m_InputTensorInfos, QueueDescriptor::m_Outputs, WorkloadInfo::m_OutputTensorInfos, and PreCompiledQueueDescriptor::m_PreCompiledObject.

25 {
26  uint32_t numInputBuffers = static_cast<uint32_t>(m_Data.m_Inputs.size());
27  uint32_t numOutputBuffers = static_cast<uint32_t>(m_Data.m_Outputs.size());
28 
29  tosa::TosaSerializationHandler* handler = static_cast<tosa::TosaSerializationHandler*>(m_Data.m_PreCompiledObject);
30 
31  std::vector<std::string> input_names = handler->GetInputs();
32  std::vector<std::string> output_names = handler->GetOutputs();
33 
34  TosaReference::IModelRunner runner;
35  GraphStatus status;
36 
37  // Initialise the model runner with the TosaSerializationHandler
38  status = runner.initialize(*handler);
39  if(status != GraphStatus::TOSA_VALID)
40  {
41  throw armnn::Exception("An error has occurred while initialising the TOSA Reference Model.");
42  }
43 
44  // Set the inputs
45  for (uint32_t inputSlotIdx = 0; inputSlotIdx < numInputBuffers; ++inputSlotIdx)
46  {
47  DataType dataType = m_workloadInfo.m_InputTensorInfos[inputSlotIdx].GetDataType();
48  switch (dataType)
49  {
50  case DataType::Float32:
51  SetInput<float>(runner, input_names[inputSlotIdx], inputSlotIdx);
52  break;
53  default:
54  throw armnn::Exception("Input data type is unsupported in TOSA Reference Backend.");
55  }
56  }
57 
58  // Run the TOSA Reference Model
59  status = runner.run();
60  if(status != GraphStatus::TOSA_VALID)
61  {
62  throw armnn::Exception("An error has occurred while running the TOSA Reference Model.");
63  }
64 
65  // Gets the outputs
66  for (uint32_t outputSlotIdx = 0; outputSlotIdx < numOutputBuffers; ++outputSlotIdx)
67  {
68  DataType dataType = m_workloadInfo.m_OutputTensorInfos[outputSlotIdx].GetDataType();
69  switch (dataType)
70  {
71  case DataType::Float32:
72  GetOutput<float>(runner, output_names[outputSlotIdx], outputSlotIdx);
73  break;
74  default:
75  throw armnn::Exception("Output data type is unsupported in TOSA Reference Backend.");
76  }
77  }
78 }
std::vector< TensorInfo > m_InputTensorInfos
DataType
Definition: Types.hpp:48
std::vector< TensorInfo > m_OutputTensorInfos
std::vector< ITensorHandle * > m_Outputs
Base class for all ArmNN exceptions so that users can filter to just those.
Definition: Exceptions.hpp:46
std::vector< ITensorHandle * > m_Inputs

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