blob: ccab0bf4f9c260fef9289256990d5a1314c6eaa3 [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"
14
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
John Mcloughlin829e13e2024-01-31 11:00:27 +000069// ElementwiseBinary Sub
70TEST_CASE("GpuFsaElementwiseBinarySubTestFloat32")
71{
72 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(gpuFsaDefaultBackends, BinaryOperation::Sub);
73}
74
75TEST_CASE("GpuFsaElementwiseBinarySubTestFloat16")
76{
77 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(gpuFsaDefaultBackends, BinaryOperation::Sub);
78}
79
Teresa Charlina52bca22024-02-01 17:36:48 +000080// Pooling 2D
81// Average Pool 2D
82TEST_CASE("GpuFsaAvgPool2DEndtoEndTestFloat32")
83{
84 AvgPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends);
85}
86
87TEST_CASE("GpuFsaAvgPool2DEndtoEndTestFloat16")
88{
89
90 AvgPool2dEndToEndFloat16<DataType::Float16>(gpuFsaDefaultBackends);
91}
92
93TEST_CASE("UNSUPPORTED_GpuFsaAvgPool2DIgnoreValueEndtoEndTestFloat32")
94{
95 // Exclude padding must be set to true in Attributes! to be supported by GPU
96 try
97 {
98 AvgPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends, PaddingMethod::IgnoreValue);
99 FAIL("An exception should have been thrown");
100 }
101 catch (const armnn::InvalidArgumentException& e)
102 {
103 CHECK(strcmp(e.what(), "Failed to assign a backend to each layer") == 0);
104 }
105}
106
107// Max Pool 2D
108TEST_CASE("GpuFsaMaxPool2DEndtoEndTestFloat32")
109{
110 MaxPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends);
111}
112
113TEST_CASE("GpuFsaMaxPool2DEndtoEndTestFloat16")
114{
115 MaxPool2dEndToEndFloat16<DataType::Float16>(gpuFsaDefaultBackends);
116}
117
118TEST_CASE("UNSUPPORTED_GpuFsaMaxPool2DIgnoreValueEndtoEndTestFloat32")
119{
120 // Exclude padding must be set to true in Attributes! to be supported by GPU
121 try
122 {
123 MaxPool2dEndToEnd<DataType::Float32>(gpuFsaDefaultBackends, PaddingMethod::IgnoreValue);
124 FAIL("An exception should have been thrown");
125 }
126 catch (const armnn::InvalidArgumentException& e)
127 {
128 CHECK(strcmp(e.what(), "Failed to assign a backend to each layer") == 0);
129 }
130}
131
David Monahanbd738082023-12-08 12:50:02 +0000132}