aboutsummaryrefslogtreecommitdiff
path: root/src/backends/gpuFsa/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/gpuFsa/test')
-rw-r--r--src/backends/gpuFsa/test/GpuFsaEndToEndTests.cpp54
-rw-r--r--src/backends/gpuFsa/test/GpuFsaLayerSupportTests.cpp30
2 files changed, 84 insertions, 0 deletions
diff --git a/src/backends/gpuFsa/test/GpuFsaEndToEndTests.cpp b/src/backends/gpuFsa/test/GpuFsaEndToEndTests.cpp
index 26c7cb8d63..93a4a81f9d 100644
--- a/src/backends/gpuFsa/test/GpuFsaEndToEndTests.cpp
+++ b/src/backends/gpuFsa/test/GpuFsaEndToEndTests.cpp
@@ -9,6 +9,8 @@
#include "backendsCommon/test/DepthwiseConvolution2dEndToEndTests.hpp"
#include "backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp"
+#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
+
#include <doctest/doctest.h>
@@ -56,4 +58,56 @@ TEST_CASE("GpuFsaElementwiseBinarySubTestFloat16")
ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(gpuFsaDefaultBackends, BinaryOperation::Sub);
}
+// Pooling 2D
+// Average Pool 2D
+TEST_CASE("GpuFsaAvgPool2DEndtoEndTestFloat32")
+{
+ AvgPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends);
+}
+
+TEST_CASE("GpuFsaAvgPool2DEndtoEndTestFloat16")
+{
+
+ AvgPool2dEndToEndFloat16<DataType::Float16>(gpuFsaDefaultBackends);
+}
+
+TEST_CASE("UNSUPPORTED_GpuFsaAvgPool2DIgnoreValueEndtoEndTestFloat32")
+{
+ // Exclude padding must be set to true in Attributes! to be supported by GPU
+ try
+ {
+ AvgPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends, PaddingMethod::IgnoreValue);
+ FAIL("An exception should have been thrown");
+ }
+ catch (const armnn::InvalidArgumentException& e)
+ {
+ CHECK(strcmp(e.what(), "Failed to assign a backend to each layer") == 0);
+ }
+}
+
+// Max Pool 2D
+TEST_CASE("GpuFsaMaxPool2DEndtoEndTestFloat32")
+{
+ MaxPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends);
+}
+
+TEST_CASE("GpuFsaMaxPool2DEndtoEndTestFloat16")
+{
+ MaxPool2dEndToEndFloat16<DataType::Float16>(gpuFsaDefaultBackends);
+}
+
+TEST_CASE("UNSUPPORTED_GpuFsaMaxPool2DIgnoreValueEndtoEndTestFloat32")
+{
+ // Exclude padding must be set to true in Attributes! to be supported by GPU
+ try
+ {
+ MaxPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends, PaddingMethod::IgnoreValue);
+ FAIL("An exception should have been thrown");
+ }
+ catch (const armnn::InvalidArgumentException& e)
+ {
+ CHECK(strcmp(e.what(), "Failed to assign a backend to each layer") == 0);
+ }
+}
+
}
diff --git a/src/backends/gpuFsa/test/GpuFsaLayerSupportTests.cpp b/src/backends/gpuFsa/test/GpuFsaLayerSupportTests.cpp
index 9d4b3b9367..fee0d07820 100644
--- a/src/backends/gpuFsa/test/GpuFsaLayerSupportTests.cpp
+++ b/src/backends/gpuFsa/test/GpuFsaLayerSupportTests.cpp
@@ -101,4 +101,34 @@ TEST_CASE("IsLayerSupportedGpuFsaElementWiseBinarySub")
CHECK(supported);
}
+TEST_CASE("IsLayerSupportedGpuFsaPooling2d")
+{
+ TensorInfo inputInfo({ 1, 3, 4, 1 }, DataType::Float32);
+ TensorInfo outputInfo({ 1, 2, 2, 1 }, DataType::Float32);
+
+ Pooling2dDescriptor desc{};
+ desc.m_PoolType = PoolingAlgorithm::Max;
+ desc.m_PadLeft = 0;
+ desc.m_PadRight = 0;
+ desc.m_PadTop = 0;
+ desc.m_PadBottom = 0;
+ desc.m_PoolWidth = 2;
+ desc.m_PoolHeight = 2;
+ desc.m_StrideX = 1;
+ desc.m_StrideY = 1;
+ desc.m_OutputShapeRounding = OutputShapeRounding::Floor;
+ desc.m_PaddingMethod = PaddingMethod::Exclude;
+ desc.m_DataLayout = DataLayout::NHWC;
+
+ GpuFsaLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(LayerType::Pooling2d,
+ {inputInfo, outputInfo},
+ desc,
+ EmptyOptional(),
+ EmptyOptional(),
+ reasonIfNotSupported);
+ CHECK(supported);
+}
+
} \ No newline at end of file