blob: 370ef6599b19c9b28c7b4b62764b39a71a1f0c3e [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>
Sadik Armagan062e0e92019-10-14 10:31:43 +010016#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010017#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010018#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010019#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010020#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010021#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010022#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010023
24#include <boost/test/unit_test.hpp>
Éanna Ó Catháin20e58802018-12-04 10:29:06 +000025#include <boost/test/execution_monitor.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010026
27BOOST_AUTO_TEST_SUITE(RefEndToEnd)
28
narpra01b9546cf2018-11-20 15:21:28 +000029std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
30
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010031// Abs
32BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
33{
34 AbsEndToEnd<armnn::DataType::Float32>(defaultBackends);
35}
36
37BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
38{
39 AbsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
40}
41
42BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
43{
44 AbsEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends);
45}
46
47// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010048BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
49{
narpra01b9546cf2018-11-20 15:21:28 +000050 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010051}
52
53BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
54{
narpra01b9546cf2018-11-20 15:21:28 +000055 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010056}
57
58BOOST_AUTO_TEST_CASE(Unsigned8)
59{
60 using namespace armnn;
61
62 // Create runtime in which test will run
63 armnn::IRuntime::CreationOptions options;
64 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
65
66 // Builds up the structure of the network.
67 armnn::INetworkPtr net(INetwork::Create());
68
69 IConnectableLayer* input = net->AddInputLayer(0, "input");
70 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
71 IConnectableLayer* output = net->AddOutputLayer(0, "output");
72
73 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
74 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
75
76 // Sets the tensors in the network.
77 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QuantisedAsymm8);
78 inputTensorInfo.SetQuantizationOffset(100);
79 inputTensorInfo.SetQuantizationScale(10000.0f);
80 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
81
82 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QuantisedAsymm8);
83 outputTensorInfo.SetQuantizationOffset(0);
84 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
85 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
86
87 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +000088 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +010089
90 // Loads it into the runtime.
91 NetworkId netId;
92 auto error = runtime->LoadNetwork(netId, std::move(optNet));
93 BOOST_TEST(error == Status::Success);
94
95 // Creates structures for input & output.
96 std::vector<uint8_t> inputData
97 {
98 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
99 };
100 std::vector<uint8_t> outputData(5);
101
102 armnn::InputTensors inputTensors
103 {
104 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
105 };
106 armnn::OutputTensors outputTensors
107 {
108 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
109 };
110
111 // Does the inference.
112 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
113
114 // Checks the results.
115 BOOST_TEST(outputData[0] == 0);
116 BOOST_TEST(outputData[1] == 0);
117 BOOST_TEST(outputData[2] == 0);
118 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
119 BOOST_TEST(outputData[4] == 0);
120}
121
122BOOST_AUTO_TEST_CASE(TrivialAdd)
123{
124 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
125
126 using namespace armnn;
127
128 // Create runtime in which test will run
129 armnn::IRuntime::CreationOptions options;
130 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
131
132 // Builds up the structure of the network.
133 armnn::INetworkPtr net(INetwork::Create());
134
135 IConnectableLayer* input1 = net->AddInputLayer(0);
136 IConnectableLayer* input2 = net->AddInputLayer(1);
137 IConnectableLayer* add = net->AddAdditionLayer();
138 IConnectableLayer* output = net->AddOutputLayer(0);
139
140 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
141 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
142 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
143
144 // Sets the tensors in the network.
145 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
146 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
147 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
148 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
149
150 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000151 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100152
153 // Loads it into the runtime.
154 NetworkId netId;
155 runtime->LoadNetwork(netId, std::move(optNet));
156
157 // Creates structures for input & output - matching android nn test.
158 std::vector<float> input1Data
159 {
160 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
161 };
162 std::vector<float> input2Data
163 {
164 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
165 };
166 std::vector<float> outputData(12);
167
168 InputTensors inputTensors
169 {
170 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
171 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
172 };
173 OutputTensors outputTensors
174 {
175 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
176 };
177
178 // Does the inference.
179 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
180
181 // Checks the results
182 BOOST_TEST(outputData[0] == 101);
183 BOOST_TEST(outputData[1] == 202);
184 BOOST_TEST(outputData[2] == 303);
185 BOOST_TEST(outputData[3] == 404);
186 BOOST_TEST(outputData[4] == 505);
187 BOOST_TEST(outputData[5] == 606);
188 BOOST_TEST(outputData[6] == 707);
189 BOOST_TEST(outputData[7] == 808);
190 BOOST_TEST(outputData[8] == 909);
191 BOOST_TEST(outputData[9] == 1010);
192 BOOST_TEST(outputData[10] == 1111);
193 BOOST_TEST(outputData[11] == 1212);
194}
195
196BOOST_AUTO_TEST_CASE(MultipleOutputs)
197{
198 using namespace armnn;
199
200 // Create runtime in which test will run
201 armnn::IRuntime::CreationOptions options;
202 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
203
204 // Builds up the structure of the network.
205 INetworkPtr net(INetwork::Create());
206
207 IConnectableLayer* input = net->AddInputLayer(0);
208
209 // ReLu1
210 ActivationDescriptor activation1Descriptor;
211 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
212 activation1Descriptor.m_A = 1.f;
213 activation1Descriptor.m_B = -1.f;
214 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
215
216 // ReLu6
217 ActivationDescriptor activation2Descriptor;
218 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
219 activation2Descriptor.m_A = 6.0f;
220 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
221
222 // BoundedReLu(min=2, max=5)
223 ActivationDescriptor activation3Descriptor;
224 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
225 activation3Descriptor.m_A = 5.0f;
226 activation3Descriptor.m_B = 2.0f;
227 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
228
229 IConnectableLayer* output1 = net->AddOutputLayer(0);
230 IConnectableLayer* output2 = net->AddOutputLayer(1);
231 IConnectableLayer* output3 = net->AddOutputLayer(2);
232
233 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
234 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
235 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
236
237 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
238 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
239 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
240
241 // Sets the tensors in the network.
242 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
243 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
244 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
245 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
246 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
247
248 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000249 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100250
251 // Loads it into the runtime.
252 NetworkId netId;
253 runtime->LoadNetwork(netId, std::move(optNet));
254
255 // Creates structures for input & output.
256 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 };
257
258 std::vector<float> output1Data(inputData.size());
259 std::vector<float> output2Data(inputData.size());
260 std::vector<float> output3Data(inputData.size());
261
262 InputTensors inputTensors
263 {
264 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
265 };
266 OutputTensors outputTensors
267 {
268 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
269 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
270 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
271 };
272
273 // Does the inference.
274 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
275
276 // Checks the results.
277 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
278 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
279 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]
280}
281
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000282BOOST_AUTO_TEST_CASE(TrivialMin)
283{
284 using namespace armnn;
285
286 // Create runtime in which test will run
287 armnn::IRuntime::CreationOptions options;
288 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
289
290 // Builds up the structure of the network.
291 armnn::INetworkPtr net(INetwork::Create());
292
293 IConnectableLayer* input1 = net->AddInputLayer(0);
294 IConnectableLayer* input2 = net->AddInputLayer(1);
295 IConnectableLayer* min = net->AddMinimumLayer();
296 IConnectableLayer* output = net->AddOutputLayer(0);
297
298 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
299 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
300 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
301
302 // Sets the tensors in the network.
303 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
304 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
305 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
306 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
307
308 // optimize the network
309 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
310
311 // Loads it into the runtime.
312 NetworkId netId;
313 runtime->LoadNetwork(netId, std::move(optNet));
314
315 // Creates structures for input & output - matching android nn test.
316 std::vector<float> input1Data
317 {
318 1.0f, 2.0f, 3.0f, 4.0f
319 };
320 std::vector<float> input2Data
321 {
322 2.0f, 1.0f, 5.0f, 2.0f
323 };
324 std::vector<float> outputData(4);
325
326 InputTensors inputTensors
327 {
328 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
329 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
330 };
331 OutputTensors outputTensors
332 {
333 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
334 };
335
336 // Does the inference.
337 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
338
339 // Checks the results
340 BOOST_TEST(outputData[0] == 1);
341 BOOST_TEST(outputData[1] == 1);
342 BOOST_TEST(outputData[2] == 3);
343 BOOST_TEST(outputData[3] == 2);
344}
345
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000346BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
347{
kevmay012b4d88e2019-01-24 14:05:09 +0000348 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
349 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000350
kevmay012b4d88e2019-01-24 14:05:09 +0000351 ArithmeticSimpleEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
352 LayerType::Equal,
353 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000354}
355
356BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
357{
kevmay012b4d88e2019-01-24 14:05:09 +0000358 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
359 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000360
kevmay012b4d88e2019-01-24 14:05:09 +0000361 ArithmeticSimpleEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
362 LayerType::Greater,
363 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000364}
365
366BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
367{
368 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
369 0, 0, 0, 0, 1, 1, 1, 1 });
370
kevmay012b4d88e2019-01-24 14:05:09 +0000371 ArithmeticSimpleEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
372 LayerType::Equal,
373 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000374}
375
376BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
377{
378 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
379 0, 0, 0, 0, 0, 0, 0, 0 });
380
kevmay012b4d88e2019-01-24 14:05:09 +0000381 ArithmeticSimpleEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
382 LayerType::Greater,
383 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000384}
385
386BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
387{
kevmay012b4d88e2019-01-24 14:05:09 +0000388 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
389 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000390
kevmay012b4d88e2019-01-24 14:05:09 +0000391 ArithmeticBroadcastEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
392 LayerType::Equal,
393 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000394}
395
396BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
397{
kevmay012b4d88e2019-01-24 14:05:09 +0000398 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
399 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000400
kevmay012b4d88e2019-01-24 14:05:09 +0000401 ArithmeticBroadcastEndToEnd<armnn::DataType::Float32, armnn::DataType::Boolean>(defaultBackends,
402 LayerType::Greater,
403 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000404}
405
406BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
407{
408 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
409 0, 0, 0, 0, 0, 0 });
410
kevmay012b4d88e2019-01-24 14:05:09 +0000411 ArithmeticBroadcastEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
412 LayerType::Equal,
413 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000414}
415
416BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
417{
418 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
419 1, 1, 1, 1, 1, 1 });
420
kevmay012b4d88e2019-01-24 14:05:09 +0000421 ArithmeticBroadcastEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Boolean>(defaultBackends,
422 LayerType::Greater,
423 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000424}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000425
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100426BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
427{
428 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
429}
430
431BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
432{
433 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
434}
435
436BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
437{
438 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
439}
440
441BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
442{
443 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
444}
445
446BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
447{
448 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
449}
450
451BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
452{
453 BatchToSpaceNdEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
454}
455
456BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
457{
458 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
459}
460
461BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
462{
463 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
464}
465
466BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
467{
468 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
469}
470
471BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
472{
473 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
474}
475
476BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
477{
478 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
479}
480
481BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
482{
483 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
484}
485
Jim Flynne242f2d2019-05-22 14:24:13 +0100486BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000487{
Jim Flynne242f2d2019-05-22 14:24:13 +0100488 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000489}
490
Jim Flynne242f2d2019-05-22 14:24:13 +0100491BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000492{
Jim Flynne242f2d2019-05-22 14:24:13 +0100493 ConcatDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000494}
495
Jim Flynne242f2d2019-05-22 14:24:13 +0100496BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000497{
Jim Flynne242f2d2019-05-22 14:24:13 +0100498 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000499}
500
Jim Flynne242f2d2019-05-22 14:24:13 +0100501BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000502{
Jim Flynne242f2d2019-05-22 14:24:13 +0100503 ConcatDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000504}
505
Jim Flynne242f2d2019-05-22 14:24:13 +0100506BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000507{
Jim Flynne242f2d2019-05-22 14:24:13 +0100508 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000509}
510
Jim Flynne242f2d2019-05-22 14:24:13 +0100511BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000512{
Jim Flynne242f2d2019-05-22 14:24:13 +0100513 ConcatDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000514}
515
Jim Flynne242f2d2019-05-22 14:24:13 +0100516BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000517{
Jim Flynne242f2d2019-05-22 14:24:13 +0100518 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000519}
520
Jim Flynne242f2d2019-05-22 14:24:13 +0100521BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000522{
Jim Flynne242f2d2019-05-22 14:24:13 +0100523 ConcatDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000524}
525
narpra01db2b1602019-01-23 15:23:11 +0000526BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
527{
528 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
529}
530
531BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
532{
533 GatherEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
534}
535
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100536BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
537{
538 GatherEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends);
539}
540
narpra01db2b1602019-01-23 15:23:11 +0000541BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
542{
543 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
544}
545
546BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
547{
548 GatherMultiDimEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
549}
550
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100551BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
552{
553 GatherMultiDimEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends);
554}
555
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100556// DepthToSpace
557BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
558{
559 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
560}
561
562BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
563{
564 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
565}
566
567BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
568{
569 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
570}
571
572BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
573{
574 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
575}
576
577BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
578{
579 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
580}
581
582BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
583{
584 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
585}
586
587BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
588{
589 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
590}
591
592BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
593{
594 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
595}
596
597// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100598BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
599{
600 DequantizeEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
601}
602
603BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
604{
605 DequantizeEndToEndOffset<armnn::DataType::QuantisedAsymm8>(defaultBackends);
606}
607
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100608BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
609{
610 DequantizeEndToEndSimple<armnn::DataType::QuantisedSymm16>(defaultBackends);
611}
612
613BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
614{
615 DequantizeEndToEndOffset<armnn::DataType::QuantisedSymm16>(defaultBackends);
616}
617
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000618BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
619{
620 std::vector<float> boxEncodings({
621 0.0f, 0.0f, 0.0f, 0.0f,
622 0.0f, 1.0f, 0.0f, 0.0f,
623 0.0f, -1.0f, 0.0f, 0.0f,
624 0.0f, 0.0f, 0.0f, 0.0f,
625 0.0f, 1.0f, 0.0f, 0.0f,
626 0.0f, 0.0f, 0.0f, 0.0f
627 });
628 std::vector<float> scores({
629 0.0f, 0.9f, 0.8f,
630 0.0f, 0.75f, 0.72f,
631 0.0f, 0.6f, 0.5f,
632 0.0f, 0.93f, 0.95f,
633 0.0f, 0.5f, 0.4f,
634 0.0f, 0.3f, 0.2f
635 });
636 std::vector<float> anchors({
637 0.5f, 0.5f, 1.0f, 1.0f,
638 0.5f, 0.5f, 1.0f, 1.0f,
639 0.5f, 0.5f, 1.0f, 1.0f,
640 0.5f, 10.5f, 1.0f, 1.0f,
641 0.5f, 10.5f, 1.0f, 1.0f,
642 0.5f, 100.5f, 1.0f, 1.0f
643 });
644 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
645}
646
647inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
648{
649 for (size_t i = 0; i < info.GetNumElements(); i++)
650 {
651 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
652 }
653}
654
655BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
656{
657 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
658 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
659 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
660
661 boxEncodingsInfo.SetQuantizationScale(1.0f);
662 boxEncodingsInfo.SetQuantizationOffset(1);
663 scoresInfo.SetQuantizationScale(0.01f);
664 scoresInfo.SetQuantizationOffset(0);
665 anchorsInfo.SetQuantizationScale(0.5f);
666 anchorsInfo.SetQuantizationOffset(0);
667
668 std::vector<float> boxEncodings({
669 0.0f, 0.0f, 0.0f, 0.0f,
670 0.0f, 1.0f, 0.0f, 0.0f,
671 0.0f, -1.0f, 0.0f, 0.0f,
672 0.0f, 0.0f, 0.0f, 0.0f,
673 0.0f, 1.0f, 0.0f, 0.0f,
674 0.0f, 0.0f, 0.0f, 0.0f
675 });
676 std::vector<float> scores({
677 0.0f, 0.9f, 0.8f,
678 0.0f, 0.75f, 0.72f,
679 0.0f, 0.6f, 0.5f,
680 0.0f, 0.93f, 0.95f,
681 0.0f, 0.5f, 0.4f,
682 0.0f, 0.3f, 0.2f
683 });
684 std::vector<float> anchors({
685 0.5f, 0.5f, 1.0f, 1.0f,
686 0.5f, 0.5f, 1.0f, 1.0f,
687 0.5f, 0.5f, 1.0f, 1.0f,
688 0.5f, 10.5f, 1.0f, 1.0f,
689 0.5f, 10.5f, 1.0f, 1.0f,
690 0.5f, 100.5f, 1.0f, 1.0f
691 });
692
693 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
694 std::vector<uint8_t> qScores(scores.size(), 0);
695 std::vector<uint8_t> qAnchors(anchors.size(), 0);
696 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
697 QuantizeData(qScores.data(), scores.data(), scoresInfo);
698 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
699 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, qBoxEncodings,
700 qScores, qAnchors,
701 1.0f, 1, 0.01f, 0, 0.5f, 0);
702}
703
704BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
705{
706 std::vector<float> boxEncodings({
707 0.0f, 0.0f, 0.0f, 0.0f,
708 0.0f, 1.0f, 0.0f, 0.0f,
709 0.0f, -1.0f, 0.0f, 0.0f,
710 0.0f, 0.0f, 0.0f, 0.0f,
711 0.0f, 1.0f, 0.0f, 0.0f,
712 0.0f, 0.0f, 0.0f, 0.0f
713 });
714 std::vector<float> scores({
715 0.0f, 0.9f, 0.8f,
716 0.0f, 0.75f, 0.72f,
717 0.0f, 0.6f, 0.5f,
718 0.0f, 0.93f, 0.95f,
719 0.0f, 0.5f, 0.4f,
720 0.0f, 0.3f, 0.2f
721 });
722 std::vector<float> anchors({
723 0.5f, 0.5f, 1.0f, 1.0f,
724 0.5f, 0.5f, 1.0f, 1.0f,
725 0.5f, 0.5f, 1.0f, 1.0f,
726 0.5f, 10.5f, 1.0f, 1.0f,
727 0.5f, 10.5f, 1.0f, 1.0f,
728 0.5f, 100.5f, 1.0f, 1.0f
729 });
730 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
731}
732
733BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
734{
735 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
736 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
737 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
738
739 boxEncodingsInfo.SetQuantizationScale(1.0f);
740 boxEncodingsInfo.SetQuantizationOffset(1);
741 scoresInfo.SetQuantizationScale(0.01f);
742 scoresInfo.SetQuantizationOffset(0);
743 anchorsInfo.SetQuantizationScale(0.5f);
744 anchorsInfo.SetQuantizationOffset(0);
745
746 std::vector<float> boxEncodings({
747 0.0f, 0.0f, 0.0f, 0.0f,
748 0.0f, 1.0f, 0.0f, 0.0f,
749 0.0f, -1.0f, 0.0f, 0.0f,
750 0.0f, 0.0f, 0.0f, 0.0f,
751 0.0f, 1.0f, 0.0f, 0.0f,
752 0.0f, 0.0f, 0.0f, 0.0f
753 });
754 std::vector<float> scores({
755 0.0f, 0.9f, 0.8f,
756 0.0f, 0.75f, 0.72f,
757 0.0f, 0.6f, 0.5f,
758 0.0f, 0.93f, 0.95f,
759 0.0f, 0.5f, 0.4f,
760 0.0f, 0.3f, 0.2f
761 });
762 std::vector<float> anchors({
763 0.5f, 0.5f, 1.0f, 1.0f,
764 0.5f, 0.5f, 1.0f, 1.0f,
765 0.5f, 0.5f, 1.0f, 1.0f,
766 0.5f, 10.5f, 1.0f, 1.0f,
767 0.5f, 10.5f, 1.0f, 1.0f,
768 0.5f, 100.5f, 1.0f, 1.0f
769 });
770
771 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
772 std::vector<uint8_t> qScores(scores.size(), 0);
773 std::vector<uint8_t> qAnchors(anchors.size(), 0);
774 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
775 QuantizeData(qScores.data(), scores.data(), scoresInfo);
776 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
777 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, qBoxEncodings,
778 qScores, qAnchors,
779 1.0f, 1, 0.01f, 0, 0.5f, 0);
780}
781
Sadik Armagan20bea002019-10-16 09:29:38 +0100782// LogSoftmax
783BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
784{
785 LogSoftmaxEndToEndTest(defaultBackends);
786}
787
Nikhil Raj747f5862019-07-19 15:15:23 +0100788BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
789{
790 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
791}
792
793BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
794{
795 PreluEndToEndPositiveTest<armnn::DataType::QuantisedAsymm8>(defaultBackends);
796}
797
798BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
799{
800 PreluEndToEndPositiveTest<armnn::DataType::QuantisedSymm16>(defaultBackends);
801}
802
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100803BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100804{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100805 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100806}
807
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100808BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100809{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100810 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100811
Keith Davis9515c7e2019-06-21 09:33:59 +0100812}
813
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100814BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100815{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100816 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100817}
818
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100819BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100820{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100821 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100822}
823
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100824BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100825{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100826 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100827}
828
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100829BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100830{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100831 Splitter1dEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100832}
833
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100834BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100835{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100836 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100837}
838
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100839BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100840{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100841 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100842}
843
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100844BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100845{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100846 Splitter2dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100847}
848
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100849BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100850{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100851 Splitter2dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100852}
853
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100854BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100855{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100856 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100857}
858
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100859BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100860{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100861 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
862}
863
864BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
865{
866 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
867}
868
869BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
870{
871 Splitter3dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
872}
873
874BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
875{
876 Splitter3dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
877}
878
879BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
880{
881 Splitter3dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
882}
883
884BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
885{
886 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
887}
888
889BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
890{
891 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
892}
893
894BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
895{
896 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
897}
898
899BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
900{
901 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
902}
903
904BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
905{
906 Splitter4dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
907}
908
909BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
910{
911 Splitter4dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
912}
913
914BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
915{
916 Splitter4dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
917}
918
919BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
920{
921 Splitter4dDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100922}
923
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +0100924// TransposeConvolution2d
925BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
926{
927 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
928 defaultBackends, armnn::DataLayout::NCHW);
929}
930
931BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
932{
933 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
934 defaultBackends, armnn::DataLayout::NCHW);
935}
936
937BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
938{
939 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>(
940 defaultBackends, armnn::DataLayout::NCHW);
941}
942
943BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
944{
945 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
946 defaultBackends, armnn::DataLayout::NHWC);
947}
948
949BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
950{
951 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
952 defaultBackends, armnn::DataLayout::NHWC);
953}
954
955BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
956{
957 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>(
958 defaultBackends, armnn::DataLayout::NHWC);
959}
960
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +0100961// Resize Bilinear
962BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
963{
964 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
965}
966
967BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
968{
969 ResizeBilinearEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
970}
971
972BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
973{
974 ResizeBilinearEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
975}
976
977BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
978{
979 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
980}
981
982BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
983{
984 ResizeBilinearEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
985}
986
987BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
988{
989 ResizeBilinearEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
990}
991
992// Resize NearestNeighbor
993BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
994{
995 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
996}
997
998BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
999{
1000 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
1001}
1002
1003BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1004{
1005 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
1006}
1007
1008BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1009{
1010 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1011}
1012
1013BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1014{
1015 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
1016}
1017
1018BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1019{
1020 ResizeNearestNeighborEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
1021}
1022
Sadik Armagan062e0e92019-10-14 10:31:43 +01001023// InstanceNormalization
1024BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1025{
1026 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1027}
1028
1029BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1030{
1031 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1032}
1033
1034BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1035{
1036 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1037}
1038
1039BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1040{
1041 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1042}
1043
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001044#if !defined(__ANDROID__)
1045// Only run these tests on non Android platforms
1046BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1047{
David Monahan4f1e8e42019-09-04 09:22:10 +01001048 ImportNonAlignedInputPointerTest(defaultBackends);
1049}
1050
1051BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1052{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001053 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001054}
1055
1056BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1057{
1058 ImportAlignedPointerTest(defaultBackends);
1059}
1060
Ferran Balaguer83239f92019-09-19 11:49:25 +01001061BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1062{
1063 ImportOnlyWorkload(defaultBackends);
1064}
1065
1066BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1067{
1068 ExportOnlyWorkload(defaultBackends);
1069}
1070
1071BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1072{
1073 ImportAndExportWorkload(defaultBackends);
1074}
1075
1076BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1077{
1078 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1079}
1080
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001081#endif
1082
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001083BOOST_AUTO_TEST_SUITE_END()