blob: 8e8d6652132eaf4b618610b29bca62dd4872297e [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// 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
Marat Dukhand23cb6e2021-04-01 01:18:58 -070014TEST(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
23TEST(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
33TEST(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
43TEST(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
53TEST(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
63TEST(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
73TEST(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
83TEST(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
92TEST(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
102TEST(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
112TEST(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
122TEST(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
132TEST(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
142TEST(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
Marat Dukhan08b7a972020-07-14 18:17:29 -0700152TEST(FULLY_CONNECTED_NC_QU8, unit_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700153 FullyConnectedOperatorTester()
154 .batch_size(1)
155 .input_channels(23)
156 .output_channels(19)
157 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700158 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700159}
160
Marat Dukhan08b7a972020-07-14 18:17:29 -0700161TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700162 FullyConnectedOperatorTester()
163 .batch_size(1)
164 .input_channels(23)
165 .output_channels(19)
166 .qmin(128)
167 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700168 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700169}
170
Marat Dukhan08b7a972020-07-14 18:17:29 -0700171TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700172 FullyConnectedOperatorTester()
173 .batch_size(1)
174 .input_channels(23)
175 .output_channels(19)
176 .qmax(128)
177 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700178 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700179}
180
Marat Dukhan08b7a972020-07-14 18:17:29 -0700181TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700182 FullyConnectedOperatorTester()
183 .batch_size(1)
184 .input_channels(23)
185 .input_stride(28)
186 .output_channels(19)
187 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700188 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700189}
190
Marat Dukhan08b7a972020-07-14 18:17:29 -0700191TEST(FULLY_CONNECTED_NC_QU8, unit_batch_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700192 FullyConnectedOperatorTester()
193 .batch_size(1)
194 .input_channels(23)
195 .output_channels(19)
196 .output_stride(29)
197 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700198 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700199}
200
Marat Dukhan08b7a972020-07-14 18:17:29 -0700201TEST(FULLY_CONNECTED_NC_QU8, unit_batch_transpose_weights) {
Marat Dukhanc4f0ff92019-12-03 14:59:08 -0800202 FullyConnectedOperatorTester()
203 .transpose_weights(true)
204 .batch_size(1)
205 .input_channels(23)
206 .output_channels(19)
207 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700208 .TestQU8();
Marat Dukhanc4f0ff92019-12-03 14:59:08 -0800209}
210
Marat Dukhan08b7a972020-07-14 18:17:29 -0700211TEST(FULLY_CONNECTED_NC_QU8, unit_batch_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700212 FullyConnectedOperatorTester()
213 .has_bias(false)
214 .batch_size(1)
215 .input_channels(23)
216 .output_channels(19)
217 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700218 .TestQU8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700219}
220
Marat Dukhan08b7a972020-07-14 18:17:29 -0700221TEST(FULLY_CONNECTED_NC_QU8, small_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700222 FullyConnectedOperatorTester()
223 .batch_size(12)
224 .input_channels(23)
225 .output_channels(19)
226 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700227 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700228}
229
Marat Dukhan08b7a972020-07-14 18:17:29 -0700230TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700231 FullyConnectedOperatorTester()
232 .batch_size(12)
233 .input_channels(23)
234 .output_channels(19)
235 .qmin(128)
236 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700237 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700238}
239
Marat Dukhan08b7a972020-07-14 18:17:29 -0700240TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700241 FullyConnectedOperatorTester()
242 .batch_size(12)
243 .input_channels(23)
244 .output_channels(19)
245 .qmax(128)
246 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700247 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700248}
249
Marat Dukhan08b7a972020-07-14 18:17:29 -0700250TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700251 FullyConnectedOperatorTester()
252 .batch_size(12)
253 .input_channels(23)
254 .input_stride(28)
255 .output_channels(19)
256 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700257 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700258}
259
Marat Dukhan08b7a972020-07-14 18:17:29 -0700260TEST(FULLY_CONNECTED_NC_QU8, small_batch_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700261 FullyConnectedOperatorTester()
262 .batch_size(12)
263 .input_channels(23)
264 .output_channels(19)
265 .output_stride(29)
266 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700267 .TestQU8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700268}
269
Marat Dukhan08b7a972020-07-14 18:17:29 -0700270TEST(FULLY_CONNECTED_NC_QU8, small_batch_transpose_weights) {
Marat Dukhanc4f0ff92019-12-03 14:59:08 -0800271 FullyConnectedOperatorTester()
272 .transpose_weights(true)
273 .batch_size(12)
274 .input_channels(23)
275 .output_channels(19)
276 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700277 .TestQU8();
Marat Dukhanc4f0ff92019-12-03 14:59:08 -0800278}
279
Marat Dukhan08b7a972020-07-14 18:17:29 -0700280TEST(FULLY_CONNECTED_NC_QU8, small_batch_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700281 FullyConnectedOperatorTester()
282 .has_bias(false)
283 .batch_size(12)
284 .input_channels(23)
285 .output_channels(19)
286 .iterations(3)
Marat Dukhan08b7a972020-07-14 18:17:29 -0700287 .TestQU8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700288}
289
Marat Dukhanefc47b82019-11-18 09:25:38 -0800290TEST(FULLY_CONNECTED_NC_F32, unit_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700291 FullyConnectedOperatorTester()
292 .batch_size(1)
293 .input_channels(23)
294 .output_channels(19)
295 .iterations(3)
296 .TestF32();
297}
298
Marat Dukhanefc47b82019-11-18 09:25:38 -0800299TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700300 FullyConnectedOperatorTester()
301 .batch_size(1)
302 .input_channels(23)
303 .output_channels(19)
304 .qmin(128)
305 .iterations(3)
306 .TestF32();
307}
308
Marat Dukhanefc47b82019-11-18 09:25:38 -0800309TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700310 FullyConnectedOperatorTester()
311 .batch_size(1)
312 .input_channels(23)
313 .output_channels(19)
314 .qmax(128)
315 .iterations(3)
316 .TestF32();
317}
318
Marat Dukhanefc47b82019-11-18 09:25:38 -0800319TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700320 FullyConnectedOperatorTester()
321 .batch_size(1)
322 .input_channels(23)
323 .input_stride(28)
324 .output_channels(19)
325 .iterations(3)
326 .TestF32();
327}
328
Marat Dukhanefc47b82019-11-18 09:25:38 -0800329TEST(FULLY_CONNECTED_NC_F32, unit_batch_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700330 FullyConnectedOperatorTester()
331 .batch_size(1)
332 .input_channels(23)
333 .output_channels(19)
334 .output_stride(29)
335 .iterations(3)
336 .TestF32();
337}
338
Marat Dukhanc4f0ff92019-12-03 14:59:08 -0800339TEST(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
Marat Dukhanefc47b82019-11-18 09:25:38 -0800349TEST(FULLY_CONNECTED_NC_F32, unit_batch_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700350 FullyConnectedOperatorTester()
351 .has_bias(false)
352 .batch_size(1)
353 .input_channels(23)
354 .output_channels(19)
355 .iterations(3)
356 .TestF32();
357}
358
Marat Dukhanefc47b82019-11-18 09:25:38 -0800359TEST(FULLY_CONNECTED_NC_F32, small_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700360 FullyConnectedOperatorTester()
361 .batch_size(12)
362 .input_channels(23)
363 .output_channels(19)
364 .iterations(3)
365 .TestF32();
366}
367
Marat Dukhanefc47b82019-11-18 09:25:38 -0800368TEST(FULLY_CONNECTED_NC_F32, small_batch_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700369 FullyConnectedOperatorTester()
370 .batch_size(12)
371 .input_channels(23)
372 .output_channels(19)
373 .qmin(128)
374 .iterations(3)
375 .TestF32();
376}
377
Marat Dukhanefc47b82019-11-18 09:25:38 -0800378TEST(FULLY_CONNECTED_NC_F32, small_batch_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700379 FullyConnectedOperatorTester()
380 .batch_size(12)
381 .input_channels(23)
382 .output_channels(19)
383 .qmax(128)
384 .iterations(3)
385 .TestF32();
386}
387
Marat Dukhanefc47b82019-11-18 09:25:38 -0800388TEST(FULLY_CONNECTED_NC_F32, small_batch_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700389 FullyConnectedOperatorTester()
390 .batch_size(12)
391 .input_channels(23)
392 .input_stride(28)
393 .output_channels(19)
394 .iterations(3)
395 .TestF32();
396}
397
Marat Dukhanefc47b82019-11-18 09:25:38 -0800398TEST(FULLY_CONNECTED_NC_F32, small_batch_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700399 FullyConnectedOperatorTester()
400 .batch_size(12)
401 .input_channels(23)
402 .output_channels(19)
403 .output_stride(29)
404 .iterations(3)
405 .TestF32();
406}
Marat Dukhanf568f082019-10-30 09:47:07 -0700407
Marat Dukhanc4f0ff92019-12-03 14:59:08 -0800408TEST(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
Marat Dukhanefc47b82019-11-18 09:25:38 -0800418TEST(FULLY_CONNECTED_NC_F32, small_batch_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700419 FullyConnectedOperatorTester()
420 .has_bias(false)
421 .batch_size(12)
422 .input_channels(23)
423 .output_channels(19)
424 .iterations(3)
425 .TestF32();
426}
Marat Dukhanddb3d162021-10-25 17:05:51 -0700427
428
429TEST(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
438TEST(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
448TEST(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
458TEST(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
468TEST(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
478TEST(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
488TEST(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
498TEST(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
Marat Dukhan1d6b7c92022-01-14 21:18:44 -0800507TEST(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
Marat Dukhanddb3d162021-10-25 17:05:51 -0700517TEST(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
527TEST(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
537TEST(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
547TEST(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
Marat Dukhan1d6b7c92022-01-14 21:18:44 -0800557TEST(FULLY_CONNECTED_NC_F16, small_batch_transpose_fp32_weights) {
Marat Dukhanddb3d162021-10-25 17:05:51 -0700558 FullyConnectedOperatorTester()
Marat Dukhan1d6b7c92022-01-14 21:18:44 -0800559 .weights_type(FullyConnectedOperatorTester::WeightsType::FP32)
Marat Dukhanddb3d162021-10-25 17:05:51 -0700560 .transpose_weights(true)
561 .batch_size(12)
562 .input_channels(23)
563 .output_channels(19)
564 .iterations(3)
565 .TestF16();
566}
567
568TEST(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}