blob: fa9a8253131a495d608a268ce1c510ce01afa016 [file] [log] [blame]
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00003// SPDX-License-Identifier: MIT
4//
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00005
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01006#include "DebugTestImpl.hpp"
7
Colm Donelanc42a9872022-02-02 16:35:09 +00008#include <armnnUtils/QuantizeHelper.hpp>
Keith Davis15f9c682022-10-14 15:50:33 +01009#include <armnnUtils/Filesystem.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010010#include <ResolveType.hpp>
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000011
Sadik Armagana097d2a2021-11-24 15:47:28 +000012#include <armnnTestUtils/TensorCopyUtils.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000013#include <armnnTestUtils/WorkloadTestUtils.hpp>
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000014
Colm Donelanc42a9872022-02-02 16:35:09 +000015#include <armnnTestUtils/TensorHelpers.hpp>
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000016
Sadik Armagan1625efc2021-06-10 18:24:34 +010017#include <doctest/doctest.h>
Keith Davis15f9c682022-10-14 15:50:33 +010018#include <armnnUtils/Filesystem.hpp>
Sadik Armagan1625efc2021-06-10 18:24:34 +010019
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000020namespace
21{
22
23template<typename T, std::size_t Dim>
24LayerTestResult<T, Dim> DebugTestImpl(
25 armnn::IWorkloadFactory& workloadFactory,
26 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
27 armnn::TensorInfo& inputTensorInfo,
28 armnn::TensorInfo& outputTensorInfo,
29 std::vector<float>& inputData,
30 std::vector<float>& outputExpectedData,
31 armnn::DebugQueueDescriptor descriptor,
32 const std::string expectedStringOutput,
Keith Davis15f9c682022-10-14 15:50:33 +010033 const std::string& layerName,
34 bool toFile,
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000035 const float qScale = 1.0f,
36 const int32_t qOffset = 0)
37{
Jan Eilers8eb25602020-03-09 12:13:48 +000038 IgnoreUnused(memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000039 if(armnn::IsQuantizedType<T>())
40 {
41 inputTensorInfo.SetQuantizationScale(qScale);
42 inputTensorInfo.SetQuantizationOffset(qOffset);
43
44 outputTensorInfo.SetQuantizationScale(qScale);
45 outputTensorInfo.SetQuantizationOffset(qOffset);
46 }
47
Sadik Armagan483c8112021-06-01 09:24:52 +010048 std::vector<T> input = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000049
Sadik Armagan483c8112021-06-01 09:24:52 +010050 std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
51 std::vector<T> expectedOutput = armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000052
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +010053 ARMNN_NO_DEPRECATE_WARN_BEGIN
54 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
55 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
56 ARMNN_NO_DEPRECATE_WARN_END
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000057
58 armnn::WorkloadInfo info;
59 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
60 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
61
Teresa Charlin611c7fb2022-01-07 09:47:29 +000062 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Debug,
63 descriptor,
64 info);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000065
66 inputHandle->Allocate();
67 outputHandle->Allocate();
68
69 CopyDataToITensorHandle(inputHandle.get(), input.data());
Matteo Martincigh49124022019-01-11 13:25:59 +000070
Keith Davis15f9c682022-10-14 15:50:33 +010071 if (toFile)
72 {
73 fs::path tmpDir = fs::temp_directory_path();
74 std::string full_path = tmpDir.generic_string() + "/ArmNNIntermediateLayerOutputs/" + layerName + ".numpy";
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000075
Keith Davis15f9c682022-10-14 15:50:33 +010076 ExecuteWorkload(*workload, memoryManager);
Matteo Martincigh49124022019-01-11 13:25:59 +000077
Keith Davis15f9c682022-10-14 15:50:33 +010078 armnnUtils::Filesystem::FileContents output = armnnUtils::Filesystem::ReadFileContentsIntoString(full_path);
79 CHECK((output == expectedStringOutput));
80 }
81 else
82 {
83 std::ostringstream oss;
84 std::streambuf* coutStreambuf = std::cout.rdbuf();
85 std::cout.rdbuf(oss.rdbuf());
Matteo Martincigh49124022019-01-11 13:25:59 +000086
Keith Davis15f9c682022-10-14 15:50:33 +010087 ExecuteWorkload(*workload, memoryManager);
88
89 std::cout.rdbuf(coutStreambuf);
90 CHECK(oss.str() == expectedStringOutput);
91 }
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000092
Sadik Armagan483c8112021-06-01 09:24:52 +010093 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000094
Sadik Armagan483c8112021-06-01 09:24:52 +010095 return LayerTestResult<T, Dim>(actualOutput,
96 expectedOutput,
97 outputHandle->GetShape(),
98 outputTensorInfo.GetShape());
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000099}
100
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000101template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100102LayerTestResult<T, 4> Debug4dTest(
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000103 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100104 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
105 bool toFile = false)
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000106{
107 armnn::TensorInfo inputTensorInfo;
108 armnn::TensorInfo outputTensorInfo;
109
110 unsigned int inputShape[] = {1, 2, 2, 3};
111 unsigned int outputShape[] = {1, 2, 2, 3};
112
113 armnn::DebugQueueDescriptor desc;
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000114 desc.m_Guid = 1;
115 desc.m_LayerName = "TestOutput";
116 desc.m_SlotIndex = 0;
Keith Davis15f9c682022-10-14 15:50:33 +0100117 desc.m_LayerOutputToFile = toFile;
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000118
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000119 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
120 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000121
122 std::vector<float> input = std::vector<float>(
123 {
124 1.0f, 2.0f, 3.0f,
125 4.0f, 5.0f, 6.0f,
126 7.0f, 8.0f, 9.0f,
127 10.0f, 11.0f, 12.0f,
128 });
129
130 std::vector<float> outputExpected = std::vector<float>(
131 {
132 1.0f, 2.0f, 3.0f,
133 4.0f, 5.0f, 6.0f,
134 7.0f, 8.0f, 9.0f,
135 10.0f, 11.0f, 12.0f,
136 });
137
138 const std::string expectedStringOutput =
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000139 "{ \"layerGuid\": 1,"
140 " \"layerName\": \"TestOutput\","
141 " \"outputSlot\": 0,"
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000142 " \"shape\": [1, 2, 2, 3],"
143 " \"min\": 1, \"max\": 12,"
144 " \"data\": [[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]] }\n";
145
146 return DebugTestImpl<T, 4>(workloadFactory,
147 memoryManager,
148 inputTensorInfo,
149 outputTensorInfo,
150 input,
151 outputExpected,
152 desc,
Keith Davis15f9c682022-10-14 15:50:33 +0100153 expectedStringOutput,
154 desc.m_LayerName,
155 toFile);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000156}
157
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000158template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100159LayerTestResult<T, 3> Debug3dTest(
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000160 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100161 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
162 bool toFile = false)
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000163{
164 armnn::TensorInfo inputTensorInfo;
165 armnn::TensorInfo outputTensorInfo;
166
167 unsigned int inputShape[] = {3, 3, 1};
168 unsigned int outputShape[] = {3, 3, 1};
169
170 armnn::DebugQueueDescriptor desc;
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000171 desc.m_Guid = 1;
172 desc.m_LayerName = "TestOutput";
173 desc.m_SlotIndex = 0;
Keith Davis15f9c682022-10-14 15:50:33 +0100174 desc.m_LayerOutputToFile = toFile;
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000175
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000176 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
177 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000178
179 std::vector<float> input = std::vector<float>(
180 {
181 1.0f, 2.0f, 3.0f,
182 4.0f, 5.0f, 6.0f,
183 7.0f, 8.0f, 9.0f,
184 });
185
186 std::vector<float> outputExpected = std::vector<float>(
187 {
188 1.0f, 2.0f, 3.0f,
189 4.0f, 5.0f, 6.0f,
190 7.0f, 8.0f, 9.0f,
191 });
192
193 const std::string expectedStringOutput =
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000194 "{ \"layerGuid\": 1,"
195 " \"layerName\": \"TestOutput\","
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000196 " \"outputSlot\": 0,"
197 " \"shape\": [3, 3, 1],"
198 " \"min\": 1, \"max\": 9,"
199 " \"data\": [[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]] }\n";
200
201 return DebugTestImpl<T, 3>(workloadFactory,
202 memoryManager,
203 inputTensorInfo,
204 outputTensorInfo,
205 input,
206 outputExpected,
207 desc,
Keith Davis15f9c682022-10-14 15:50:33 +0100208 expectedStringOutput,
209 desc.m_LayerName,
210 toFile);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000211}
212
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000213template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100214LayerTestResult<T, 2> Debug2dTest(
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000215 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100216 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
217 bool toFile = false)
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000218{
219 armnn::TensorInfo inputTensorInfo;
220 armnn::TensorInfo outputTensorInfo;
221
222 unsigned int inputShape[] = {2, 2};
223 unsigned int outputShape[] = {2, 2};
224
225 armnn::DebugQueueDescriptor desc;
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000226 desc.m_Guid = 1;
227 desc.m_LayerName = "TestOutput";
228 desc.m_SlotIndex = 0;
Keith Davis15f9c682022-10-14 15:50:33 +0100229 desc.m_LayerOutputToFile = toFile;
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000230
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000231 inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
232 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000233
234 std::vector<float> input = std::vector<float>(
235 {
236 1.0f, 2.0f,
237 3.0f, 4.0f,
238 });
239
240 std::vector<float> outputExpected = std::vector<float>(
241 {
242 1.0f, 2.0f,
243 3.0f, 4.0f,
244 });
245
246 const std::string expectedStringOutput =
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000247 "{ \"layerGuid\": 1,"
248 " \"layerName\": \"TestOutput\","
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000249 " \"outputSlot\": 0,"
250 " \"shape\": [2, 2],"
251 " \"min\": 1, \"max\": 4,"
252 " \"data\": [[1, 2], [3, 4]] }\n";
253
254 return DebugTestImpl<T, 2>(workloadFactory,
255 memoryManager,
256 inputTensorInfo,
257 outputTensorInfo,
258 input,
259 outputExpected,
260 desc,
Keith Davis15f9c682022-10-14 15:50:33 +0100261 expectedStringOutput,
262 desc.m_LayerName,
263 toFile);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000264}
265
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000266template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100267LayerTestResult<T, 1> Debug1dTest(
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000268 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100269 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
270 bool toFile = false)
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000271{
272 armnn::TensorInfo inputTensorInfo;
273 armnn::TensorInfo outputTensorInfo;
274
275 unsigned int inputShape[] = {4};
276 unsigned int outputShape[] = {4};
277
278 armnn::DebugQueueDescriptor desc;
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000279 desc.m_Guid = 1;
280 desc.m_LayerName = "TestOutput";
281 desc.m_SlotIndex = 0;
Keith Davis15f9c682022-10-14 15:50:33 +0100282 desc.m_LayerOutputToFile = toFile;
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000283
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000284 inputTensorInfo = armnn::TensorInfo(1, inputShape, ArmnnType);
285 outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000286
287 std::vector<float> input = std::vector<float>(
288 {
289 1.0f, 2.0f, 3.0f, 4.0f,
290 });
291
292 std::vector<float> outputExpected = std::vector<float>(
293 {
294 1.0f, 2.0f, 3.0f, 4.0f,
295 });
296
297 const std::string expectedStringOutput =
Nattapat Chaimanowong964e9552019-03-26 11:03:26 +0000298 "{ \"layerGuid\": 1,"
299 " \"layerName\": \"TestOutput\","
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000300 " \"outputSlot\": 0,"
301 " \"shape\": [4],"
302 " \"min\": 1, \"max\": 4,"
303 " \"data\": [1, 2, 3, 4] }\n";
304
305 return DebugTestImpl<T, 1>(workloadFactory,
306 memoryManager,
307 inputTensorInfo,
308 outputTensorInfo,
309 input,
310 outputExpected,
311 desc,
Keith Davis15f9c682022-10-14 15:50:33 +0100312 expectedStringOutput,
313 desc.m_LayerName,
314 toFile);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +0000315}
316
317} // anonymous namespace
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100318
319LayerTestResult<float, 4> Debug4dFloat32Test(
320 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100321 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
322 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100323{
Keith Davis15f9c682022-10-14 15:50:33 +0100324 return Debug4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100325}
326
327LayerTestResult<float, 3> Debug3dFloat32Test(
328 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100329 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
330 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100331{
Keith Davis15f9c682022-10-14 15:50:33 +0100332 return Debug3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100333}
334
335LayerTestResult<float, 2> Debug2dFloat32Test(
336 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100337 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
338 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100339{
Keith Davis15f9c682022-10-14 15:50:33 +0100340 return Debug2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100341}
342
343LayerTestResult<float, 1> Debug1dFloat32Test(
344 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100345 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
346 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100347{
Keith Davis15f9c682022-10-14 15:50:33 +0100348 return Debug1dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100349}
350
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000351LayerTestResult<armnn::BFloat16, 4> Debug4dBFloat16Test(
352 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100353 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
354 bool toFile = false)
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000355{
Keith Davis15f9c682022-10-14 15:50:33 +0100356 return Debug4dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000357}
358
359LayerTestResult<armnn::BFloat16, 3> Debug3dBFloat16Test(
360 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100361 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
362 bool toFile = false)
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000363{
Keith Davis15f9c682022-10-14 15:50:33 +0100364 return Debug3dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000365}
366
367LayerTestResult<armnn::BFloat16, 2> Debug2dBFloat16Test(
368 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100369 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
370 bool toFile = false)
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000371{
Keith Davis15f9c682022-10-14 15:50:33 +0100372 return Debug2dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000373}
374
375LayerTestResult<armnn::BFloat16, 1> Debug1dBFloat16Test(
376 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100377 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
378 bool toFile = false)
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000379{
Keith Davis15f9c682022-10-14 15:50:33 +0100380 return Debug1dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
Narumol Prangnawarat403a1852020-03-12 14:24:13 +0000381}
382
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100383LayerTestResult<uint8_t, 4> Debug4dUint8Test(
384 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100385 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
386 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100387{
Keith Davis15f9c682022-10-14 15:50:33 +0100388 return Debug4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100389}
390
391LayerTestResult<uint8_t, 3> Debug3dUint8Test(
392 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100393 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
394 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100395{
Keith Davis15f9c682022-10-14 15:50:33 +0100396 return Debug3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100397}
398
399LayerTestResult<uint8_t, 2> Debug2dUint8Test(
400 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100401 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
402 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100403{
Keith Davis15f9c682022-10-14 15:50:33 +0100404 return Debug2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100405}
406
407LayerTestResult<uint8_t, 1> Debug1dUint8Test(
408 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100409 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
410 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100411{
Keith Davis15f9c682022-10-14 15:50:33 +0100412 return Debug1dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100413}
414
415LayerTestResult<int16_t, 4> Debug4dInt16Test(
416 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100417 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
418 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100419{
Keith Davis15f9c682022-10-14 15:50:33 +0100420 return Debug4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100421}
422
423LayerTestResult<int16_t, 3> Debug3dInt16Test(
424 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100425 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
426 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100427{
Keith Davis15f9c682022-10-14 15:50:33 +0100428 return Debug3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100429}
430
431LayerTestResult<int16_t, 2> Debug2dInt16Test(
432 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100433 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
434 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100435{
Keith Davis15f9c682022-10-14 15:50:33 +0100436 return Debug2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100437}
438
439LayerTestResult<int16_t, 1> Debug1dInt16Test(
440 armnn::IWorkloadFactory& workloadFactory,
Keith Davis15f9c682022-10-14 15:50:33 +0100441 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
442 bool toFile = false)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100443{
Keith Davis15f9c682022-10-14 15:50:33 +0100444 return Debug1dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100445}