blob: c60dbbd7c7bf6e7d37cb482791e4fcf2fd16feed [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 Prangnawarat6d302bf2019-02-04 11:46:26 +00007
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +01008#include <backendsCommon/test/AbsEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01009#include <backendsCommon/test/ArithmeticTestImpl.hpp>
Francis Murtaghe24e3cd2019-06-25 14:41:55 +010010#include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010011#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010012#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010013#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010014#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000015#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010016#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010017#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010018#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010019#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010020#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010021
22#include <boost/test/unit_test.hpp>
Éanna Ó Catháin20e58802018-12-04 10:29:06 +000023#include <boost/test/execution_monitor.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010024
25BOOST_AUTO_TEST_SUITE(RefEndToEnd)
26
narpra01b9546cf2018-11-20 15:21:28 +000027std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
28
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010029// Abs
30BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
31{
32 AbsEndToEnd<armnn::DataType::Float32>(defaultBackends);
33}
34
35BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
36{
37 AbsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
38}
39
40BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
41{
42 AbsEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends);
43}
44
45// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010046BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
47{
narpra01b9546cf2018-11-20 15:21:28 +000048 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010049}
50
51BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
52{
narpra01b9546cf2018-11-20 15:21:28 +000053 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010054}
55
56BOOST_AUTO_TEST_CASE(Unsigned8)
57{
58 using namespace armnn;
59
60 // Create runtime in which test will run
61 armnn::IRuntime::CreationOptions options;
62 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
63
64 // Builds up the structure of the network.
65 armnn::INetworkPtr net(INetwork::Create());
66
67 IConnectableLayer* input = net->AddInputLayer(0, "input");
68 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
69 IConnectableLayer* output = net->AddOutputLayer(0, "output");
70
71 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
72 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
73
74 // Sets the tensors in the network.
75 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QuantisedAsymm8);
76 inputTensorInfo.SetQuantizationOffset(100);
77 inputTensorInfo.SetQuantizationScale(10000.0f);
78 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
79
80 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QuantisedAsymm8);
81 outputTensorInfo.SetQuantizationOffset(0);
82 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
83 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
84
85 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +000086 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +010087
88 // Loads it into the runtime.
89 NetworkId netId;
90 auto error = runtime->LoadNetwork(netId, std::move(optNet));
91 BOOST_TEST(error == Status::Success);
92
93 // Creates structures for input & output.
94 std::vector<uint8_t> inputData
95 {
96 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
97 };
98 std::vector<uint8_t> outputData(5);
99
100 armnn::InputTensors inputTensors
101 {
102 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
103 };
104 armnn::OutputTensors outputTensors
105 {
106 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
107 };
108
109 // Does the inference.
110 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
111
112 // Checks the results.
113 BOOST_TEST(outputData[0] == 0);
114 BOOST_TEST(outputData[1] == 0);
115 BOOST_TEST(outputData[2] == 0);
116 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
117 BOOST_TEST(outputData[4] == 0);
118}
119
120BOOST_AUTO_TEST_CASE(TrivialAdd)
121{
122 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
123
124 using namespace armnn;
125
126 // Create runtime in which test will run
127 armnn::IRuntime::CreationOptions options;
128 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
129
130 // Builds up the structure of the network.
131 armnn::INetworkPtr net(INetwork::Create());
132
133 IConnectableLayer* input1 = net->AddInputLayer(0);
134 IConnectableLayer* input2 = net->AddInputLayer(1);
135 IConnectableLayer* add = net->AddAdditionLayer();
136 IConnectableLayer* output = net->AddOutputLayer(0);
137
138 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
139 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
140 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
141
142 // Sets the tensors in the network.
143 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
144 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
145 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
146 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
147
148 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000149 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100150
151 // Loads it into the runtime.
152 NetworkId netId;
153 runtime->LoadNetwork(netId, std::move(optNet));
154
155 // Creates structures for input & output - matching android nn test.
156 std::vector<float> input1Data
157 {
158 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
159 };
160 std::vector<float> input2Data
161 {
162 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
163 };
164 std::vector<float> outputData(12);
165
166 InputTensors inputTensors
167 {
168 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
169 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
170 };
171 OutputTensors outputTensors
172 {
173 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
174 };
175
176 // Does the inference.
177 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
178
179 // Checks the results
180 BOOST_TEST(outputData[0] == 101);
181 BOOST_TEST(outputData[1] == 202);
182 BOOST_TEST(outputData[2] == 303);
183 BOOST_TEST(outputData[3] == 404);
184 BOOST_TEST(outputData[4] == 505);
185 BOOST_TEST(outputData[5] == 606);
186 BOOST_TEST(outputData[6] == 707);
187 BOOST_TEST(outputData[7] == 808);
188 BOOST_TEST(outputData[8] == 909);
189 BOOST_TEST(outputData[9] == 1010);
190 BOOST_TEST(outputData[10] == 1111);
191 BOOST_TEST(outputData[11] == 1212);
192}
193
194BOOST_AUTO_TEST_CASE(MultipleOutputs)
195{
196 using namespace armnn;
197
198 // Create runtime in which test will run
199 armnn::IRuntime::CreationOptions options;
200 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
201
202 // Builds up the structure of the network.
203 INetworkPtr net(INetwork::Create());
204
205 IConnectableLayer* input = net->AddInputLayer(0);
206
207 // ReLu1
208 ActivationDescriptor activation1Descriptor;
209 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
210 activation1Descriptor.m_A = 1.f;
211 activation1Descriptor.m_B = -1.f;
212 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
213
214 // ReLu6
215 ActivationDescriptor activation2Descriptor;
216 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
217 activation2Descriptor.m_A = 6.0f;
218 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
219
220 // BoundedReLu(min=2, max=5)
221 ActivationDescriptor activation3Descriptor;
222 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
223 activation3Descriptor.m_A = 5.0f;
224 activation3Descriptor.m_B = 2.0f;
225 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
226
227 IConnectableLayer* output1 = net->AddOutputLayer(0);
228 IConnectableLayer* output2 = net->AddOutputLayer(1);
229 IConnectableLayer* output3 = net->AddOutputLayer(2);
230
231 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
232 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
233 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
234
235 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
236 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
237 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
238
239 // Sets the tensors in the network.
240 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
241 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
242 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
243 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
244 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
245
246 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000247 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100248
249 // Loads it into the runtime.
250 NetworkId netId;
251 runtime->LoadNetwork(netId, std::move(optNet));
252
253 // Creates structures for input & output.
254 const std::vector<float> inputData{ 3.f, 5.f, 2.f, 3.f, 7.f, 0.f, -2.f, -1.f, 3.f, 3.f };
255
256 std::vector<float> output1Data(inputData.size());
257 std::vector<float> output2Data(inputData.size());
258 std::vector<float> output3Data(inputData.size());
259
260 InputTensors inputTensors
261 {
262 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
263 };
264 OutputTensors outputTensors
265 {
266 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
267 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
268 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
269 };
270
271 // Does the inference.
272 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
273
274 // Checks the results.
275 BOOST_TEST(output1Data == std::vector<float>({ 1.f, 1.f, 1.f, 1.f, 1.f, 0.f, -1.f, -1.f, 1.f, 1.f })); // ReLu1
276 BOOST_TEST(output2Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 6.f, 0.f, 0.f, 0.f, 3.f, 3.f })); // ReLu6
277 BOOST_TEST(output3Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 5.f, 2.f, 2.f, 2.f, 3.f, 3.f })); // [2, 5]
278}
279
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000280BOOST_AUTO_TEST_CASE(TrivialMin)
281{
282 using namespace armnn;
283
284 // Create runtime in which test will run
285 armnn::IRuntime::CreationOptions options;
286 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
287
288 // Builds up the structure of the network.
289 armnn::INetworkPtr net(INetwork::Create());
290
291 IConnectableLayer* input1 = net->AddInputLayer(0);
292 IConnectableLayer* input2 = net->AddInputLayer(1);
293 IConnectableLayer* min = net->AddMinimumLayer();
294 IConnectableLayer* output = net->AddOutputLayer(0);
295
296 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
297 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
298 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
299
300 // Sets the tensors in the network.
301 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
302 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
303 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
304 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
305
306 // optimize the network
307 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
308
309 // Loads it into the runtime.
310 NetworkId netId;
311 runtime->LoadNetwork(netId, std::move(optNet));
312
313 // Creates structures for input & output - matching android nn test.
314 std::vector<float> input1Data
315 {
316 1.0f, 2.0f, 3.0f, 4.0f
317 };
318 std::vector<float> input2Data
319 {
320 2.0f, 1.0f, 5.0f, 2.0f
321 };
322 std::vector<float> outputData(4);
323
324 InputTensors inputTensors
325 {
326 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
327 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
328 };
329 OutputTensors outputTensors
330 {
331 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
332 };
333
334 // Does the inference.
335 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
336
337 // Checks the results
338 BOOST_TEST(outputData[0] == 1);
339 BOOST_TEST(outputData[1] == 1);
340 BOOST_TEST(outputData[2] == 3);
341 BOOST_TEST(outputData[3] == 2);
342}
343
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000344BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
345{
kevmay012b4d88e2019-01-24 14:05:09 +0000346 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
347 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000348
kevmay012b4d88e2019-01-24 14:05:09 +0000349 ArithmeticSimpleEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
350 LayerType::Equal,
351 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000352}
353
354BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
355{
kevmay012b4d88e2019-01-24 14:05:09 +0000356 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
357 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000358
kevmay012b4d88e2019-01-24 14:05:09 +0000359 ArithmeticSimpleEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
360 LayerType::Greater,
361 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000362}
363
364BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
365{
366 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
367 0, 0, 0, 0, 1, 1, 1, 1 });
368
kevmay012b4d88e2019-01-24 14:05:09 +0000369 ArithmeticSimpleEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
370 LayerType::Equal,
371 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000372}
373
374BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
375{
376 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
377 0, 0, 0, 0, 0, 0, 0, 0 });
378
kevmay012b4d88e2019-01-24 14:05:09 +0000379 ArithmeticSimpleEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
380 LayerType::Greater,
381 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000382}
383
384BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
385{
kevmay012b4d88e2019-01-24 14:05:09 +0000386 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
387 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000388
kevmay012b4d88e2019-01-24 14:05:09 +0000389 ArithmeticBroadcastEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
390 LayerType::Equal,
391 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000392}
393
394BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
395{
kevmay012b4d88e2019-01-24 14:05:09 +0000396 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
397 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000398
kevmay012b4d88e2019-01-24 14:05:09 +0000399 ArithmeticBroadcastEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
400 LayerType::Greater,
401 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000402}
403
404BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
405{
406 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
407 0, 0, 0, 0, 0, 0 });
408
kevmay012b4d88e2019-01-24 14:05:09 +0000409 ArithmeticBroadcastEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
410 LayerType::Equal,
411 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000412}
413
414BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
415{
416 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
417 1, 1, 1, 1, 1, 1 });
418
kevmay012b4d88e2019-01-24 14:05:09 +0000419 ArithmeticBroadcastEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
420 LayerType::Greater,
421 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000423
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100424BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
425{
426 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
427}
428
429BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
430{
431 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
432}
433
434BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
435{
436 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
437}
438
439BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
440{
441 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
442}
443
444BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
445{
446 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
447}
448
449BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
450{
451 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
452}
453
454BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
455{
456 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
457}
458
459BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
460{
461 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
462}
463
464BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
465{
466 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
467}
468
469BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
470{
471 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
472}
473
474BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
475{
476 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
477}
478
479BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
480{
481 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
482}
483
Jim Flynne242f2d2019-05-22 14:24:13 +0100484BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000485{
Jim Flynne242f2d2019-05-22 14:24:13 +0100486 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000487}
488
Jim Flynne242f2d2019-05-22 14:24:13 +0100489BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000490{
Jim Flynne242f2d2019-05-22 14:24:13 +0100491 ConcatDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000492}
493
Jim Flynne242f2d2019-05-22 14:24:13 +0100494BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000495{
Jim Flynne242f2d2019-05-22 14:24:13 +0100496 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000497}
498
Jim Flynne242f2d2019-05-22 14:24:13 +0100499BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000500{
Jim Flynne242f2d2019-05-22 14:24:13 +0100501 ConcatDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000502}
503
Jim Flynne242f2d2019-05-22 14:24:13 +0100504BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000505{
Jim Flynne242f2d2019-05-22 14:24:13 +0100506 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000507}
508
Jim Flynne242f2d2019-05-22 14:24:13 +0100509BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000510{
Jim Flynne242f2d2019-05-22 14:24:13 +0100511 ConcatDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000512}
513
Jim Flynne242f2d2019-05-22 14:24:13 +0100514BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000515{
Jim Flynne242f2d2019-05-22 14:24:13 +0100516 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000517}
518
Jim Flynne242f2d2019-05-22 14:24:13 +0100519BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000520{
Jim Flynne242f2d2019-05-22 14:24:13 +0100521 ConcatDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000522}
523
narpra01db2b1602019-01-23 15:23:11 +0000524BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
525{
526 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
527}
528
529BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
530{
531 GatherEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
532}
533
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100534BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
535{
536 GatherEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends);
537}
538
narpra01db2b1602019-01-23 15:23:11 +0000539BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
540{
541 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
542}
543
544BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
545{
546 GatherMultiDimEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
547}
548
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100549BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
550{
551 GatherMultiDimEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends);
552}
553
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100554// DepthToSpace
555BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
556{
557 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
558}
559
560BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
561{
562 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
563}
564
565BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
566{
567 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
568}
569
570BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
571{
572 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
573}
574
575BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
576{
577 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
578}
579
580BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
581{
582 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
583}
584
585BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
586{
587 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
588}
589
590BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
591{
592 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
593}
594
595// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100596BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
597{
598 DequantizeEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
599}
600
601BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
602{
603 DequantizeEndToEndOffset<armnn::DataType::QuantisedAsymm8>(defaultBackends);
604}
605
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100606BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
607{
608 DequantizeEndToEndSimple<armnn::DataType::QuantisedSymm16>(defaultBackends);
609}
610
611BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
612{
613 DequantizeEndToEndOffset<armnn::DataType::QuantisedSymm16>(defaultBackends);
614}
615
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000616BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
617{
618 std::vector<float> boxEncodings({
619 0.0f, 0.0f, 0.0f, 0.0f,
620 0.0f, 1.0f, 0.0f, 0.0f,
621 0.0f, -1.0f, 0.0f, 0.0f,
622 0.0f, 0.0f, 0.0f, 0.0f,
623 0.0f, 1.0f, 0.0f, 0.0f,
624 0.0f, 0.0f, 0.0f, 0.0f
625 });
626 std::vector<float> scores({
627 0.0f, 0.9f, 0.8f,
628 0.0f, 0.75f, 0.72f,
629 0.0f, 0.6f, 0.5f,
630 0.0f, 0.93f, 0.95f,
631 0.0f, 0.5f, 0.4f,
632 0.0f, 0.3f, 0.2f
633 });
634 std::vector<float> anchors({
635 0.5f, 0.5f, 1.0f, 1.0f,
636 0.5f, 0.5f, 1.0f, 1.0f,
637 0.5f, 0.5f, 1.0f, 1.0f,
638 0.5f, 10.5f, 1.0f, 1.0f,
639 0.5f, 10.5f, 1.0f, 1.0f,
640 0.5f, 100.5f, 1.0f, 1.0f
641 });
642 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
643}
644
645inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
646{
647 for (size_t i = 0; i < info.GetNumElements(); i++)
648 {
649 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
650 }
651}
652
653BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
654{
655 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
656 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
657 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
658
659 boxEncodingsInfo.SetQuantizationScale(1.0f);
660 boxEncodingsInfo.SetQuantizationOffset(1);
661 scoresInfo.SetQuantizationScale(0.01f);
662 scoresInfo.SetQuantizationOffset(0);
663 anchorsInfo.SetQuantizationScale(0.5f);
664 anchorsInfo.SetQuantizationOffset(0);
665
666 std::vector<float> boxEncodings({
667 0.0f, 0.0f, 0.0f, 0.0f,
668 0.0f, 1.0f, 0.0f, 0.0f,
669 0.0f, -1.0f, 0.0f, 0.0f,
670 0.0f, 0.0f, 0.0f, 0.0f,
671 0.0f, 1.0f, 0.0f, 0.0f,
672 0.0f, 0.0f, 0.0f, 0.0f
673 });
674 std::vector<float> scores({
675 0.0f, 0.9f, 0.8f,
676 0.0f, 0.75f, 0.72f,
677 0.0f, 0.6f, 0.5f,
678 0.0f, 0.93f, 0.95f,
679 0.0f, 0.5f, 0.4f,
680 0.0f, 0.3f, 0.2f
681 });
682 std::vector<float> anchors({
683 0.5f, 0.5f, 1.0f, 1.0f,
684 0.5f, 0.5f, 1.0f, 1.0f,
685 0.5f, 0.5f, 1.0f, 1.0f,
686 0.5f, 10.5f, 1.0f, 1.0f,
687 0.5f, 10.5f, 1.0f, 1.0f,
688 0.5f, 100.5f, 1.0f, 1.0f
689 });
690
691 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
692 std::vector<uint8_t> qScores(scores.size(), 0);
693 std::vector<uint8_t> qAnchors(anchors.size(), 0);
694 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
695 QuantizeData(qScores.data(), scores.data(), scoresInfo);
696 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
697 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, qBoxEncodings,
698 qScores, qAnchors,
699 1.0f, 1, 0.01f, 0, 0.5f, 0);
700}
701
702BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
703{
704 std::vector<float> boxEncodings({
705 0.0f, 0.0f, 0.0f, 0.0f,
706 0.0f, 1.0f, 0.0f, 0.0f,
707 0.0f, -1.0f, 0.0f, 0.0f,
708 0.0f, 0.0f, 0.0f, 0.0f,
709 0.0f, 1.0f, 0.0f, 0.0f,
710 0.0f, 0.0f, 0.0f, 0.0f
711 });
712 std::vector<float> scores({
713 0.0f, 0.9f, 0.8f,
714 0.0f, 0.75f, 0.72f,
715 0.0f, 0.6f, 0.5f,
716 0.0f, 0.93f, 0.95f,
717 0.0f, 0.5f, 0.4f,
718 0.0f, 0.3f, 0.2f
719 });
720 std::vector<float> anchors({
721 0.5f, 0.5f, 1.0f, 1.0f,
722 0.5f, 0.5f, 1.0f, 1.0f,
723 0.5f, 0.5f, 1.0f, 1.0f,
724 0.5f, 10.5f, 1.0f, 1.0f,
725 0.5f, 10.5f, 1.0f, 1.0f,
726 0.5f, 100.5f, 1.0f, 1.0f
727 });
728 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
729}
730
731BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
732{
733 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
734 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
735 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
736
737 boxEncodingsInfo.SetQuantizationScale(1.0f);
738 boxEncodingsInfo.SetQuantizationOffset(1);
739 scoresInfo.SetQuantizationScale(0.01f);
740 scoresInfo.SetQuantizationOffset(0);
741 anchorsInfo.SetQuantizationScale(0.5f);
742 anchorsInfo.SetQuantizationOffset(0);
743
744 std::vector<float> boxEncodings({
745 0.0f, 0.0f, 0.0f, 0.0f,
746 0.0f, 1.0f, 0.0f, 0.0f,
747 0.0f, -1.0f, 0.0f, 0.0f,
748 0.0f, 0.0f, 0.0f, 0.0f,
749 0.0f, 1.0f, 0.0f, 0.0f,
750 0.0f, 0.0f, 0.0f, 0.0f
751 });
752 std::vector<float> scores({
753 0.0f, 0.9f, 0.8f,
754 0.0f, 0.75f, 0.72f,
755 0.0f, 0.6f, 0.5f,
756 0.0f, 0.93f, 0.95f,
757 0.0f, 0.5f, 0.4f,
758 0.0f, 0.3f, 0.2f
759 });
760 std::vector<float> anchors({
761 0.5f, 0.5f, 1.0f, 1.0f,
762 0.5f, 0.5f, 1.0f, 1.0f,
763 0.5f, 0.5f, 1.0f, 1.0f,
764 0.5f, 10.5f, 1.0f, 1.0f,
765 0.5f, 10.5f, 1.0f, 1.0f,
766 0.5f, 100.5f, 1.0f, 1.0f
767 });
768
769 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
770 std::vector<uint8_t> qScores(scores.size(), 0);
771 std::vector<uint8_t> qAnchors(anchors.size(), 0);
772 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
773 QuantizeData(qScores.data(), scores.data(), scoresInfo);
774 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
775 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, qBoxEncodings,
776 qScores, qAnchors,
777 1.0f, 1, 0.01f, 0, 0.5f, 0);
778}
779
Nikhil Raj747f5862019-07-19 15:15:23 +0100780BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
781{
782 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
783}
784
785BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
786{
787 PreluEndToEndPositiveTest<armnn::DataType::QuantisedAsymm8>(defaultBackends);
788}
789
790BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
791{
792 PreluEndToEndPositiveTest<armnn::DataType::QuantisedSymm16>(defaultBackends);
793}
794
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100795BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100796{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100797 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100798}
799
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100800BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100801{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100802 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100803
Keith Davis9515c7e2019-06-21 09:33:59 +0100804}
805
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100806BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100807{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100808 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100809}
810
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100811BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100812{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100813 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100814}
815
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100816BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100817{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100818 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100819}
820
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100821BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100822{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100823 Splitter1dEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100824}
825
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100826BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100827{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100828 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100829}
830
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100831BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100832{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100833 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100834}
835
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100836BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100837{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100838 Splitter2dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100839}
840
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100841BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100842{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100843 Splitter2dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100844}
845
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100846BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100847{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100848 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100849}
850
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100851BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100852{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100853 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
854}
855
856BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
857{
858 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
859}
860
861BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
862{
863 Splitter3dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
864}
865
866BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
867{
868 Splitter3dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
869}
870
871BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
872{
873 Splitter3dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
874}
875
876BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
877{
878 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
879}
880
881BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
882{
883 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
884}
885
886BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
887{
888 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
889}
890
891BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
892{
893 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
894}
895
896BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
897{
898 Splitter4dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
899}
900
901BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
902{
903 Splitter4dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
904}
905
906BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
907{
908 Splitter4dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
909}
910
911BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
912{
913 Splitter4dDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100914}
915
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +0100916// TransposeConvolution2d
917BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
918{
919 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
920 defaultBackends, armnn::DataLayout::NCHW);
921}
922
923BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
924{
925 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
926 defaultBackends, armnn::DataLayout::NCHW);
927}
928
929BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
930{
931 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>(
932 defaultBackends, armnn::DataLayout::NCHW);
933}
934
935BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
936{
937 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
938 defaultBackends, armnn::DataLayout::NHWC);
939}
940
941BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
942{
943 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
944 defaultBackends, armnn::DataLayout::NHWC);
945}
946
947BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
948{
949 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>(
950 defaultBackends, armnn::DataLayout::NHWC);
951}
952
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +0100953// Resize Bilinear
954BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
955{
956 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
957}
958
959BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
960{
961 ResizeBilinearEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
962}
963
964BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
965{
966 ResizeBilinearEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
967}
968
969BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
970{
971 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
972}
973
974BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
975{
976 ResizeBilinearEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
977}
978
979BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
980{
981 ResizeBilinearEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
982}
983
984// Resize NearestNeighbor
985BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
986{
987 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
988}
989
990BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
991{
992 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
993}
994
995BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
996{
997 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
998}
999
1000BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1001{
1002 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1003}
1004
1005BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1006{
1007 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
1008}
1009
1010BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1011{
1012 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
1013}
1014
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001015#if !defined(__ANDROID__)
1016// Only run these tests on non Android platforms
1017BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1018{
David Monahan4f1e8e42019-09-04 09:22:10 +01001019 ImportNonAlignedInputPointerTest(defaultBackends);
1020}
1021
1022BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1023{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001024 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001025}
1026
1027BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1028{
1029 ImportAlignedPointerTest(defaultBackends);
1030}
1031
Ferran Balaguer83239f92019-09-19 11:49:25 +01001032BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1033{
1034 ImportOnlyWorkload(defaultBackends);
1035}
1036
1037BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1038{
1039 ExportOnlyWorkload(defaultBackends);
1040}
1041
1042BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1043{
1044 ImportAndExportWorkload(defaultBackends);
1045}
1046
1047BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1048{
1049 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1050}
1051
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001052#endif
1053
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001054BOOST_AUTO_TEST_SUITE_END()