blob: a2708c0e53a58144f6d0845c5d881357004cb568 [file] [log] [blame]
David Monahan8a570462023-11-22 13:24:25 +00001//
David Monahanbd738082023-12-08 12:50:02 +00002// Copyright © 2022-2024 Arm Ltd and Contributors. All rights reserved.
David Monahan8a570462023-11-22 13:24:25 +00003// SPDX-License-Identifier: MIT
4//
5
6#include "backendsCommon/test/EndToEndTestImpl.hpp"
7
David Monahanbd738082023-12-08 12:50:02 +00008#include "backendsCommon/test/Convolution2dEndToEndTestImpl.hpp"
Tracy Narinebc5a5d52024-02-06 15:22:41 +00009#include "backendsCommon/test/layerTests/CastTestImpl.hpp"
Tracy Narinee7d27852024-01-26 09:13:19 +000010
Tianle Chengfbfa49e2024-01-23 11:21:48 +000011#include "backendsCommon/test/DepthwiseConvolution2dEndToEndTests.hpp"
Tracy Narinee7d27852024-01-26 09:13:19 +000012#include "backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp"
Teresa Charlina52bca22024-02-01 17:36:48 +000013#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
Teresa Charlin1d6b7312024-02-07 22:02:48 +000014#include "backendsCommon/test/ResizeEndToEndTestImpl.hpp"
Tianle Chengfbfa49e2024-01-23 11:21:48 +000015
David Monahanbd738082023-12-08 12:50:02 +000016#include <doctest/doctest.h>
17
18TEST_SUITE("GpuFsaEndToEnd")
19{
20
21std::vector<BackendId> gpuFsaDefaultBackends = {"GpuFsa"};
22
Tracy Narinebc5a5d52024-02-06 15:22:41 +000023TEST_CASE("GpuFsaCastEndtoEndTestFloat32ToFloat16")
24{
25 using namespace half_float::literal;
26
27 std::vector<unsigned int> inputShape { 2, 2, 2 };
28
29 std::vector<float> inputValues { -3.5f, -1.2f, -8.6f, -2.0f, -1.5f, -1.3f, -0.5f, -0.4f };
30
31 std::vector<armnn::Half> outputValues { -3.50_h, -1.20_h, -8.6_h, -2._h, -1.50_h, -1.30_h, -0.50_h, -0.40_h };
32
33 CastSimpleTest<DataType::Float32, DataType::Float16, float, armnn::Half>(gpuFsaDefaultBackends,
34 inputShape,
35 inputValues,
36 outputValues,
37 1.0f,
38 0);
39}
40
David Monahanbd738082023-12-08 12:50:02 +000041// Conv2d
42TEST_CASE("GpuFsaConv2dEndtoEndTestFloat32")
43{
44 Convolution2dEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, armnn::DataLayout::NHWC);
45}
46
47TEST_CASE("GpuFsaConv2dWithoutBiasEndtoEndTestFloat32")
48{
49 Convolution2dEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, armnn::DataLayout::NHWC, false);
50}
51
Tianle Chengfbfa49e2024-01-23 11:21:48 +000052TEST_CASE("GpuFsaDepthwiseConvolution2dEndtoEndTestFloat32")
53{
54 DepthwiseConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(gpuFsaDefaultBackends,
55 armnn::DataLayout::NHWC);
56}
57
Tracy Narinee7d27852024-01-26 09:13:19 +000058// ElementwiseBinary Add
59TEST_CASE("GpuFsaElementwiseBinaryAddTestFloat32")
60{
61 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, BinaryOperation::Add);
62}
63
64TEST_CASE("GpuFsaElementwiseBinaryAddTestFloat16")
65{
66 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(gpuFsaDefaultBackends, BinaryOperation::Add);
67}
68
Teresa Charlin20dda372024-02-08 16:23:25 +000069// ElementwiseBinary Mul
70TEST_CASE("GpuFsaElementwiseBinaryMulTestFloat32")
71{
72 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, BinaryOperation::Mul);
73}
74
75TEST_CASE("GpuFsaElementwiseBinaryMulTestFloat16")
76{
77 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(gpuFsaDefaultBackends, BinaryOperation::Mul);
78}
79
John Mcloughlin829e13e2024-01-31 11:00:27 +000080// ElementwiseBinary Sub
81TEST_CASE("GpuFsaElementwiseBinarySubTestFloat32")
82{
83 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, BinaryOperation::Sub);
84}
85
86TEST_CASE("GpuFsaElementwiseBinarySubTestFloat16")
87{
88 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(gpuFsaDefaultBackends, BinaryOperation::Sub);
89}
90
Teresa Charlina52bca22024-02-01 17:36:48 +000091// Pooling 2D
92// Average Pool 2D
93TEST_CASE("GpuFsaAvgPool2DEndtoEndTestFloat32")
94{
95 AvgPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends);
96}
97
98TEST_CASE("GpuFsaAvgPool2DEndtoEndTestFloat16")
99{
100
101 AvgPool2dEndToEndFloat16<DataType::Float16>(gpuFsaDefaultBackends);
102}
103
104TEST_CASE("UNSUPPORTED_GpuFsaAvgPool2DIgnoreValueEndtoEndTestFloat32")
105{
106 // Exclude padding must be set to true in Attributes! to be supported by GPU
107 try
108 {
109 AvgPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends, PaddingMethod::IgnoreValue);
110 FAIL("An exception should have been thrown");
111 }
112 catch (const armnn::InvalidArgumentException& e)
113 {
114 CHECK(strcmp(e.what(), "Failed to assign a backend to each layer") == 0);
115 }
116}
117
118// Max Pool 2D
119TEST_CASE("GpuFsaMaxPool2DEndtoEndTestFloat32")
120{
121 MaxPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends);
122}
123
124TEST_CASE("GpuFsaMaxPool2DEndtoEndTestFloat16")
125{
126 MaxPool2dEndToEndFloat16<DataType::Float16>(gpuFsaDefaultBackends);
127}
128
129TEST_CASE("UNSUPPORTED_GpuFsaMaxPool2DIgnoreValueEndtoEndTestFloat32")
130{
131 // Exclude padding must be set to true in Attributes! to be supported by GPU
132 try
133 {
134 MaxPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends, PaddingMethod::IgnoreValue);
135 FAIL("An exception should have been thrown");
136 }
137 catch (const armnn::InvalidArgumentException& e)
138 {
139 CHECK(strcmp(e.what(), "Failed to assign a backend to each layer") == 0);
140 }
141}
142
Teresa Charlin1d6b7312024-02-07 22:02:48 +0000143// Resize Bilinear
144TEST_CASE("GpuFsaResizeBilinearEndToEndFloatNhwcTest")
145{
146 ResizeBilinearEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, armnn::DataLayout::NHWC);
147}
148
149// Resize NearestNeighbor
150TEST_CASE("GpuFsaResizeNearestNeighborEndToEndFloatNhwcTest")
151{
152 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, armnn::DataLayout::NHWC);
153}
154
155TEST_CASE("GpuFsaResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest")
156{
157 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, armnn::DataLayout::NHWC,
158 true, false);
159}
160
161TEST_CASE("GpuFsaResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest")
162{
163 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, armnn::DataLayout::NHWC,
164 false, true);
165}
166
David Monahanbd738082023-12-08 12:50:02 +0000167}