diff options
author | Matthew Jackson <matthew.jackson@arm.com> | 2019-07-04 14:59:16 +0100 |
---|---|---|
committer | Áron Virginás-Tar <aron.virginas-tar@arm.com> | 2019-07-10 12:06:51 +0000 |
commit | 2b8c1da565871b3e69567c2cfc46c8dcbef301aa (patch) | |
tree | 682327de212e273405cb257028568db997644c35 /src/backends/backendsCommon/WorkloadFactory.cpp | |
parent | ad5293a86e315049de36afd723dcd1a7e70681a7 (diff) | |
download | armnn-2b8c1da565871b3e69567c2cfc46c8dcbef301aa.tar.gz |
IVGCVSW-3418 Add Arm NN front end support for the new Stack layer
* Added new StackLayer class
* Made necessary changes to Descriptors, ILayerSupport, ILayerVisitor, etc.
* Added unit tests
Signed-off-by: Matthew Jackson <matthew.jackson@arm.com>
Change-Id: Ieb97a928a342ffe1901c6058eb895711c358fd3d
Diffstat (limited to 'src/backends/backendsCommon/WorkloadFactory.cpp')
-rw-r--r-- | src/backends/backendsCommon/WorkloadFactory.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index 1c23e1774b..a24a325b2d 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -729,6 +729,33 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId, reason); break; } + case LayerType::Stack: + { + auto cLayer = boost::polymorphic_downcast<const StackLayer*>(&layer); + + // Get vector of all inputs. + auto getTensorInfo = [&dataType](const InputSlot& slot) + { + return OverrideDataType(slot.GetConnectedOutputSlot()->GetTensorInfo(), dataType); + }; + auto beginI = boost::make_transform_iterator(layer.GetInputSlots().begin(), getTensorInfo); + auto endI = boost::make_transform_iterator(layer.GetInputSlots().end(), getTensorInfo); + std::vector<TensorInfo> inputs(beginI, endI); + + auto getTensorInfoPtr = [](const TensorInfo& info) + { + return &info; + }; + auto beginPtr = boost::make_transform_iterator(inputs.begin(), getTensorInfoPtr); + auto endPtr = boost::make_transform_iterator(inputs.end(), getTensorInfoPtr); + std::vector<const TensorInfo*> inputPtrs(beginPtr, endPtr); + + const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); + + result = layerSupportObject->IsStackSupported(inputPtrs, output, cLayer->GetParameters(), reason); + + break; + } case LayerType::StridedSlice: { auto cLayer = boost::polymorphic_downcast<const StridedSliceLayer*>(&layer); @@ -1130,6 +1157,12 @@ std::unique_ptr<IWorkload> IWorkloadFactory::CreateSpaceToDepth(const SpaceToDep return std::unique_ptr<IWorkload>(); } +std::unique_ptr<IWorkload> IWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + return std::unique_ptr<IWorkload>(); +} + std::unique_ptr<IWorkload> IWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, const WorkloadInfo& Info) const { |