aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/WorkloadFactory.cpp
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-05-20 15:31:05 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-05-23 13:37:29 +0000
commit15eb5832f45d35c5041ba35a43787e8003e22edb (patch)
tree09fed880bfb9f384d3170aad5c76e4d565267e20 /src/backends/backendsCommon/WorkloadFactory.cpp
parent495852f2adef1d11fbf13ce6347cf61973ce1a65 (diff)
downloadarmnn-15eb5832f45d35c5041ba35a43787e8003e22edb.tar.gz
IVGCVSW-2771 Fix SubTensor error in vgg16 ExecuteNetwork NEON
* Add check if Sub-tensors cannot be used, call ACL function * Add computation of SplitAxis from SplitterDescriptor * Add NeonSplitterWorkload functions * Modify IsSplitterSupported to call ACL validate function if sub-tensor cannot be used * Also check if quantization parameters match when using sub-tensors * Add more unit tests for Splitter in TfParser and TfLiteParser Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I31e4c7d055117c83c65b598c4125442173242226
Diffstat (limited to 'src/backends/backendsCommon/WorkloadFactory.cpp')
-rw-r--r--src/backends/backendsCommon/WorkloadFactory.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index 9679c35acb..0490a94864 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -703,7 +703,20 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId,
{
auto cLayer = boost::polymorphic_downcast<const SplitterLayer*>(&layer);
const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+
+ // Get vector of all outputs.
+ auto getTensorInfo = [&dataType](const OutputSlot& slot)
+ {
+ return OverrideDataType(slot.GetTensorInfo(), dataType);
+ };
+ auto beginI = boost::make_transform_iterator(layer.GetOutputSlots().begin(), getTensorInfo);
+ auto endI = boost::make_transform_iterator(layer.GetOutputSlots().end(), getTensorInfo);
+ std::vector<TensorInfo> outputs(beginI, endI);
+
+ const std::vector<std::reference_wrapper<TensorInfo>> outputPtrs(outputs.begin(), outputs.end());
+
result = layerSupportObject->IsSplitterSupported(OverrideDataType(input, dataType),
+ outputPtrs,
cLayer->GetParameters(),
reason);
break;