1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #include "ParserFlatbuffersSerializeFixture.hpp" 7*89c4ff92SAndroid Build Coastguard Worker #include <armnnDeserializer/IDeserializer.hpp> 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker #include <string> 10*89c4ff92SAndroid Build Coastguard Worker 11*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Deserializer_Convolution3d") 12*89c4ff92SAndroid Build Coastguard Worker { 13*89c4ff92SAndroid Build Coastguard Worker struct Convolution3dFixture : public ParserFlatbuffersSerializeFixture 14*89c4ff92SAndroid Build Coastguard Worker { Convolution3dFixtureConvolution3dFixture15*89c4ff92SAndroid Build Coastguard Worker explicit Convolution3dFixture(const std::string& inputShape, 16*89c4ff92SAndroid Build Coastguard Worker const std::string& outputShape, 17*89c4ff92SAndroid Build Coastguard Worker const std::string& weightsShape, 18*89c4ff92SAndroid Build Coastguard Worker const std::string& dataType) 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker m_JsonString = R"( 21*89c4ff92SAndroid Build Coastguard Worker { 22*89c4ff92SAndroid Build Coastguard Worker inputIds: [0], 23*89c4ff92SAndroid Build Coastguard Worker outputIds: [2], 24*89c4ff92SAndroid Build Coastguard Worker layers: [ 25*89c4ff92SAndroid Build Coastguard Worker { 26*89c4ff92SAndroid Build Coastguard Worker layer_type: "InputLayer", 27*89c4ff92SAndroid Build Coastguard Worker layer: { 28*89c4ff92SAndroid Build Coastguard Worker base: { 29*89c4ff92SAndroid Build Coastguard Worker layerBindingId: 0, 30*89c4ff92SAndroid Build Coastguard Worker base: { 31*89c4ff92SAndroid Build Coastguard Worker layerName: "InputLayer", 32*89c4ff92SAndroid Build Coastguard Worker layerType: "Input", 33*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker ], 36*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ 37*89c4ff92SAndroid Build Coastguard Worker { 38*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 39*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + inputShape + R"(, 40*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"(, 41*89c4ff92SAndroid Build Coastguard Worker quantizationScale: 0.1, 42*89c4ff92SAndroid Build Coastguard Worker dimensionSpecificity: [ 43*89c4ff92SAndroid Build Coastguard Worker true, 44*89c4ff92SAndroid Build Coastguard Worker true, 45*89c4ff92SAndroid Build Coastguard Worker true, 46*89c4ff92SAndroid Build Coastguard Worker true, 47*89c4ff92SAndroid Build Coastguard Worker true 48*89c4ff92SAndroid Build Coastguard Worker ] 49*89c4ff92SAndroid Build Coastguard Worker } 50*89c4ff92SAndroid Build Coastguard Worker } 51*89c4ff92SAndroid Build Coastguard Worker ] 52*89c4ff92SAndroid Build Coastguard Worker } 53*89c4ff92SAndroid Build Coastguard Worker } 54*89c4ff92SAndroid Build Coastguard Worker } 55*89c4ff92SAndroid Build Coastguard Worker }, 56*89c4ff92SAndroid Build Coastguard Worker { 57*89c4ff92SAndroid Build Coastguard Worker layer_type: "ConstantLayer", 58*89c4ff92SAndroid Build Coastguard Worker layer: { 59*89c4ff92SAndroid Build Coastguard Worker base: { 60*89c4ff92SAndroid Build Coastguard Worker index: 1, 61*89c4ff92SAndroid Build Coastguard Worker layerName: "Weights", 62*89c4ff92SAndroid Build Coastguard Worker layerType: "Constant", 63*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 64*89c4ff92SAndroid Build Coastguard Worker 65*89c4ff92SAndroid Build Coastguard Worker ], 66*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ 67*89c4ff92SAndroid Build Coastguard Worker { 68*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 69*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + weightsShape + R"(, 70*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"(, 71*89c4ff92SAndroid Build Coastguard Worker quantizationScale: 0.1, 72*89c4ff92SAndroid Build Coastguard Worker dimensionSpecificity: [ 73*89c4ff92SAndroid Build Coastguard Worker true, 74*89c4ff92SAndroid Build Coastguard Worker true, 75*89c4ff92SAndroid Build Coastguard Worker true, 76*89c4ff92SAndroid Build Coastguard Worker true, 77*89c4ff92SAndroid Build Coastguard Worker true 78*89c4ff92SAndroid Build Coastguard Worker ] 79*89c4ff92SAndroid Build Coastguard Worker } 80*89c4ff92SAndroid Build Coastguard Worker } 81*89c4ff92SAndroid Build Coastguard Worker ] 82*89c4ff92SAndroid Build Coastguard Worker }, 83*89c4ff92SAndroid Build Coastguard Worker input: { 84*89c4ff92SAndroid Build Coastguard Worker info: { 85*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + weightsShape + R"(, 86*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"(, 87*89c4ff92SAndroid Build Coastguard Worker quantizationScale: 0.1, 88*89c4ff92SAndroid Build Coastguard Worker dimensionSpecificity: [ 89*89c4ff92SAndroid Build Coastguard Worker true, 90*89c4ff92SAndroid Build Coastguard Worker true, 91*89c4ff92SAndroid Build Coastguard Worker true, 92*89c4ff92SAndroid Build Coastguard Worker true, 93*89c4ff92SAndroid Build Coastguard Worker true 94*89c4ff92SAndroid Build Coastguard Worker ] 95*89c4ff92SAndroid Build Coastguard Worker }, 96*89c4ff92SAndroid Build Coastguard Worker data_type: "ByteData", 97*89c4ff92SAndroid Build Coastguard Worker data: { 98*89c4ff92SAndroid Build Coastguard Worker data: [ 99*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 100*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 101*89c4ff92SAndroid Build Coastguard Worker 1, 1, 1, 102*89c4ff92SAndroid Build Coastguard Worker 103*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0, 104*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0, 105*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0, 106*89c4ff92SAndroid Build Coastguard Worker 107*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0, 108*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0, 109*89c4ff92SAndroid Build Coastguard Worker 0, 0, 0 110*89c4ff92SAndroid Build Coastguard Worker ] 111*89c4ff92SAndroid Build Coastguard Worker } 112*89c4ff92SAndroid Build Coastguard Worker } 113*89c4ff92SAndroid Build Coastguard Worker } 114*89c4ff92SAndroid Build Coastguard Worker }, 115*89c4ff92SAndroid Build Coastguard Worker { 116*89c4ff92SAndroid Build Coastguard Worker layer_type: "Convolution3dLayer", 117*89c4ff92SAndroid Build Coastguard Worker layer: { 118*89c4ff92SAndroid Build Coastguard Worker base: { 119*89c4ff92SAndroid Build Coastguard Worker index: 2, 120*89c4ff92SAndroid Build Coastguard Worker layerName: "convolution3d", 121*89c4ff92SAndroid Build Coastguard Worker layerType: "Convolution3d", 122*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 123*89c4ff92SAndroid Build Coastguard Worker { 124*89c4ff92SAndroid Build Coastguard Worker connection: { 125*89c4ff92SAndroid Build Coastguard Worker sourceLayerIndex: 0, 126*89c4ff92SAndroid Build Coastguard Worker outputSlotIndex: 0 127*89c4ff92SAndroid Build Coastguard Worker } 128*89c4ff92SAndroid Build Coastguard Worker }, 129*89c4ff92SAndroid Build Coastguard Worker { 130*89c4ff92SAndroid Build Coastguard Worker index: 1, 131*89c4ff92SAndroid Build Coastguard Worker connection: { 132*89c4ff92SAndroid Build Coastguard Worker sourceLayerIndex: 1, 133*89c4ff92SAndroid Build Coastguard Worker outputSlotIndex: 0 134*89c4ff92SAndroid Build Coastguard Worker } 135*89c4ff92SAndroid Build Coastguard Worker } 136*89c4ff92SAndroid Build Coastguard Worker ], 137*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ 138*89c4ff92SAndroid Build Coastguard Worker { 139*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 140*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + outputShape + R"(, 141*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"(, 142*89c4ff92SAndroid Build Coastguard Worker quantizationScale: 0.1, 143*89c4ff92SAndroid Build Coastguard Worker dimensionSpecificity: [ 144*89c4ff92SAndroid Build Coastguard Worker true, 145*89c4ff92SAndroid Build Coastguard Worker true, 146*89c4ff92SAndroid Build Coastguard Worker true, 147*89c4ff92SAndroid Build Coastguard Worker true, 148*89c4ff92SAndroid Build Coastguard Worker true 149*89c4ff92SAndroid Build Coastguard Worker ] 150*89c4ff92SAndroid Build Coastguard Worker } 151*89c4ff92SAndroid Build Coastguard Worker } 152*89c4ff92SAndroid Build Coastguard Worker ] 153*89c4ff92SAndroid Build Coastguard Worker }, 154*89c4ff92SAndroid Build Coastguard Worker descriptor: { 155*89c4ff92SAndroid Build Coastguard Worker strideX: 2, 156*89c4ff92SAndroid Build Coastguard Worker strideY: 2, 157*89c4ff92SAndroid Build Coastguard Worker strideZ: 2 158*89c4ff92SAndroid Build Coastguard Worker } 159*89c4ff92SAndroid Build Coastguard Worker } 160*89c4ff92SAndroid Build Coastguard Worker }, 161*89c4ff92SAndroid Build Coastguard Worker { 162*89c4ff92SAndroid Build Coastguard Worker layer_type: "OutputLayer", 163*89c4ff92SAndroid Build Coastguard Worker layer: { 164*89c4ff92SAndroid Build Coastguard Worker base: { 165*89c4ff92SAndroid Build Coastguard Worker layerBindingId: 2, 166*89c4ff92SAndroid Build Coastguard Worker base: { 167*89c4ff92SAndroid Build Coastguard Worker index: 3, 168*89c4ff92SAndroid Build Coastguard Worker layerName: "OutputLayer", 169*89c4ff92SAndroid Build Coastguard Worker layerType: "Output", 170*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 171*89c4ff92SAndroid Build Coastguard Worker { 172*89c4ff92SAndroid Build Coastguard Worker connection: { 173*89c4ff92SAndroid Build Coastguard Worker sourceLayerIndex: 2, 174*89c4ff92SAndroid Build Coastguard Worker outputSlotIndex: 0 175*89c4ff92SAndroid Build Coastguard Worker } 176*89c4ff92SAndroid Build Coastguard Worker } 177*89c4ff92SAndroid Build Coastguard Worker ], 178*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ 179*89c4ff92SAndroid Build Coastguard Worker 180*89c4ff92SAndroid Build Coastguard Worker ] 181*89c4ff92SAndroid Build Coastguard Worker } 182*89c4ff92SAndroid Build Coastguard Worker } 183*89c4ff92SAndroid Build Coastguard Worker } 184*89c4ff92SAndroid Build Coastguard Worker } 185*89c4ff92SAndroid Build Coastguard Worker ], 186*89c4ff92SAndroid Build Coastguard Worker featureVersions: { 187*89c4ff92SAndroid Build Coastguard Worker bindingIdsScheme: 1, 188*89c4ff92SAndroid Build Coastguard Worker weightsLayoutScheme: 1, 189*89c4ff92SAndroid Build Coastguard Worker constantTensorsAsInputs: 1 190*89c4ff92SAndroid Build Coastguard Worker } 191*89c4ff92SAndroid Build Coastguard Worker } 192*89c4ff92SAndroid Build Coastguard Worker )"; 193*89c4ff92SAndroid Build Coastguard Worker Setup(); 194*89c4ff92SAndroid Build Coastguard Worker } 195*89c4ff92SAndroid Build Coastguard Worker 196*89c4ff92SAndroid Build Coastguard Worker 197*89c4ff92SAndroid Build Coastguard Worker }; 198*89c4ff92SAndroid Build Coastguard Worker 199*89c4ff92SAndroid Build Coastguard Worker struct SimpleConvolution3dFixture : Convolution3dFixture 200*89c4ff92SAndroid Build Coastguard Worker { SimpleConvolution3dFixtureSimpleConvolution3dFixture201*89c4ff92SAndroid Build Coastguard Worker SimpleConvolution3dFixture() : Convolution3dFixture( 202*89c4ff92SAndroid Build Coastguard Worker "[ 1, 5, 5, 5, 1 ]", 203*89c4ff92SAndroid Build Coastguard Worker "[ 1, 2, 2, 2, 1 ]", 204*89c4ff92SAndroid Build Coastguard Worker "[ 3, 3, 3, 1, 1 ]", 205*89c4ff92SAndroid Build Coastguard Worker "QAsymmS8") {} 206*89c4ff92SAndroid Build Coastguard Worker }; 207*89c4ff92SAndroid Build Coastguard Worker 208*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleConvolution3dFixture, "Convolution3dInt8") 209*89c4ff92SAndroid Build Coastguard Worker { 210*89c4ff92SAndroid Build Coastguard Worker RunTest<5, armnn::DataType::QAsymmS8>( 211*89c4ff92SAndroid Build Coastguard Worker 0, 212*89c4ff92SAndroid Build Coastguard Worker {{"InputLayer", { 0, 1, 2, 3, 4, 213*89c4ff92SAndroid Build Coastguard Worker 5, 6, 7, 8, 9, 214*89c4ff92SAndroid Build Coastguard Worker 10, 11, 12, 13, 14, 215*89c4ff92SAndroid Build Coastguard Worker 15, 16, 17, 18, 19, 216*89c4ff92SAndroid Build Coastguard Worker 217*89c4ff92SAndroid Build Coastguard Worker 20, 21, 22, 23, 24, 218*89c4ff92SAndroid Build Coastguard Worker 25, 26, 27, 28, 29, 219*89c4ff92SAndroid Build Coastguard Worker 30, 31, 32, 33, 34, 220*89c4ff92SAndroid Build Coastguard Worker 35, 36, 37, 38, 39, 221*89c4ff92SAndroid Build Coastguard Worker 40, 41, 42, 43, 44, 222*89c4ff92SAndroid Build Coastguard Worker 223*89c4ff92SAndroid Build Coastguard Worker 45, 46, 47, 48, 49, 224*89c4ff92SAndroid Build Coastguard Worker 50, 51, 52, 53, 54, 225*89c4ff92SAndroid Build Coastguard Worker 55, 56, 57, 58, 59, 226*89c4ff92SAndroid Build Coastguard Worker 60, 61, 62, 63, 64, 227*89c4ff92SAndroid Build Coastguard Worker 65, 66, 67, 68, 69, 228*89c4ff92SAndroid Build Coastguard Worker 229*89c4ff92SAndroid Build Coastguard Worker 70, 71, 72, 73, 74, 230*89c4ff92SAndroid Build Coastguard Worker 75, 76, 77, 78, 79, 231*89c4ff92SAndroid Build Coastguard Worker 80, 81, 82, 83, 84, 232*89c4ff92SAndroid Build Coastguard Worker 85, 86, 87, 88, 89, 233*89c4ff92SAndroid Build Coastguard Worker 90, 91, 92, 93, 94, 234*89c4ff92SAndroid Build Coastguard Worker 95, 96, 97, 98, 99, 235*89c4ff92SAndroid Build Coastguard Worker 236*89c4ff92SAndroid Build Coastguard Worker 100, 101, 102, 103, 104, 237*89c4ff92SAndroid Build Coastguard Worker 105, 106, 107, 108, 109, 238*89c4ff92SAndroid Build Coastguard Worker 110, 111, 112, 113, 114, 239*89c4ff92SAndroid Build Coastguard Worker 115, 116, 117, 118, 119, 240*89c4ff92SAndroid Build Coastguard Worker 120, 121, 122, 123, 124 241*89c4ff92SAndroid Build Coastguard Worker }}}, 242*89c4ff92SAndroid Build Coastguard Worker {{"OutputLayer", {5, 7, 243*89c4ff92SAndroid Build Coastguard Worker 244*89c4ff92SAndroid Build Coastguard Worker 14, 16, 245*89c4ff92SAndroid Build Coastguard Worker 246*89c4ff92SAndroid Build Coastguard Worker 50, 52, 247*89c4ff92SAndroid Build Coastguard Worker 248*89c4ff92SAndroid Build Coastguard Worker 59, 61}}}); 249*89c4ff92SAndroid Build Coastguard Worker } 250*89c4ff92SAndroid Build Coastguard Worker 251*89c4ff92SAndroid Build Coastguard Worker } 252