IVGCVSW-1951 Remove type templating from ClSplitterWorkload
Change-Id: Ib289ed5885e0e22ce6d73d7b3b3b103691187a34
diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp
index 0b7e539..bf17382 100644
--- a/src/backends/cl/ClWorkloadFactory.cpp
+++ b/src/backends/cl/ClWorkloadFactory.cpp
@@ -113,7 +113,7 @@
std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor,
const WorkloadInfo& info) const
{
- return MakeWorkload<ClSplitterFloatWorkload, ClSplitterUint8Workload>(descriptor, info);
+ return std::make_unique<ClSplitterWorkload>(descriptor, info);
}
std::unique_ptr<armnn::IWorkload> ClWorkloadFactory::CreateMerger(const MergerQueueDescriptor& descriptor,
diff --git a/src/backends/cl/backend.mk b/src/backends/cl/backend.mk
index f54a8de..057089e 100644
--- a/src/backends/cl/backend.mk
+++ b/src/backends/cl/backend.mk
@@ -46,6 +46,4 @@
workloads/ClSoftmaxBaseWorkload.cpp \
workloads/ClSoftmaxFloatWorkload.cpp \
workloads/ClSoftmaxUint8Workload.cpp \
- workloads/ClSplitterFloatWorkload.cpp \
- workloads/ClSplitterUint8Workload.cpp \
workloads/ClSubtractionWorkload.cpp
diff --git a/src/backends/cl/workloads/CMakeLists.txt b/src/backends/cl/workloads/CMakeLists.txt
index 959d3e2..9c48dc9 100644
--- a/src/backends/cl/workloads/CMakeLists.txt
+++ b/src/backends/cl/workloads/CMakeLists.txt
@@ -13,7 +13,6 @@
ClBaseConstantWorkload.cpp
ClBaseConstantWorkload.hpp
ClBaseMergerWorkload.hpp
- ClBaseSplitterWorkload.hpp
ClBatchNormalizationFloatWorkload.cpp
ClBatchNormalizationFloatWorkload.hpp
ClConstantFloatWorkload.cpp
@@ -76,10 +75,7 @@
ClSoftmaxFloatWorkload.hpp
ClSoftmaxUint8Workload.cpp
ClSoftmaxUint8Workload.hpp
- ClSplitterFloatWorkload.cpp
- ClSplitterFloatWorkload.hpp
- ClSplitterUint8Workload.cpp
- ClSplitterUint8Workload.hpp
+ ClSplitterWorkload.hpp
ClSubtractionWorkload.cpp
ClSubtractionWorkload.hpp
ClWorkloads.hpp
diff --git a/src/backends/cl/workloads/ClBaseSplitterWorkload.hpp b/src/backends/cl/workloads/ClBaseSplitterWorkload.hpp
deleted file mode 100644
index 7fdcc84..0000000
--- a/src/backends/cl/workloads/ClBaseSplitterWorkload.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include <backends/Workload.hpp>
-
-#include <arm_compute/runtime/CL/CLFunctions.h>
-
-namespace armnn
-{
-
-// Base class template providing an implementation of the Splitter layer common to all data types.
-template <armnn::DataType... DataTypes>
-class ClBaseSplitterWorkload : public TypedWorkload<SplitterQueueDescriptor, DataTypes...>
-{
-public:
- using TypedWorkload<SplitterQueueDescriptor, DataTypes...>::TypedWorkload;
-
- void Execute() const override
- {
- // With subtensors, merger is a no-op.
- }
-};
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterFloatWorkload.cpp b/src/backends/cl/workloads/ClSplitterFloatWorkload.cpp
deleted file mode 100644
index 5fd634b..0000000
--- a/src/backends/cl/workloads/ClSplitterFloatWorkload.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "ClSplitterFloatWorkload.hpp"
-
-#include "ClWorkloadUtils.hpp"
-
-namespace armnn
-{
-
-void ClSplitterFloatWorkload::Execute() const
-{
- ARMNN_SCOPED_PROFILING_EVENT_CL("ClSplitterFloatWorkload_Execute");
- ClBaseSplitterWorkload::Execute();
-}
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterFloatWorkload.hpp b/src/backends/cl/workloads/ClSplitterFloatWorkload.hpp
deleted file mode 100644
index a0b5846..0000000
--- a/src/backends/cl/workloads/ClSplitterFloatWorkload.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "ClBaseSplitterWorkload.hpp"
-
-namespace armnn
-{
-
-class ClSplitterFloatWorkload : public ClBaseSplitterWorkload<DataType::Float16, DataType::Float32>
-{
-public:
- using ClBaseSplitterWorkload<DataType::Float16, DataType::Float32>::ClBaseSplitterWorkload;
- virtual void Execute() const override;
-};
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterUint8Workload.cpp b/src/backends/cl/workloads/ClSplitterUint8Workload.cpp
deleted file mode 100644
index 50a251a..0000000
--- a/src/backends/cl/workloads/ClSplitterUint8Workload.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "ClSplitterUint8Workload.hpp"
-
-#include "ClWorkloadUtils.hpp"
-
-namespace armnn
-{
-
-void ClSplitterUint8Workload::Execute() const
-{
- ARMNN_SCOPED_PROFILING_EVENT_CL("ClSplitterUint8Workload_Execute");
- ClBaseSplitterWorkload::Execute();
-}
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterUint8Workload.hpp b/src/backends/cl/workloads/ClSplitterUint8Workload.hpp
deleted file mode 100644
index 19e8be5..0000000
--- a/src/backends/cl/workloads/ClSplitterUint8Workload.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "ClBaseSplitterWorkload.hpp"
-
-namespace armnn
-{
-class ClSplitterUint8Workload : public ClBaseSplitterWorkload<DataType::QuantisedAsymm8>
-{
-public:
- using ClBaseSplitterWorkload<DataType::QuantisedAsymm8>::ClBaseSplitterWorkload;
- virtual void Execute() const override;
-};
-} //namespace armnn
-
-
-
diff --git a/src/backends/cl/workloads/ClSplitterWorkload.hpp b/src/backends/cl/workloads/ClSplitterWorkload.hpp
new file mode 100644
index 0000000..ffc02c0
--- /dev/null
+++ b/src/backends/cl/workloads/ClSplitterWorkload.hpp
@@ -0,0 +1,25 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <backends/Workload.hpp>
+
+namespace armnn
+{
+
+// Base class template providing an implementation of the Splitter layer common to all data types.
+class ClSplitterWorkload : public BaseWorkload<SplitterQueueDescriptor>
+{
+public:
+ using BaseWorkload<SplitterQueueDescriptor>::BaseWorkload;
+
+ void Execute() const override
+ {
+ // With subtensors, splitter is a no-op.
+ }
+};
+
+} //namespace armnn
diff --git a/src/backends/cl/workloads/ClWorkloads.hpp b/src/backends/cl/workloads/ClWorkloads.hpp
index c0625f6..439ad2d 100644
--- a/src/backends/cl/workloads/ClWorkloads.hpp
+++ b/src/backends/cl/workloads/ClWorkloads.hpp
@@ -34,8 +34,7 @@
#include "ClResizeBilinearFloatWorkload.hpp"
#include "ClSoftmaxFloatWorkload.hpp"
#include "ClSoftmaxUint8Workload.hpp"
-#include "ClSplitterFloatWorkload.hpp"
-#include "ClSplitterUint8Workload.hpp"
+#include "ClSplitterWorkload.hpp"
#include "ClSubtractionWorkload.hpp"
#include "ClConvertFp16ToFp32Workload.hpp"
#include "ClConvertFp32ToFp16Workload.hpp"
diff --git a/src/backends/test/CreateWorkloadCl.cpp b/src/backends/test/CreateWorkloadCl.cpp
index 9b68546..8599920 100644
--- a/src/backends/test/CreateWorkloadCl.cpp
+++ b/src/backends/test/CreateWorkloadCl.cpp
@@ -399,13 +399,13 @@
ClSoftmaxWorkloadTest<ClSoftmaxFloatWorkload, armnn::DataType::Float16>();
}
-template <typename SplitterWorkloadType, typename armnn::DataType DataType>
+template <typename armnn::DataType DataType>
static void ClSplitterWorkloadTest()
{
Graph graph;
ClWorkloadFactory factory;
- auto workload = CreateSplitterWorkloadTest<SplitterWorkloadType, DataType>(factory, graph);
+ auto workload = CreateSplitterWorkloadTest<ClSplitterWorkload, DataType>(factory, graph);
// Checks that outputs are as we expect them (see definition of CreateSplitterWorkloadTest).
SplitterQueueDescriptor queueDescriptor = workload->GetData();
@@ -426,15 +426,15 @@
BOOST_AUTO_TEST_CASE(CreateSplitterFloatWorkload)
{
- ClSplitterWorkloadTest<ClSplitterFloatWorkload, armnn::DataType::Float32>();
+ ClSplitterWorkloadTest<armnn::DataType::Float32>();
}
BOOST_AUTO_TEST_CASE(CreateSplitterFloat16Workload)
{
- ClSplitterWorkloadTest<ClSplitterFloatWorkload, armnn::DataType::Float16>();
+ ClSplitterWorkloadTest<armnn::DataType::Float16>();
}
-template <typename SplitterWorkloadType, typename MergerWorkloadType, typename armnn::DataType DataType>
+template <typename MergerWorkloadType, typename armnn::DataType DataType>
static void ClSplitterMergerTest()
{
// Tests that it is possible to decide which output of the splitter layer
@@ -447,7 +447,7 @@
ClWorkloadFactory factory;
auto workloads =
- CreateSplitterMergerWorkloadTest<SplitterWorkloadType, MergerWorkloadType, DataType>
+ CreateSplitterMergerWorkloadTest<ClSplitterWorkload, MergerWorkloadType, DataType>
(factory, graph);
auto wlSplitter = std::move(workloads.first);
@@ -478,12 +478,12 @@
BOOST_AUTO_TEST_CASE(CreateSplitterMergerFloatWorkload)
{
- ClSplitterMergerTest<ClSplitterFloatWorkload, ClMergerFloatWorkload, armnn::DataType::Float32>();
+ ClSplitterMergerTest<ClMergerFloatWorkload, armnn::DataType::Float32>();
}
BOOST_AUTO_TEST_CASE(CreateSplitterMergerFloat16Workload)
{
- ClSplitterMergerTest<ClSplitterFloatWorkload, ClMergerFloatWorkload, armnn::DataType::Float16>();
+ ClSplitterMergerTest<ClMergerFloatWorkload, armnn::DataType::Float16>();
}
@@ -494,13 +494,13 @@
Graph graph;
ClWorkloadFactory factory;
- std::unique_ptr<ClSplitterFloatWorkload> wlSplitter;
+ std::unique_ptr<ClSplitterWorkload> wlSplitter;
std::unique_ptr<ClActivationFloatWorkload> wlActiv0_0;
std::unique_ptr<ClActivationFloatWorkload> wlActiv0_1;
std::unique_ptr<ClActivationFloatWorkload> wlActiv1_0;
std::unique_ptr<ClActivationFloatWorkload> wlActiv1_1;
- CreateSplitterMultipleInputsOneOutputWorkloadTest<ClSplitterFloatWorkload,
+ CreateSplitterMultipleInputsOneOutputWorkloadTest<ClSplitterWorkload,
ClActivationFloatWorkload, armnn::DataType::Float32>(factory, graph, wlSplitter, wlActiv0_0, wlActiv0_1,
wlActiv1_0, wlActiv1_1);