xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializeConvolution3d.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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