diff options
author | Mike Kelly <mike.kelly@arm.com> | 2020-02-28 18:11:58 +0000 |
---|---|---|
committer | mike.kelly <mike.kelly@arm.com> | 2020-03-02 16:44:09 +0000 |
commit | c9ea45adefdde2890e9aa191a5b31563a3dd35ea (patch) | |
tree | 2ea65c972d24cc2d823ea39eb105d4062db54934 /src/backends/backendsCommon/WorkloadData.cpp | |
parent | 510f6183d289b176702a18f020449c68be6f1075 (diff) | |
download | armnn-c9ea45adefdde2890e9aa191a5b31563a3dd35ea.tar.gz |
IVGCVSW-4375 Add support for Transpose
* Added TransposeLayer
* Added CL, Neon and Ref Workloads
* Added Transpose utilities
* Added Serializer and Deserializer support
* Added Quantizer support
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I04c755ba7cb5b1edf72b3c9f3c0314878032e3c7
Diffstat (limited to 'src/backends/backendsCommon/WorkloadData.cpp')
-rw-r--r-- | src/backends/backendsCommon/WorkloadData.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp index 410469e97d..9b7a2429d6 100644 --- a/src/backends/backendsCommon/WorkloadData.cpp +++ b/src/backends/backendsCommon/WorkloadData.cpp @@ -2680,6 +2680,35 @@ void TransposeConvolution2dQueueDescriptor::Validate(const WorkloadInfo& workloa ValidateTensorDataTypesMatch(inputTensorInfo, outputTensorInfo, descriptorName, "input", "output"); } +void TransposeQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const +{ + const std::string descriptorName{"TransposeQueueDescriptor"}; + + ValidateNumInputs(workloadInfo, descriptorName, 1); + ValidateNumOutputs(workloadInfo, descriptorName, 1); + + const PermutationVector& mapping = m_Parameters.m_DimMappings; + + const TensorInfo& inputTensorInfo = workloadInfo.m_InputTensorInfos[0]; + const TensorInfo& outputTensorInfo = workloadInfo.m_OutputTensorInfos[0]; + + ValidateTensorNumDimensions(inputTensorInfo, descriptorName, mapping.GetSize(), "input"); + ValidateTensorNumDimensions(outputTensorInfo, descriptorName, mapping.GetSize(), "output"); + + for (unsigned int i = 0u; i < mapping.GetSize(); ++i) + { + if (inputTensorInfo.GetShape()[mapping[i]] != outputTensorInfo.GetShape()[i]) + { + throw InvalidArgumentException(descriptorName + ": src dimension " + to_string(mapping[i]) + + " (=" + to_string(inputTensorInfo.GetShape()[mapping[i]]) + ") " + + "must match dst dimension " + to_string(i) + + " (=" + to_string(outputTensorInfo.GetShape()[i]) + ")"); + } + } + + ValidateTensorDataTypesMatch(inputTensorInfo, outputTensorInfo, descriptorName, "input", "output"); +} + void QuantizedLstmQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const { const std::string descriptorName{"QuantizedLstmQueueDescriptor"}; |