25 tosa::TosaSerializationHandler* handler =
static_cast<tosa::TosaSerializationHandler*
>(
m_Data.m_PreCompiledObject);
27 std::vector<std::string> inputNames = handler->GetMainRegion()->GetBlocks()[0]->GetInputs();
28 std::vector<std::string> outputNames = handler->GetMainRegion()->GetBlocks()[0]->GetOutputs();
30 TosaReference::IModelRunner runner;
34 status = runner.initialize(*handler);
35 if(status != GraphStatus::TOSA_VALID)
37 throw armnn::Exception(
"An error has occurred while initialising the TOSA Reference Model.");
41 for (uint32_t inputSlotIdx = 0; inputSlotIdx < inputNames.size(); ++inputSlotIdx)
43 DataType dataType = m_workloadInfo.m_InputTensorInfos[inputSlotIdx].GetDataType();
47 SetInput<half_float::half>(runner, inputNames[inputSlotIdx], inputSlotIdx);
50 SetInput<float>(runner, inputNames[inputSlotIdx], inputSlotIdx);
53 SetInput<uint8_t, int32_t>(runner, inputNames[inputSlotIdx], inputSlotIdx);
57 SetInput<int8_t, int32_t>(runner, inputNames[inputSlotIdx], inputSlotIdx);
60 SetInput<int16_t, int32_t>(runner, inputNames[inputSlotIdx], inputSlotIdx);
63 SetInput<int32_t>(runner, inputNames[inputSlotIdx], inputSlotIdx);
66 SetInput<int64_t>(runner, inputNames[inputSlotIdx], inputSlotIdx);
69 SetInput<unsigned char>(runner, inputNames[inputSlotIdx], inputSlotIdx);
72 throw armnn::Exception(
"Input data type is unsupported in TOSA Reference Backend.");
77 status = runner.run();
78 if(status != GraphStatus::TOSA_VALID)
80 throw armnn::Exception(
"An error has occurred while running the TOSA Reference Model.");
84 for (uint32_t outputSlotIdx = 0; outputSlotIdx < outputNames.size(); ++outputSlotIdx)
86 DataType dataType = m_workloadInfo.m_OutputTensorInfos[outputSlotIdx].GetDataType();
90 GetOutput<half_float::half>(runner, outputNames[outputSlotIdx], outputSlotIdx);
93 GetOutput<float>(runner, outputNames[outputSlotIdx], outputSlotIdx);
96 GetOutput<uint8_t, int32_t>(runner, outputNames[outputSlotIdx], outputSlotIdx);
100 GetOutput<int8_t, int32_t>(runner, outputNames[outputSlotIdx], outputSlotIdx);
103 GetOutput<int16_t, int32_t>(runner, outputNames[outputSlotIdx], outputSlotIdx);
106 GetOutput<int32_t>(runner, outputNames[outputSlotIdx], outputSlotIdx);
109 GetOutput<int64_t>(runner, outputNames[outputSlotIdx], outputSlotIdx);
112 GetOutput<unsigned char>(runner, outputNames[outputSlotIdx], outputSlotIdx);
115 throw armnn::Exception(
"Output data type is unsupported in TOSA Reference Backend.");