blob: 2b8b0d48a7a1be6b6d42a6e53b5879080ad952e1 [file] [log] [blame]
arovir0143095f32018-10-09 18:04:24 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tar56055192018-11-12 18:10:43 +00006#include "ClWorkloadFactoryHelper.hpp"
7
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00008#include <layers/ConvertFp16ToFp32Layer.hpp>
9#include <layers/ConvertFp32ToFp16Layer.hpp>
Matthew Bentham1f0ff352019-01-02 13:26:31 +000010#include <layers/MeanLayer.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000011#include <test/TensorHelpers.hpp>
arovir0143095f32018-10-09 18:04:24 +010012
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000013#include <backendsCommon/CpuTensorHandle.hpp>
14#include <cl/ClWorkloadFactory.hpp>
15#include <cl/test/ClContextControlFixture.hpp>
16#include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
17#include <backendsCommon/test/LayerTests.hpp>
arovir0143095f32018-10-09 18:04:24 +010018
19#include <boost/test/unit_test.hpp>
20
21#include <string>
22
23BOOST_AUTO_TEST_SUITE(ClLayerSupport)
24
25BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture)
26{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000027 armnn::ClWorkloadFactory factory =
28 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
arovir0143095f32018-10-09 18:04:24 +010029 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory);
30}
31
32BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl, ClContextControlFixture)
33{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000034 armnn::ClWorkloadFactory factory =
35 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
arovir0143095f32018-10-09 18:04:24 +010036 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory);
37}
38
Keith Davisa8565012020-02-14 12:22:40 +000039BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQAsymmU8Cl, ClContextControlFixture)
arovir0143095f32018-10-09 18:04:24 +010040{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000041 armnn::ClWorkloadFactory factory =
42 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
Derek Lambertif90c56d2020-01-10 17:14:08 +000043 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmU8>(&factory);
arovir0143095f32018-10-09 18:04:24 +010044}
45
Keith Davisa8565012020-02-14 12:22:40 +000046BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQAsymmS8Cl, ClContextControlFixture)
47{
48 armnn::ClWorkloadFactory factory =
49 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
50 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmS8>(&factory);
51}
52
53BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQSymmS8Cl, ClContextControlFixture)
Keith Davis9d0ff742020-02-03 14:47:54 +000054{
55 armnn::ClWorkloadFactory factory =
56 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
57 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QSymmS8>(&factory);
58}
59
arovir0143095f32018-10-09 18:04:24 +010060BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture)
61{
62 std::string reasonIfUnsupported;
63
64 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
65 armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
66
67 BOOST_CHECK(result);
68}
69
70BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl, ClContextControlFixture)
71{
72 std::string reasonIfUnsupported;
73
74 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
75 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
76
77 BOOST_CHECK(!result);
78 BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float16");
79}
80
81BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl, ClContextControlFixture)
82{
83 std::string reasonIfUnsupported;
84
85 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
86 armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
87
88 BOOST_CHECK(!result);
89 BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float32");
90}
91
92BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture)
93{
94 std::string reasonIfUnsupported;
95
96 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
97 armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
98
99 BOOST_CHECK(result);
100}
101
102BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl, ClContextControlFixture)
103{
104 std::string reasonIfUnsupported;
105
106 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
107 armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
108
109 BOOST_CHECK(!result);
110 BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float32");
111}
112
113BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl, ClContextControlFixture)
114{
115 std::string reasonIfUnsupported;
116
117 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
118 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
119
120 BOOST_CHECK(!result);
121 BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float16");
122}
123
James Conroyfe3ec942020-11-18 14:20:53 +0000124BOOST_FIXTURE_TEST_CASE(IsLogicalBinarySupportedCl, ClContextControlFixture)
125{
126 std::string reasonIfUnsupported;
127
128 bool result = IsLogicalBinaryLayerSupportedTests<armnn::ClWorkloadFactory,
129 armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
130
131 BOOST_CHECK(result);
132}
133
134BOOST_FIXTURE_TEST_CASE(IsLogicalBinaryBroadcastSupportedCl, ClContextControlFixture)
135{
136 std::string reasonIfUnsupported;
137
138 bool result = IsLogicalBinaryLayerBroadcastSupportedTests<armnn::ClWorkloadFactory,
139 armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
140
141 BOOST_CHECK(result);
142}
143
Matthew Bentham1f0ff352019-01-02 13:26:31 +0000144BOOST_FIXTURE_TEST_CASE(IsMeanSupportedCl, ClContextControlFixture)
145{
146 std::string reasonIfUnsupported;
147
148 bool result = IsMeanLayerSupportedTests<armnn::ClWorkloadFactory,
149 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
150
151 BOOST_CHECK(result);
152}
153
Mike Kelly0886ac42020-04-27 09:55:40 +0100154BOOST_AUTO_TEST_CASE(IsConstantSupportedCl)
155{
156 std::string reasonIfUnsupported;
157
158 bool result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
159 armnn::DataType::Float16>(reasonIfUnsupported);
160 BOOST_CHECK(result);
161
162 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
163 armnn::DataType::Float32>(reasonIfUnsupported);
164 BOOST_CHECK(result);
165
166 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
167 armnn::DataType::QAsymmU8>(reasonIfUnsupported);
168 BOOST_CHECK(result);
169
170 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
171 armnn::DataType::Boolean>(reasonIfUnsupported);
172 BOOST_CHECK(!result);
173
174 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
175 armnn::DataType::QSymmS16>(reasonIfUnsupported);
176 BOOST_CHECK(result);
177
178 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
179 armnn::DataType::QSymmS8>(reasonIfUnsupported);
180 BOOST_CHECK(result);
181
182 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
183 armnn::DataType::QAsymmS8>(reasonIfUnsupported);
184 BOOST_CHECK(result);
185
186 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
187 armnn::DataType::BFloat16>(reasonIfUnsupported);
188 BOOST_CHECK(!result);
189}
190
arovir0143095f32018-10-09 18:04:24 +0100191BOOST_AUTO_TEST_SUITE_END()