blob: 26f15b77da9cfce5dd420940d601559c28f1473d [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <backendsCommon/test/EndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +01007
Aron Virginas-Tar82046942019-09-09 15:18:29 +01008#include <backendsCommon/test/AbsEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +01009#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010010#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010011#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010012#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010013#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj2ec73ac2019-07-22 10:13:22 +010014#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010015#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
James Conroy60597842019-07-02 10:57:56 +010016#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010017#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Aron Virginas-Tar7a3e2fe2019-06-27 18:54:47 +010018#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010019
20#include <boost/test/unit_test.hpp>
21
22BOOST_AUTO_TEST_SUITE(ClEndToEnd)
23
narpra01b9546cf2018-11-20 15:21:28 +000024std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::GpuAcc};
25
Aron Virginas-Tar82046942019-09-09 15:18:29 +010026// Abs
27BOOST_AUTO_TEST_CASE(ClAbsEndToEndTestFloat32)
28{
29 AbsEndToEnd<armnn::DataType::Float32>(defaultBackends);
30}
31
32// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010033BOOST_AUTO_TEST_CASE(ConstantUsage_Cl_Float32)
34{
narpra01b9546cf2018-11-20 15:21:28 +000035 ConstantUsageFloat32Test(defaultBackends);
36}
37
Jim Flynne242f2d2019-05-22 14:24:13 +010038BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +000039{
Jim Flynne242f2d2019-05-22 14:24:13 +010040 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +000041}
42
Jim Flynne242f2d2019-05-22 14:24:13 +010043BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +000044{
Jim Flynne242f2d2019-05-22 14:24:13 +010045 ConcatDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +000046}
47
Jim Flynne242f2d2019-05-22 14:24:13 +010048BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +000049{
Jim Flynne242f2d2019-05-22 14:24:13 +010050 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +000051}
52
Jim Flynne242f2d2019-05-22 14:24:13 +010053BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +000054{
Jim Flynne242f2d2019-05-22 14:24:13 +010055 ConcatDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +000056}
57
Jim Flynne242f2d2019-05-22 14:24:13 +010058BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +000059{
Jim Flynne242f2d2019-05-22 14:24:13 +010060 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +000061}
62
Jim Flynne242f2d2019-05-22 14:24:13 +010063BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +000064{
Jim Flynne242f2d2019-05-22 14:24:13 +010065 ConcatDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Aron Virginas-Tar70104002018-10-24 15:33:28 +010066}
67
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010068// DepthToSpace
69BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
70{
71 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
72}
73
74BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
75{
76 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
77}
78
79BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
80{
81 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
82}
83
84BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
85{
86 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
87}
88
89BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
90{
91 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
92}
93
94BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
95{
96 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
97}
98
99BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
100{
101 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
102}
103
104BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
105{
106 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
107}
108
109// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100110BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
111{
112 DequantizeEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
113}
114
115BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
116{
117 DequantizeEndToEndOffset<armnn::DataType::QuantisedAsymm8>(defaultBackends);
118}
119
Nattapat Chaimanowongc6a41ff2019-01-29 09:56:02 +0000120BOOST_AUTO_TEST_CASE(ClGreaterSimpleEndToEndTest)
121{
122 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
123 0, 0, 0, 0, 0, 0, 0, 0 });
124
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100125 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
126 ComparisonOperation::Greater,
127 expectedOutput);
Nattapat Chaimanowongc6a41ff2019-01-29 09:56:02 +0000128}
129
130BOOST_AUTO_TEST_CASE(ClGreaterSimpleEndToEndUint8Test)
131{
132 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
133 0, 0, 0, 0, 0, 0, 0, 0 });
134
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100135 ComparisonSimpleEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends,
136 ComparisonOperation::Greater,
137 expectedOutput);
Nattapat Chaimanowongc6a41ff2019-01-29 09:56:02 +0000138}
139
140BOOST_AUTO_TEST_CASE(ClGreaterBroadcastEndToEndTest)
141{
142 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
143 1, 1, 1, 1, 1, 1 });
144
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100145 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
146 ComparisonOperation::Greater,
147 expectedOutput);
Nattapat Chaimanowongc6a41ff2019-01-29 09:56:02 +0000148}
149
150BOOST_AUTO_TEST_CASE(ClGreaterBroadcastEndToEndUint8Test)
151{
152 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
153 1, 1, 1, 1, 1, 1 });
154
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100155 ComparisonBroadcastEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends,
156 ComparisonOperation::Greater,
157 expectedOutput);
Nattapat Chaimanowongc6a41ff2019-01-29 09:56:02 +0000158}
159
Sadik Armagan062e0e92019-10-14 10:31:43 +0100160// InstanceNormalization
161BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNhwcEndToEndTest1)
162{
163 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
164}
165
166BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest1)
167{
168 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
169}
170
171BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNhwcEndToEndTest2)
172{
173 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
174}
175
176BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest2)
177{
178 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
179}
180
Nikhil Raj2ec73ac2019-07-22 10:13:22 +0100181BOOST_AUTO_TEST_CASE(ClPreluEndToEndFloat32Test)
182{
183 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
184}
185
186BOOST_AUTO_TEST_CASE(ClPreluEndToEndTestUint8)
187{
188 PreluEndToEndPositiveTest<armnn::DataType::QuantisedAsymm8>(defaultBackends);
189}
190
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100191BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest1)
James Conroy60597842019-07-02 10:57:56 +0100192{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100193 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
James Conroy60597842019-07-02 10:57:56 +0100194}
195
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100196BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest1)
James Conroy60597842019-07-02 10:57:56 +0100197{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100198 SpaceToDepthNchwEndToEndTest1(defaultBackends);
James Conroy60597842019-07-02 10:57:56 +0100199}
200
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100201BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest2)
James Conroy60597842019-07-02 10:57:56 +0100202{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100203 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
James Conroy60597842019-07-02 10:57:56 +0100204}
205
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100206BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest2)
James Conroy60597842019-07-02 10:57:56 +0100207{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100208 SpaceToDepthNchwEndToEndTest2(defaultBackends);
James Conroy60597842019-07-02 10:57:56 +0100209}
210
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100211BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100212{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100213 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100214}
215
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100216BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100217{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100218 Splitter1dEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100219}
220
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100221BOOST_AUTO_TEST_CASE(ClSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100222{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100223 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100224}
225
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100226BOOST_AUTO_TEST_CASE(ClSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100227{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100228 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100229}
230
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100231BOOST_AUTO_TEST_CASE(ClSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100232{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100233 Splitter2dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100234}
235
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100236BOOST_AUTO_TEST_CASE(ClSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100237{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100238 Splitter2dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100239}
240
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100241BOOST_AUTO_TEST_CASE(ClSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100242{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100243 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100244}
245
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100246BOOST_AUTO_TEST_CASE(ClSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100247{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100248 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100249}
250
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100251BOOST_AUTO_TEST_CASE(ClSplitter3dDim2EndToEndTest)
252{
253 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
254}
255
256BOOST_AUTO_TEST_CASE(ClSplitter3dDim0EndToEndUint8Test)
257{
258 Splitter3dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
259}
260
261BOOST_AUTO_TEST_CASE(ClSplitter3dDim1EndToEndUint8Test)
262{
263 Splitter3dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
264}
265
266BOOST_AUTO_TEST_CASE(ClSplitter3dDim2EndToEndUint8Test)
267{
268 Splitter3dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
269}
270
271BOOST_AUTO_TEST_CASE(ClSplitter4dDim0EndToEndTest)
272{
273 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
274}
275
276BOOST_AUTO_TEST_CASE(ClSplitter4dDim1EndToEndTest)
277{
278 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
279}
280
281BOOST_AUTO_TEST_CASE(ClSplitter4dDim2EndToEndTest)
282{
283 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
284}
285
286BOOST_AUTO_TEST_CASE(ClSplitter4dDim3EndToEndTest)
287{
288 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
289}
290
291BOOST_AUTO_TEST_CASE(ClSplitter4dDim0EndToEndUint8Test)
292{
293 Splitter4dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
294}
295
296BOOST_AUTO_TEST_CASE(ClSplitter4dDim1EndToEndUint8Test)
297{
298 Splitter4dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
299}
300
301BOOST_AUTO_TEST_CASE(ClSplitter4dDim2EndToEndUint8Test)
302{
303 Splitter4dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
304}
305
306BOOST_AUTO_TEST_CASE(ClSplitter4dDim3EndToEndUint8Test)
307{
308 Splitter4dDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
309}
Nattapat Chaimanowongc6a41ff2019-01-29 09:56:02 +0000310
Aron Virginas-Tar7a3e2fe2019-06-27 18:54:47 +0100311// TransposeConvolution2d
312BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndFloatNchwTest)
313{
314 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
315 defaultBackends, armnn::DataLayout::NCHW);
316}
317
318BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndUint8NchwTest)
319{
320 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
321 defaultBackends, armnn::DataLayout::NCHW);
322}
323
324BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndFloatNhwcTest)
325{
326 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
327 defaultBackends, armnn::DataLayout::NHWC);
328}
329
330BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndUint8NhwcTest)
331{
332 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
333 defaultBackends, armnn::DataLayout::NHWC);
334}
335
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100336BOOST_AUTO_TEST_CASE(ClQuantizedLstmEndToEndTest)
337{
338 QuantizedLstmEndToEnd(defaultBackends);
339}
340
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100341BOOST_AUTO_TEST_SUITE_END()