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/WorkloadFactory.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/WorkloadFactory.cpp')
-rw-r--r-- | src/backends/backendsCommon/WorkloadFactory.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index 23ff70a52e..6ac76ecea6 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -1023,6 +1023,17 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId, reason); break; } + case LayerType::Transpose: + { + auto cLayer = boost::polymorphic_downcast<const TransposeLayer*>(&layer); + const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); + result = layerSupportObject->IsTransposeSupported(OverrideDataType(input, dataType), + OverrideDataType(output, dataType), + cLayer->GetParameters(), + reason); + break; + } case LayerType::TransposeConvolution2d: { auto cLayer = boost::polymorphic_downcast<const TransposeConvolution2dLayer*>(&layer); @@ -1315,7 +1326,7 @@ std::unique_ptr<IWorkload> IWorkloadFactory::CreatePad(const PadQueueDescriptor& } std::unique_ptr<IWorkload> IWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& /*descriptor*/, - const WorkloadInfo&/**/ /*info*/) const + const WorkloadInfo& /*info*/) const { return std::unique_ptr<IWorkload>(); } @@ -1379,7 +1390,7 @@ std::unique_ptr<IWorkload> IWorkloadFactory::CreateSlice(const SliceQueueDescrip { return std::unique_ptr<IWorkload>(); } -/**/ + std::unique_ptr<IWorkload> IWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const { @@ -1428,6 +1439,12 @@ std::unique_ptr<IWorkload> IWorkloadFactory::CreateSwitch(const SwitchQueueDescr return std::unique_ptr<IWorkload>(); } +std::unique_ptr<IWorkload> IWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/, + const WorkloadInfo& /*info*/) const +{ + return std::unique_ptr<IWorkload>(); +} + std::unique_ptr<IWorkload> IWorkloadFactory::CreateTransposeConvolution2d( const TransposeConvolution2dQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const |