diff options
author | Matthew Sloyan <matthew.sloyan@arm.com> | 2022-11-25 16:10:00 +0000 |
---|---|---|
committer | Matthew Sloyan <matthew.sloyan@arm.com> | 2022-12-08 12:57:47 +0000 |
commit | c5fe6e71cd39096af7c2523ec2afe96008c51b0c (patch) | |
tree | 1486349bc36e17c1577465aab81d9eb3ca64e861 /src/backends/tosaReference/workloads | |
parent | 3106c7f1714aea556d06d9f1e8c7faaeaeca996d (diff) | |
download | armnn-c5fe6e71cd39096af7c2523ec2afe96008c51b0c.tar.gz |
IVGCVSW-7168 Add Conv2d and Constant support to TOSA Reference Backend
* Added TOSA Conv2d and Constant mappings.
* Added unique naming to mappings based on previous and following
layers, so they are connected correctly.
* Updated existing mappings with new naming convention.
* Added all mappings to one main block in OptimizeSubgraphView.
* Removed isMain from mapping functions.
* Added Conv2d EndToEnd test.
Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com>
Change-Id: I27c3e238407c32379ce25a1f01dad11523ef5d2b
Diffstat (limited to 'src/backends/tosaReference/workloads')
-rw-r--r-- | src/backends/tosaReference/workloads/TosaRefPreCompiledWorkload.cpp | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/src/backends/tosaReference/workloads/TosaRefPreCompiledWorkload.cpp b/src/backends/tosaReference/workloads/TosaRefPreCompiledWorkload.cpp index ffdbf6f49b..ba353a32c7 100644 --- a/src/backends/tosaReference/workloads/TosaRefPreCompiledWorkload.cpp +++ b/src/backends/tosaReference/workloads/TosaRefPreCompiledWorkload.cpp @@ -23,13 +23,10 @@ TosaRefPreCompiledWorkload::TosaRefPreCompiledWorkload(const PreCompiledQueueDes void TosaRefPreCompiledWorkload::Execute() const { - uint32_t numInputBuffers = static_cast<uint32_t>(m_Data.m_Inputs.size()); - uint32_t numOutputBuffers = static_cast<uint32_t>(m_Data.m_Outputs.size()); - tosa::TosaSerializationHandler* handler = static_cast<tosa::TosaSerializationHandler*>(m_Data.m_PreCompiledObject); - std::vector<std::string> input_names = handler->GetInputs(); - std::vector<std::string> output_names = handler->GetOutputs(); + std::vector<std::string> inputNames = handler->GetInputs(); + std::vector<std::string> outputNames = handler->GetOutputs(); TosaReference::IModelRunner runner; GraphStatus status; @@ -42,29 +39,29 @@ void TosaRefPreCompiledWorkload::Execute() const } // Set the inputs - for (uint32_t inputSlotIdx = 0; inputSlotIdx < numInputBuffers; ++inputSlotIdx) + for (uint32_t inputSlotIdx = 0; inputSlotIdx < inputNames.size(); ++inputSlotIdx) { DataType dataType = m_workloadInfo.m_InputTensorInfos[inputSlotIdx].GetDataType(); switch (dataType) { case DataType::Float16: - SetInput<half_float::half>(runner, input_names[inputSlotIdx], inputSlotIdx); + SetInput<half_float::half>(runner, inputNames[inputSlotIdx], inputSlotIdx); break; case DataType::Float32: - SetInput<float>(runner, input_names[inputSlotIdx], inputSlotIdx); + SetInput<float>(runner, inputNames[inputSlotIdx], inputSlotIdx); break; case DataType::QAsymmU8: case DataType::QAsymmS8: case DataType::QSymmS8: case DataType::QSymmS16: case DataType::Signed32: - SetInput<int32_t>(runner, input_names[inputSlotIdx], inputSlotIdx); + SetInput<int32_t>(runner, inputNames[inputSlotIdx], inputSlotIdx); break; case DataType::Signed64: - SetInput<int64_t>(runner, input_names[inputSlotIdx], inputSlotIdx); + SetInput<int64_t>(runner, inputNames[inputSlotIdx], inputSlotIdx); break; case DataType::Boolean: - SetInput<unsigned char>(runner, input_names[inputSlotIdx], inputSlotIdx); + SetInput<unsigned char>(runner, inputNames[inputSlotIdx], inputSlotIdx); break; default: throw armnn::Exception("Input data type is unsupported in TOSA Reference Backend."); @@ -79,29 +76,29 @@ void TosaRefPreCompiledWorkload::Execute() const } // Gets the outputs - for (uint32_t outputSlotIdx = 0; outputSlotIdx < numOutputBuffers; ++outputSlotIdx) + for (uint32_t outputSlotIdx = 0; outputSlotIdx < outputNames.size(); ++outputSlotIdx) { DataType dataType = m_workloadInfo.m_OutputTensorInfos[outputSlotIdx].GetDataType(); switch (dataType) { case DataType::Float16: - GetOutput<half_float::half>(runner, output_names[outputSlotIdx], outputSlotIdx); + GetOutput<half_float::half>(runner, outputNames[outputSlotIdx], outputSlotIdx); break; case DataType::Float32: - GetOutput<float>(runner, output_names[outputSlotIdx], outputSlotIdx); + GetOutput<float>(runner, outputNames[outputSlotIdx], outputSlotIdx); break; case DataType::QAsymmU8: case DataType::QAsymmS8: case DataType::QSymmS8: case DataType::QSymmS16: case DataType::Signed32: - GetOutput<int32_t>(runner, output_names[outputSlotIdx], outputSlotIdx); + GetOutput<int32_t>(runner, outputNames[outputSlotIdx], outputSlotIdx); break; case DataType::Signed64: - GetOutput<int64_t>(runner, output_names[outputSlotIdx], outputSlotIdx); + GetOutput<int64_t>(runner, outputNames[outputSlotIdx], outputSlotIdx); break; case DataType::Boolean: - GetOutput<unsigned char>(runner, output_names[outputSlotIdx], outputSlotIdx); + GetOutput<unsigned char>(runner, outputNames[outputSlotIdx], outputSlotIdx); break; default: throw armnn::Exception("Output data type is unsupported in TOSA Reference Backend."); |