• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) Facebook, Inc. and its affiliates.
2 // All rights reserved.
3 //
4 // Copyright 2019 Google LLC
5 //
6 // This source code is licensed under the BSD-style license found in the
7 // LICENSE file in the root directory of this source tree.
8 
9 #include <gtest/gtest.h>
10 
11 #include "fully-connected-operator-tester.h"
12 
13 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch)14 TEST(FULLY_CONNECTED_NC_QS8, unit_batch) {
15   FullyConnectedOperatorTester()
16     .batch_size(1)
17     .input_channels(23)
18     .output_channels(19)
19     .iterations(3)
20     .TestQS8();
21 }
22 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch_with_qmin)23 TEST(FULLY_CONNECTED_NC_QS8, unit_batch_with_qmin) {
24   FullyConnectedOperatorTester()
25     .batch_size(1)
26     .input_channels(23)
27     .output_channels(19)
28     .qmin(128)
29     .iterations(3)
30     .TestQS8();
31 }
32 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch_with_qmax)33 TEST(FULLY_CONNECTED_NC_QS8, unit_batch_with_qmax) {
34   FullyConnectedOperatorTester()
35     .batch_size(1)
36     .input_channels(23)
37     .output_channels(19)
38     .qmax(128)
39     .iterations(3)
40     .TestQS8();
41 }
42 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch_with_input_stride)43 TEST(FULLY_CONNECTED_NC_QS8, unit_batch_with_input_stride) {
44   FullyConnectedOperatorTester()
45     .batch_size(1)
46     .input_channels(23)
47     .input_stride(28)
48     .output_channels(19)
49     .iterations(3)
50     .TestQS8();
51 }
52 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch_with_output_stride)53 TEST(FULLY_CONNECTED_NC_QS8, unit_batch_with_output_stride) {
54   FullyConnectedOperatorTester()
55     .batch_size(1)
56     .input_channels(23)
57     .output_channels(19)
58     .output_stride(29)
59     .iterations(3)
60     .TestQS8();
61 }
62 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch_transpose_weights)63 TEST(FULLY_CONNECTED_NC_QS8, unit_batch_transpose_weights) {
64   FullyConnectedOperatorTester()
65     .transpose_weights(true)
66     .batch_size(1)
67     .input_channels(23)
68     .output_channels(19)
69     .iterations(3)
70     .TestQS8();
71 }
72 
TEST(FULLY_CONNECTED_NC_QS8,unit_batch_without_bias)73 TEST(FULLY_CONNECTED_NC_QS8, unit_batch_without_bias) {
74   FullyConnectedOperatorTester()
75     .has_bias(false)
76     .batch_size(1)
77     .input_channels(23)
78     .output_channels(19)
79     .iterations(3)
80     .TestQS8();
81 }
82 
TEST(FULLY_CONNECTED_NC_QS8,small_batch)83 TEST(FULLY_CONNECTED_NC_QS8, small_batch) {
84   FullyConnectedOperatorTester()
85     .batch_size(12)
86     .input_channels(23)
87     .output_channels(19)
88     .iterations(3)
89     .TestQS8();
90 }
91 
TEST(FULLY_CONNECTED_NC_QS8,small_batch_with_qmin)92 TEST(FULLY_CONNECTED_NC_QS8, small_batch_with_qmin) {
93   FullyConnectedOperatorTester()
94     .batch_size(12)
95     .input_channels(23)
96     .output_channels(19)
97     .qmin(128)
98     .iterations(3)
99     .TestQS8();
100 }
101 
TEST(FULLY_CONNECTED_NC_QS8,small_batch_with_qmax)102 TEST(FULLY_CONNECTED_NC_QS8, small_batch_with_qmax) {
103   FullyConnectedOperatorTester()
104     .batch_size(12)
105     .input_channels(23)
106     .output_channels(19)
107     .qmax(128)
108     .iterations(3)
109     .TestQS8();
110 }
111 
TEST(FULLY_CONNECTED_NC_QS8,small_batch_with_input_stride)112 TEST(FULLY_CONNECTED_NC_QS8, small_batch_with_input_stride) {
113   FullyConnectedOperatorTester()
114     .batch_size(12)
115     .input_channels(23)
116     .input_stride(28)
117     .output_channels(19)
118     .iterations(3)
119     .TestQS8();
120 }
121 
TEST(FULLY_CONNECTED_NC_QS8,small_batch_with_output_stride)122 TEST(FULLY_CONNECTED_NC_QS8, small_batch_with_output_stride) {
123   FullyConnectedOperatorTester()
124     .batch_size(12)
125     .input_channels(23)
126     .output_channels(19)
127     .output_stride(29)
128     .iterations(3)
129     .TestQS8();
130 }
131 
TEST(FULLY_CONNECTED_NC_QS8,small_batch_transpose_weights)132 TEST(FULLY_CONNECTED_NC_QS8, small_batch_transpose_weights) {
133   FullyConnectedOperatorTester()
134     .transpose_weights(true)
135     .batch_size(12)
136     .input_channels(23)
137     .output_channels(19)
138     .iterations(3)
139     .TestQS8();
140 }
141 
TEST(FULLY_CONNECTED_NC_QS8,small_batch_without_bias)142 TEST(FULLY_CONNECTED_NC_QS8, small_batch_without_bias) {
143   FullyConnectedOperatorTester()
144     .has_bias(false)
145     .batch_size(12)
146     .input_channels(23)
147     .output_channels(19)
148     .iterations(3)
149     .TestQS8();
150 }
151 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch)152 TEST(FULLY_CONNECTED_NC_QU8, unit_batch) {
153   FullyConnectedOperatorTester()
154     .batch_size(1)
155     .input_channels(23)
156     .output_channels(19)
157     .iterations(3)
158     .TestQU8();
159 }
160 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch_with_qmin)161 TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_qmin) {
162   FullyConnectedOperatorTester()
163     .batch_size(1)
164     .input_channels(23)
165     .output_channels(19)
166     .qmin(128)
167     .iterations(3)
168     .TestQU8();
169 }
170 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch_with_qmax)171 TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_qmax) {
172   FullyConnectedOperatorTester()
173     .batch_size(1)
174     .input_channels(23)
175     .output_channels(19)
176     .qmax(128)
177     .iterations(3)
178     .TestQU8();
179 }
180 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch_with_input_stride)181 TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_input_stride) {
182   FullyConnectedOperatorTester()
183     .batch_size(1)
184     .input_channels(23)
185     .input_stride(28)
186     .output_channels(19)
187     .iterations(3)
188     .TestQU8();
189 }
190 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch_with_output_stride)191 TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_output_stride) {
192   FullyConnectedOperatorTester()
193     .batch_size(1)
194     .input_channels(23)
195     .output_channels(19)
196     .output_stride(29)
197     .iterations(3)
198     .TestQU8();
199 }
200 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch_transpose_weights)201 TEST(FULLY_CONNECTED_NC_QU8, unit_batch_transpose_weights) {
202   FullyConnectedOperatorTester()
203     .transpose_weights(true)
204     .batch_size(1)
205     .input_channels(23)
206     .output_channels(19)
207     .iterations(3)
208     .TestQU8();
209 }
210 
TEST(FULLY_CONNECTED_NC_QU8,unit_batch_without_bias)211 TEST(FULLY_CONNECTED_NC_QU8, unit_batch_without_bias) {
212   FullyConnectedOperatorTester()
213     .has_bias(false)
214     .batch_size(1)
215     .input_channels(23)
216     .output_channels(19)
217     .iterations(3)
218     .TestQU8();
219 }
220 
TEST(FULLY_CONNECTED_NC_QU8,small_batch)221 TEST(FULLY_CONNECTED_NC_QU8, small_batch) {
222   FullyConnectedOperatorTester()
223     .batch_size(12)
224     .input_channels(23)
225     .output_channels(19)
226     .iterations(3)
227     .TestQU8();
228 }
229 
TEST(FULLY_CONNECTED_NC_QU8,small_batch_with_qmin)230 TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_qmin) {
231   FullyConnectedOperatorTester()
232     .batch_size(12)
233     .input_channels(23)
234     .output_channels(19)
235     .qmin(128)
236     .iterations(3)
237     .TestQU8();
238 }
239 
TEST(FULLY_CONNECTED_NC_QU8,small_batch_with_qmax)240 TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_qmax) {
241   FullyConnectedOperatorTester()
242     .batch_size(12)
243     .input_channels(23)
244     .output_channels(19)
245     .qmax(128)
246     .iterations(3)
247     .TestQU8();
248 }
249 
TEST(FULLY_CONNECTED_NC_QU8,small_batch_with_input_stride)250 TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_input_stride) {
251   FullyConnectedOperatorTester()
252     .batch_size(12)
253     .input_channels(23)
254     .input_stride(28)
255     .output_channels(19)
256     .iterations(3)
257     .TestQU8();
258 }
259 
TEST(FULLY_CONNECTED_NC_QU8,small_batch_with_output_stride)260 TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_output_stride) {
261   FullyConnectedOperatorTester()
262     .batch_size(12)
263     .input_channels(23)
264     .output_channels(19)
265     .output_stride(29)
266     .iterations(3)
267     .TestQU8();
268 }
269 
TEST(FULLY_CONNECTED_NC_QU8,small_batch_transpose_weights)270 TEST(FULLY_CONNECTED_NC_QU8, small_batch_transpose_weights) {
271   FullyConnectedOperatorTester()
272     .transpose_weights(true)
273     .batch_size(12)
274     .input_channels(23)
275     .output_channels(19)
276     .iterations(3)
277     .TestQU8();
278 }
279 
TEST(FULLY_CONNECTED_NC_QU8,small_batch_without_bias)280 TEST(FULLY_CONNECTED_NC_QU8, small_batch_without_bias) {
281   FullyConnectedOperatorTester()
282     .has_bias(false)
283     .batch_size(12)
284     .input_channels(23)
285     .output_channels(19)
286     .iterations(3)
287     .TestQU8();
288 }
289 
TEST(FULLY_CONNECTED_NC_F32,unit_batch)290 TEST(FULLY_CONNECTED_NC_F32, unit_batch) {
291   FullyConnectedOperatorTester()
292     .batch_size(1)
293     .input_channels(23)
294     .output_channels(19)
295     .iterations(3)
296     .TestF32();
297 }
298 
TEST(FULLY_CONNECTED_NC_F32,unit_batch_with_qmin)299 TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_qmin) {
300   FullyConnectedOperatorTester()
301     .batch_size(1)
302     .input_channels(23)
303     .output_channels(19)
304     .qmin(128)
305     .iterations(3)
306     .TestF32();
307 }
308 
TEST(FULLY_CONNECTED_NC_F32,unit_batch_with_qmax)309 TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_qmax) {
310   FullyConnectedOperatorTester()
311     .batch_size(1)
312     .input_channels(23)
313     .output_channels(19)
314     .qmax(128)
315     .iterations(3)
316     .TestF32();
317 }
318 
TEST(FULLY_CONNECTED_NC_F32,unit_batch_with_input_stride)319 TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_input_stride) {
320   FullyConnectedOperatorTester()
321     .batch_size(1)
322     .input_channels(23)
323     .input_stride(28)
324     .output_channels(19)
325     .iterations(3)
326     .TestF32();
327 }
328 
TEST(FULLY_CONNECTED_NC_F32,unit_batch_with_output_stride)329 TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_output_stride) {
330   FullyConnectedOperatorTester()
331     .batch_size(1)
332     .input_channels(23)
333     .output_channels(19)
334     .output_stride(29)
335     .iterations(3)
336     .TestF32();
337 }
338 
TEST(FULLY_CONNECTED_NC_F32,unit_batch_transpose_weights)339 TEST(FULLY_CONNECTED_NC_F32, unit_batch_transpose_weights) {
340   FullyConnectedOperatorTester()
341     .transpose_weights(true)
342     .batch_size(1)
343     .input_channels(23)
344     .output_channels(19)
345     .iterations(3)
346     .TestF32();
347 }
348 
TEST(FULLY_CONNECTED_NC_F32,unit_batch_without_bias)349 TEST(FULLY_CONNECTED_NC_F32, unit_batch_without_bias) {
350   FullyConnectedOperatorTester()
351     .has_bias(false)
352     .batch_size(1)
353     .input_channels(23)
354     .output_channels(19)
355     .iterations(3)
356     .TestF32();
357 }
358 
TEST(FULLY_CONNECTED_NC_F32,small_batch)359 TEST(FULLY_CONNECTED_NC_F32, small_batch) {
360   FullyConnectedOperatorTester()
361     .batch_size(12)
362     .input_channels(23)
363     .output_channels(19)
364     .iterations(3)
365     .TestF32();
366 }
367 
TEST(FULLY_CONNECTED_NC_F32,small_batch_with_qmin)368 TEST(FULLY_CONNECTED_NC_F32, small_batch_with_qmin) {
369   FullyConnectedOperatorTester()
370     .batch_size(12)
371     .input_channels(23)
372     .output_channels(19)
373     .qmin(128)
374     .iterations(3)
375     .TestF32();
376 }
377 
TEST(FULLY_CONNECTED_NC_F32,small_batch_with_qmax)378 TEST(FULLY_CONNECTED_NC_F32, small_batch_with_qmax) {
379   FullyConnectedOperatorTester()
380     .batch_size(12)
381     .input_channels(23)
382     .output_channels(19)
383     .qmax(128)
384     .iterations(3)
385     .TestF32();
386 }
387 
TEST(FULLY_CONNECTED_NC_F32,small_batch_with_input_stride)388 TEST(FULLY_CONNECTED_NC_F32, small_batch_with_input_stride) {
389   FullyConnectedOperatorTester()
390     .batch_size(12)
391     .input_channels(23)
392     .input_stride(28)
393     .output_channels(19)
394     .iterations(3)
395     .TestF32();
396 }
397 
TEST(FULLY_CONNECTED_NC_F32,small_batch_with_output_stride)398 TEST(FULLY_CONNECTED_NC_F32, small_batch_with_output_stride) {
399   FullyConnectedOperatorTester()
400     .batch_size(12)
401     .input_channels(23)
402     .output_channels(19)
403     .output_stride(29)
404     .iterations(3)
405     .TestF32();
406 }
407 
TEST(FULLY_CONNECTED_NC_F32,small_batch_transpose_weights)408 TEST(FULLY_CONNECTED_NC_F32, small_batch_transpose_weights) {
409   FullyConnectedOperatorTester()
410     .transpose_weights(true)
411     .batch_size(12)
412     .input_channels(23)
413     .output_channels(19)
414     .iterations(3)
415     .TestF32();
416 }
417 
TEST(FULLY_CONNECTED_NC_F32,small_batch_without_bias)418 TEST(FULLY_CONNECTED_NC_F32, small_batch_without_bias) {
419   FullyConnectedOperatorTester()
420     .has_bias(false)
421     .batch_size(12)
422     .input_channels(23)
423     .output_channels(19)
424     .iterations(3)
425     .TestF32();
426 }
427 
428 
TEST(FULLY_CONNECTED_NC_F16,unit_batch)429 TEST(FULLY_CONNECTED_NC_F16, unit_batch) {
430   FullyConnectedOperatorTester()
431     .batch_size(1)
432     .input_channels(23)
433     .output_channels(19)
434     .iterations(3)
435     .TestF16();
436 }
437 
TEST(FULLY_CONNECTED_NC_F16,unit_batch_with_qmin)438 TEST(FULLY_CONNECTED_NC_F16, unit_batch_with_qmin) {
439   FullyConnectedOperatorTester()
440     .batch_size(1)
441     .input_channels(23)
442     .output_channels(19)
443     .qmin(128)
444     .iterations(3)
445     .TestF16();
446 }
447 
TEST(FULLY_CONNECTED_NC_F16,unit_batch_with_qmax)448 TEST(FULLY_CONNECTED_NC_F16, unit_batch_with_qmax) {
449   FullyConnectedOperatorTester()
450     .batch_size(1)
451     .input_channels(23)
452     .output_channels(19)
453     .qmax(128)
454     .iterations(3)
455     .TestF16();
456 }
457 
TEST(FULLY_CONNECTED_NC_F16,unit_batch_with_input_stride)458 TEST(FULLY_CONNECTED_NC_F16, unit_batch_with_input_stride) {
459   FullyConnectedOperatorTester()
460     .batch_size(1)
461     .input_channels(23)
462     .input_stride(28)
463     .output_channels(19)
464     .iterations(3)
465     .TestF16();
466 }
467 
TEST(FULLY_CONNECTED_NC_F16,unit_batch_with_output_stride)468 TEST(FULLY_CONNECTED_NC_F16, unit_batch_with_output_stride) {
469   FullyConnectedOperatorTester()
470     .batch_size(1)
471     .input_channels(23)
472     .output_channels(19)
473     .output_stride(29)
474     .iterations(3)
475     .TestF16();
476 }
477 
TEST(FULLY_CONNECTED_NC_F16,unit_batch_transpose_weights)478 TEST(FULLY_CONNECTED_NC_F16, unit_batch_transpose_weights) {
479   FullyConnectedOperatorTester()
480     .transpose_weights(true)
481     .batch_size(1)
482     .input_channels(23)
483     .output_channels(19)
484     .iterations(3)
485     .TestF16();
486 }
487 
TEST(FULLY_CONNECTED_NC_F16,unit_batch_without_bias)488 TEST(FULLY_CONNECTED_NC_F16, unit_batch_without_bias) {
489   FullyConnectedOperatorTester()
490     .has_bias(false)
491     .batch_size(1)
492     .input_channels(23)
493     .output_channels(19)
494     .iterations(3)
495     .TestF16();
496 }
497 
TEST(FULLY_CONNECTED_NC_F16,small_batch)498 TEST(FULLY_CONNECTED_NC_F16, small_batch) {
499   FullyConnectedOperatorTester()
500     .batch_size(12)
501     .input_channels(23)
502     .output_channels(19)
503     .iterations(3)
504     .TestF16();
505 }
506 
TEST(FULLY_CONNECTED_NC_F16,small_batch_fp32_weights)507 TEST(FULLY_CONNECTED_NC_F16, small_batch_fp32_weights) {
508   FullyConnectedOperatorTester()
509     .weights_type(FullyConnectedOperatorTester::WeightsType::FP32)
510     .batch_size(12)
511     .input_channels(23)
512     .output_channels(19)
513     .iterations(3)
514     .TestF16();
515 }
516 
TEST(FULLY_CONNECTED_NC_F16,small_batch_with_qmin)517 TEST(FULLY_CONNECTED_NC_F16, small_batch_with_qmin) {
518   FullyConnectedOperatorTester()
519     .batch_size(12)
520     .input_channels(23)
521     .output_channels(19)
522     .qmin(128)
523     .iterations(3)
524     .TestF16();
525 }
526 
TEST(FULLY_CONNECTED_NC_F16,small_batch_with_qmax)527 TEST(FULLY_CONNECTED_NC_F16, small_batch_with_qmax) {
528   FullyConnectedOperatorTester()
529     .batch_size(12)
530     .input_channels(23)
531     .output_channels(19)
532     .qmax(128)
533     .iterations(3)
534     .TestF16();
535 }
536 
TEST(FULLY_CONNECTED_NC_F16,small_batch_with_input_stride)537 TEST(FULLY_CONNECTED_NC_F16, small_batch_with_input_stride) {
538   FullyConnectedOperatorTester()
539     .batch_size(12)
540     .input_channels(23)
541     .input_stride(28)
542     .output_channels(19)
543     .iterations(3)
544     .TestF16();
545 }
546 
TEST(FULLY_CONNECTED_NC_F16,small_batch_with_output_stride)547 TEST(FULLY_CONNECTED_NC_F16, small_batch_with_output_stride) {
548   FullyConnectedOperatorTester()
549     .batch_size(12)
550     .input_channels(23)
551     .output_channels(19)
552     .output_stride(29)
553     .iterations(3)
554     .TestF16();
555 }
556 
TEST(FULLY_CONNECTED_NC_F16,small_batch_transpose_fp32_weights)557 TEST(FULLY_CONNECTED_NC_F16, small_batch_transpose_fp32_weights) {
558   FullyConnectedOperatorTester()
559     .weights_type(FullyConnectedOperatorTester::WeightsType::FP32)
560     .transpose_weights(true)
561     .batch_size(12)
562     .input_channels(23)
563     .output_channels(19)
564     .iterations(3)
565     .TestF16();
566 }
567 
TEST(FULLY_CONNECTED_NC_F16,small_batch_without_bias)568 TEST(FULLY_CONNECTED_NC_F16, small_batch_without_bias) {
569   FullyConnectedOperatorTester()
570     .has_bias(false)
571     .batch_size(12)
572     .input_channels(23)
573     .output_channels(19)
574     .iterations(3)
575     .TestF16();
576 }
577