1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include <armnnTestUtils/LayerTestResult.hpp> 9 10 #include <ResolveType.hpp> 11 12 #include <armnn/Types.hpp> 13 14 #include <armnn/backends/IBackendInternal.hpp> 15 #include <armnn/backends/WorkloadFactory.hpp> 16 17 // 18 // Convolution2d 19 // 20 21 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 22 LayerTestResult<T, 4> Convolution2d3x3Dilation3x3Test( 23 armnn::IWorkloadFactory& workloadFactory, 24 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 25 const armnn::ITensorHandleFactory& tensorHandleFactory, 26 bool biasEnabled, 27 const armnn::DataLayout layout); 28 29 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 30 LayerTestResult<T, 4> Convolution2d2x3x3Dilation3x3Test( 31 armnn::IWorkloadFactory& workloadFactory, 32 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 33 const armnn::ITensorHandleFactory& tensorHandleFactory, 34 bool biasEnabled, 35 const armnn::DataLayout layout); 36 37 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 38 LayerTestResult<T, 4> Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test( 39 armnn::IWorkloadFactory &workloadFactory, 40 const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, 41 const armnn::ITensorHandleFactory& tensorHandleFactory, 42 bool biasEnabled, 43 const armnn::DataLayout layout); 44 45 LayerTestResult<float, 4> SimpleConvolution2d3x5Test( 46 armnn::IWorkloadFactory& workloadFactory, 47 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 48 const armnn::ITensorHandleFactory& tensorHandleFactory, 49 bool biasEnabled, 50 const armnn::DataLayout layout); 51 52 LayerTestResult<float, 4> SimpleConvolution2d3x3Test( 53 armnn::IWorkloadFactory& workloadFactory, 54 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 55 const armnn::ITensorHandleFactory& tensorHandleFactory, 56 bool biasEnabled, 57 const armnn::DataLayout layout); 58 59 LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test( 60 armnn::IWorkloadFactory& workloadFactory, 61 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 62 const armnn::ITensorHandleFactory& tensorHandleFactory, 63 bool biasEnabled, 64 const armnn::DataLayout layout); 65 66 LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest( 67 armnn::IWorkloadFactory& workloadFactory, 68 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 69 const armnn::ITensorHandleFactory& tensorHandleFactory, 70 bool biasEnabled); 71 72 LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test( 73 armnn::IWorkloadFactory& workloadFactory, 74 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 75 const armnn::ITensorHandleFactory& tensorHandleFactory, 76 bool biasEnabled, 77 const armnn::DataLayout layout); 78 79 LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test( 80 armnn::IWorkloadFactory& workloadFactory, 81 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 82 const armnn::ITensorHandleFactory& tensorHandleFactory, 83 bool biasEnabled, 84 const armnn::DataLayout layout); 85 86 LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test( 87 armnn::IWorkloadFactory& workloadFactory, 88 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 89 const armnn::ITensorHandleFactory& tensorHandleFactory, 90 bool biasEnabled, 91 const armnn::DataLayout layout); 92 93 LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test( 94 armnn::IWorkloadFactory& workloadFactory, 95 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 96 const armnn::ITensorHandleFactory& tensorHandleFactory, 97 bool biasEnabled, 98 const armnn::DataLayout layout); 99 100 LayerTestResult<float, 4> Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest( 101 armnn::IWorkloadFactory& workloadFactory, 102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 103 const armnn::ITensorHandleFactory& tensorHandleFactory, 104 armnn::DataLayout layout); 105 106 LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest( 107 armnn::IWorkloadFactory& workloadFactory, 108 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 109 const armnn::ITensorHandleFactory& tensorHandleFactory, 110 armnn::DataLayout layout); 111 112 LayerTestResult<float, 4> Convolution1dTest( 113 armnn::IWorkloadFactory& workloadFactory, 114 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 115 const armnn::ITensorHandleFactory& tensorHandleFactory, 116 bool biasEnabled); 117 118 LayerTestResult<uint8_t, 4> Convolution1dUint8Test( 119 armnn::IWorkloadFactory& workloadFactory, 120 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 121 const armnn::ITensorHandleFactory& tensorHandleFactory, 122 bool biasEnabled); 123 124 LayerTestResult<float, 4> CompareConvolution2dTest( 125 armnn::IWorkloadFactory& workloadFactory, 126 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 127 armnn::IWorkloadFactory& refWorkloadFactory, 128 const armnn::ITensorHandleFactory& tensorHandleFactory, 129 const armnn::ITensorHandleFactory& refTensorHandleFactory); 130 131 LayerTestResult<uint8_t, 4> Convolution2dPerAxisQuantTest( 132 armnn::IWorkloadFactory& workloadFactory, 133 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 134 const armnn::ITensorHandleFactory& tensorHandleFactory, 135 const armnn::DataLayout layout); 136 137 LayerTestResult<float, 4> Convolution2d3x3Stride2x2BFloat16Test( 138 armnn::IWorkloadFactory& workloadFactory, 139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 140 const armnn::ITensorHandleFactory& tensorHandleFactory, 141 bool biasEnabled, 142 const armnn::DataLayout& dataLayout); 143 144 LayerTestResult<float, 4> Convolution2d3x3Stride2x2BFloat16SmallValueTest( 145 armnn::IWorkloadFactory& workloadFactory, 146 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 147 const armnn::ITensorHandleFactory& tensorHandleFactory, 148 bool biasEnabled, 149 const armnn::DataLayout& dataLayout); 150 151 // 152 // DepthwiseConvolution2d 153 // 154 155 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 156 LayerTestResult<T, 4> DepthwiseConvolution2d3x3Dilation3x3Test( 157 armnn::IWorkloadFactory& workloadFactory, 158 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 159 const armnn::ITensorHandleFactory& tensorHandleFactory, 160 bool biasEnabled, 161 const armnn::DataLayout layout); 162 163 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 164 LayerTestResult<T, 4> DepthwiseConvolution2d2x3x3Dilation3x3Test( 165 armnn::IWorkloadFactory& workloadFactory, 166 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 167 const armnn::ITensorHandleFactory& tensorHandleFactory, 168 bool biasEnabled, 169 const armnn::DataLayout layout); 170 171 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 172 LayerTestResult<T, 4> DepthwiseConvolution2dMult4Test( 173 armnn::IWorkloadFactory& workloadFactory, 174 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 175 const armnn::ITensorHandleFactory& tensorHandleFactory, 176 bool biasEnabled, 177 const armnn::DataLayout layout); 178 179 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> 180 LayerTestResult<T, 4> DepthwiseConvolution2dMult2Test( 181 armnn::IWorkloadFactory& workloadFactory, 182 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 183 const armnn::ITensorHandleFactory& tensorHandleFactory, 184 bool biasEnabled, 185 const armnn::DataLayout layout); 186 187 template<typename T> 188 LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest( 189 armnn::IWorkloadFactory& workloadFactory, 190 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 191 armnn::IWorkloadFactory& refWorkloadFactory, 192 const armnn::ITensorHandleFactory& tensorHandleFactory, 193 const armnn::ITensorHandleFactory& refTensorHandleFactory, 194 const armnn::DataLayout layout); 195 196 LayerTestResult<float, 4> DepthwiseConvolution2dTest( 197 armnn::IWorkloadFactory& workloadFactory, 198 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 199 const armnn::ITensorHandleFactory& tensorHandleFactory, 200 bool biasEnabled, 201 const armnn::DataLayout layout); 202 203 LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest( 204 armnn::IWorkloadFactory& workloadFactory, 205 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 206 const armnn::ITensorHandleFactory& tensorHandleFactory, 207 bool biasEnabled); 208 209 LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test( 210 armnn::IWorkloadFactory& workloadFactory, 211 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 212 const armnn::ITensorHandleFactory& tensorHandleFactory, 213 bool biasEnabled, 214 const armnn::DataLayout layout); 215 216 LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul64Test( 217 armnn::IWorkloadFactory& workloadFactory, 218 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 219 const armnn::ITensorHandleFactory& tensorHandleFactory); 220 221 LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest( 222 armnn::IWorkloadFactory& workloadFactory, 223 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 224 const armnn::ITensorHandleFactory& tensorHandleFactory, 225 bool biasEnabled, 226 const armnn::DataLayout layout); 227 228 LayerTestResult<float, 4> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest( 229 armnn::IWorkloadFactory& workloadFactory, 230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 231 const armnn::ITensorHandleFactory& tensorHandleFactory); 232 233 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test( 234 armnn::IWorkloadFactory& workloadFactory, 235 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 236 const armnn::ITensorHandleFactory& tensorHandleFactory, 237 bool biasEnabled, 238 const armnn::DataLayout layout); 239 240 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test( 241 armnn::IWorkloadFactory& workloadFactory, 242 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 243 const armnn::ITensorHandleFactory& tensorHandleFactory, 244 bool biasEnabled, 245 const armnn::DataLayout layout); 246 247 LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test( 248 armnn::IWorkloadFactory& workloadFactory, 249 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 250 const armnn::ITensorHandleFactory& tensorHandleFactory, 251 bool biasEnabled, 252 const armnn::DataLayout layout); 253 254 LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test( 255 armnn::IWorkloadFactory& workloadFactory, 256 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 257 const armnn::ITensorHandleFactory& tensorHandleFactory, 258 bool biasEnabled, 259 const armnn::DataLayout layout); 260 261 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dPerAxisQuantTest( 262 armnn::IWorkloadFactory& workloadFactory, 263 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 264 const armnn::ITensorHandleFactory& tensorHandleFactory, 265 const armnn::DataLayout layout); 266 267 LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest( 268 armnn::IWorkloadFactory& workloadFactory, 269 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 270 armnn::IWorkloadFactory& refWorkloadFactory, 271 const armnn::ITensorHandleFactory& tensorHandleFactory, 272 const armnn::ITensorHandleFactory& refTensorHandleFactory, 273 const armnn::DataLayout layout); 274 275 LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test( 276 armnn::IWorkloadFactory& workloadFactory, 277 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, 278 armnn::IWorkloadFactory& refWorkloadFactory, 279 const armnn::ITensorHandleFactory& tensorHandleFactory, 280 const armnn::ITensorHandleFactory& refTensorHandleFactory, 281 const armnn::DataLayout layout); 282