xref: /aosp_15_r20/external/XNNPACK/bench/gemm.h (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates.
2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved.
3*4bdc9457SAndroid Build Coastguard Worker //
4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
8*4bdc9457SAndroid Build Coastguard Worker 
9*4bdc9457SAndroid Build Coastguard Worker #pragma once
10*4bdc9457SAndroid Build Coastguard Worker 
11*4bdc9457SAndroid Build Coastguard Worker #include <benchmark/benchmark.h>
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker #define BENCHMARK_GEMM(gemm_fn) \
14*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, mobilenet_v1, "MobileNet v1")->Apply(MobileNetV1GemmArguments)->UseRealTime(); \
15*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, mobilenet_v2, "MobileNet v2")->Apply(MobileNetV2GemmArguments)->UseRealTime(); \
16*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, mobilenet_v3_small, "MobileNet v3 Small")->Apply(MobileNetV3SmallGemmArguments)->UseRealTime(); \
17*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, mobilenet_v3_large, "MobileNet v3 Large")->Apply(MobileNetV3LargeGemmArguments)->UseRealTime(); \
18*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v1_g1, "ShuffleNet v1 (1 group)")->Apply(ShuffleNetV1G1GemmArguments)->UseRealTime(); \
19*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v1_g2, "ShuffleNet v1 (2 groups)")->Apply(ShuffleNetV1G2GemmArguments)->UseRealTime(); \
20*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v1_g3, "ShuffleNet v1 (3 groups)")->Apply(ShuffleNetV1G3GemmArguments)->UseRealTime(); \
21*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v1_g4, "ShuffleNet v1 (4 groups)")->Apply(ShuffleNetV1G4GemmArguments)->UseRealTime(); \
22*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v1_g8, "ShuffleNet v1 (8 groups)")->Apply(ShuffleNetV1G8GemmArguments)->UseRealTime(); \
23*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v2_x05, "ShuffleNet v2 0.5X")->Apply(ShuffleNetV2X05GemmArguments)->UseRealTime(); \
24*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v2_x10, "ShuffleNet v2 1.0X")->Apply(ShuffleNetV2X10GemmArguments)->UseRealTime(); \
25*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v2_x15, "ShuffleNet v2 1.5X")->Apply(ShuffleNetV2X15GemmArguments)->UseRealTime(); \
26*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, shufflenet_v2_x20, "ShuffleNet v2 2.0X")->Apply(ShuffleNetV2X20GemmArguments)->UseRealTime(); \
27*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, inception_v3, "Inception v3")->Apply(InceptionV3GemmArguments)->UseRealTime(); \
28*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, resnet18, "ResNet-18")->Apply(ResNet18GemmArguments)->UseRealTime(); \
29*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, resnet50, "ResNet-50")->Apply(ResNet50GemmArguments)->UseRealTime(); \
30*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, squeezenet_v10, "SqueezeNet 1.0")->Apply(SqueezeNetV10GemmArguments)->UseRealTime(); \
31*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, squeezenet_v11, "SqueezeNet 1.1")->Apply(SqueezeNetV11GemmArguments)->UseRealTime(); \
32*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, vgg, "VGG")->Apply(VGGGemmArguments)->UseRealTime(); \
33*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, srcnn915, "SRCNN (9-1-5)")->Apply(SRCNN915GemmArguments)->UseRealTime(); \
34*4bdc9457SAndroid Build Coastguard Worker   BENCHMARK_CAPTURE(gemm_fn, srcnn935, "SRCNN (9-3-5)")->Apply(SRCNN935GemmArguments)->UseRealTime();
35*4bdc9457SAndroid Build Coastguard Worker 
36*4bdc9457SAndroid Build Coastguard Worker // Removed due to OOM SEGFAULT on 32 bit ARM.
37*4bdc9457SAndroid Build Coastguard Worker //  BENCHMARK_CAPTURE(gemm_fn, srcnn955, "SRCNN (9-5-5)")->Apply(SRCNN955GemmArguments)->UseRealTime();
38*4bdc9457SAndroid Build Coastguard Worker 
39*4bdc9457SAndroid Build Coastguard Worker 
40*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v1 with 1 group.
ShuffleNetV1G1GemmArguments(benchmark::internal::Benchmark * b)41*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV1G1GemmArguments(benchmark::internal::Benchmark* b) {
42*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
43*4bdc9457SAndroid Build Coastguard Worker 
44*4bdc9457SAndroid Build Coastguard Worker   /*           M       N         K    */
45*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,  24,   3 * 3 * 3});
46*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  36,  24 * 1 * 1});
47*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 120,  36 * 1 * 1});
48*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  36, 144 * 1 * 1});
49*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 144,  36 * 1 * 1});
50*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  72, 144 * 1 * 1});
51*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 144,  72 * 1 * 1});
52*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  72, 288 * 1 * 1});
53*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 288,  72 * 1 * 1});
54*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 144, 288 * 1 * 1});
55*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 288, 144 * 1 * 1});
56*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 144, 576 * 1 * 1});
57*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 576, 144 * 1 * 1});
58*4bdc9457SAndroid Build Coastguard Worker }
59*4bdc9457SAndroid Build Coastguard Worker 
60*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v1 with 2 groups.
ShuffleNetV1G2GemmArguments(benchmark::internal::Benchmark * b)61*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV1G2GemmArguments(benchmark::internal::Benchmark* b) {
62*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
63*4bdc9457SAndroid Build Coastguard Worker 
64*4bdc9457SAndroid Build Coastguard Worker   /*           M       N         K    */
65*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,  24,   3 * 3 * 3});
66*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  50,  24 * 1 * 1});
67*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  88,  25 * 1 * 1});
68*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  25, 100 * 1 * 1});
69*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 100,  25 * 1 * 1});
70*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  50, 100 * 1 * 1});
71*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 100,  50 * 1 * 1});
72*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  50, 200 * 1 * 1});
73*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 200,  50 * 1 * 1});
74*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 100, 200 * 1 * 1});
75*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 200, 100 * 1 * 1});
76*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 100, 400 * 1 * 1});
77*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 400, 100 * 1 * 1});
78*4bdc9457SAndroid Build Coastguard Worker }
79*4bdc9457SAndroid Build Coastguard Worker 
80*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v1 with 3 groups.
ShuffleNetV1G3GemmArguments(benchmark::internal::Benchmark * b)81*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV1G3GemmArguments(benchmark::internal::Benchmark* b) {
82*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
83*4bdc9457SAndroid Build Coastguard Worker 
84*4bdc9457SAndroid Build Coastguard Worker   /*           M       N         K    */
85*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,  24,   3 * 3 * 3});
86*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  60,  24 * 1 * 1});
87*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  72,  20 * 1 * 1});
88*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  20,  80 * 1 * 1});
89*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  80,  20 * 1 * 1});
90*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  40,  80 * 1 * 1});
91*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  80,  40 * 1 * 1});
92*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  40, 160 * 1 * 1});
93*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 160,  40 * 1 * 1});
94*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  80, 160 * 1 * 1});
95*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 160,  80 * 1 * 1});
96*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  80, 320 * 1 * 1});
97*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 320,  80 * 1 * 1});
98*4bdc9457SAndroid Build Coastguard Worker }
99*4bdc9457SAndroid Build Coastguard Worker 
100*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v1 with 4 groups.
ShuffleNetV1G4GemmArguments(benchmark::internal::Benchmark * b)101*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV1G4GemmArguments(benchmark::internal::Benchmark* b) {
102*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
103*4bdc9457SAndroid Build Coastguard Worker 
104*4bdc9457SAndroid Build Coastguard Worker   /*           M       N         K    */
105*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,  24,   3 * 3 * 3});
106*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  68,  24 * 1 * 1});
107*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  62,  17 * 1 * 1});
108*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  17,  68 * 1 * 1});
109*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  68,  17 * 1 * 1});
110*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  34,  68 * 1 * 1});
111*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  68,  34 * 1 * 1});
112*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  34, 136 * 1 * 1});
113*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 136,  34 * 1 * 1});
114*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  68, 136 * 1 * 1});
115*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 136,  68 * 1 * 1});
116*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  68, 272 * 1 * 1});
117*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 272,  68 * 1 * 1});
118*4bdc9457SAndroid Build Coastguard Worker }
119*4bdc9457SAndroid Build Coastguard Worker 
120*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v1 with 8 groups.
ShuffleNetV1G8GemmArguments(benchmark::internal::Benchmark * b)121*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV1G8GemmArguments(benchmark::internal::Benchmark* b) {
122*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
123*4bdc9457SAndroid Build Coastguard Worker 
124*4bdc9457SAndroid Build Coastguard Worker   /*           M       N         K    */
125*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,  24,   3 * 3 * 3});
126*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  96,  24 * 1 * 1});
127*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  45,  12 * 1 * 1});
128*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  12,  48 * 1 * 1});
129*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  48,  12 * 1 * 1});
130*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  24,  48 * 1 * 1});
131*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  48,  24 * 1 * 1});
132*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  24,  96 * 1 * 1});
133*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  96,  24 * 1 * 1});
134*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  48,  96 * 1 * 1});
135*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  96,  48 * 1 * 1});
136*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  48, 192 * 1 * 1});
137*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 192,  48 * 1 * 1});
138*4bdc9457SAndroid Build Coastguard Worker }
139*4bdc9457SAndroid Build Coastguard Worker 
140*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v2 (0.5X scale)
ShuffleNetV2X05GemmArguments(benchmark::internal::Benchmark * b)141*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV2X05GemmArguments(benchmark::internal::Benchmark* b) {
142*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
143*4bdc9457SAndroid Build Coastguard Worker 
144*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
145*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   24,   3 * 3 * 3});
146*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   24,  24 * 1 * 1});
147*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   24,  24 * 1 * 1});
148*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   48,  48 * 1 * 1});
149*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   48,  48 * 1 * 1});
150*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   96,  96 * 1 * 1});
151*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,   96,  96 * 1 * 1});
152*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 1024, 192 * 1 * 1});
153*4bdc9457SAndroid Build Coastguard Worker }
154*4bdc9457SAndroid Build Coastguard Worker 
155*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v2 (1.0X scale)
ShuffleNetV2X10GemmArguments(benchmark::internal::Benchmark * b)156*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV2X10GemmArguments(benchmark::internal::Benchmark* b) {
157*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
158*4bdc9457SAndroid Build Coastguard Worker 
159*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
160*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   24,   3 * 3 * 3});
161*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   58,  24 * 1 * 1});
162*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   58,  24 * 1 * 1});
163*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   58,  58 * 1 * 1});
164*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  116, 116 * 1 * 1});
165*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  116, 116 * 1 * 1});
166*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  232, 232 * 1 * 1});
167*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  232, 232 * 1 * 1});
168*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 1024, 464 * 1 * 1});
169*4bdc9457SAndroid Build Coastguard Worker }
170*4bdc9457SAndroid Build Coastguard Worker 
171*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v2 (1.5X scale)
ShuffleNetV2X15GemmArguments(benchmark::internal::Benchmark * b)172*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV2X15GemmArguments(benchmark::internal::Benchmark* b) {
173*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
174*4bdc9457SAndroid Build Coastguard Worker 
175*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
176*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   24,   3 * 3 * 3});
177*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   88,  24 * 1 * 1});
178*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   88,  24 * 1 * 1});
179*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   88,  88 * 1 * 1});
180*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  176, 176 * 1 * 1});
181*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  176, 176 * 1 * 1});
182*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  352, 352 * 1 * 1});
183*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  352, 352 * 1 * 1});
184*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 1024, 704 * 1 * 1});
185*4bdc9457SAndroid Build Coastguard Worker }
186*4bdc9457SAndroid Build Coastguard Worker 
187*4bdc9457SAndroid Build Coastguard Worker // ShuffleNet v2 (2.0X scale)
ShuffleNetV2X20GemmArguments(benchmark::internal::Benchmark * b)188*4bdc9457SAndroid Build Coastguard Worker static void ShuffleNetV2X20GemmArguments(benchmark::internal::Benchmark* b) {
189*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
190*4bdc9457SAndroid Build Coastguard Worker 
191*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
192*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   24,   3 * 3 * 3});
193*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  122,  24 * 1 * 1});
194*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  122,  24 * 1 * 1});
195*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  122, 122 * 1 * 1});
196*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  244, 244 * 1 * 1});
197*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  244, 244 * 1 * 1});
198*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  488, 488 * 1 * 1});
199*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  488, 488 * 1 * 1});
200*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 2048, 976 * 1 * 1});
201*4bdc9457SAndroid Build Coastguard Worker }
202*4bdc9457SAndroid Build Coastguard Worker 
MobileNetV1GemmArguments(benchmark::internal::Benchmark * b)203*4bdc9457SAndroid Build Coastguard Worker static void MobileNetV1GemmArguments(benchmark::internal::Benchmark* b) {
204*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
205*4bdc9457SAndroid Build Coastguard Worker 
206*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
207*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   32,    3 * 3 * 3});
208*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   64,   32 * 1 * 1});
209*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  128,   64 * 1 * 1});
210*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  128,  128 * 1 * 1});
211*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  256,  128 * 1 * 1});
212*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  256,  256 * 1 * 1});
213*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  512,  256 * 1 * 1});
214*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  512,  512 * 1 * 1});
215*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 1024,  512 * 1 * 1});
216*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 1024, 1024 * 1 * 1});
217*4bdc9457SAndroid Build Coastguard Worker }
218*4bdc9457SAndroid Build Coastguard Worker 
MobileNetV2GemmArguments(benchmark::internal::Benchmark * b)219*4bdc9457SAndroid Build Coastguard Worker static void MobileNetV2GemmArguments(benchmark::internal::Benchmark* b) {
220*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
221*4bdc9457SAndroid Build Coastguard Worker 
222*4bdc9457SAndroid Build Coastguard Worker   /*********** Initial Stage ************/
223*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
224*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   32,    3 * 3 * 3});
225*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 1 ************/
226*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
227*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   16,   32 * 1 * 1});
228*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 2 ************/
229*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
230*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   96,   16 * 1 * 1});
231*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   24,   96 * 1 * 1});
232*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  144,   24 * 1 * 1});
233*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   24,  144 * 1 * 1});
234*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 3 ************/
235*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
236*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   32,  144 * 1 * 1});
237*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  192,   32 * 1 * 1});
238*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   32,  192 * 1 * 1});
239*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 4 ************/
240*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
241*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   64,  192 * 1 * 1});
242*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  384,   64 * 1 * 1});
243*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   64,  384 * 1 * 1});
244*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 5 ************/
245*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
246*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   96,  384 * 1 * 1});
247*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  576,   96 * 1 * 1});
248*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   96,  576 * 1 * 1});
249*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 6 ************/
250*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
251*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  160,  576 * 1 * 1});
252*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  960,  160 * 1 * 1});
253*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  160,  960 * 1 * 1});
254*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 7 ************/
255*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
256*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  320,  960 * 1 * 1});
257*4bdc9457SAndroid Build Coastguard Worker   /********* Pre-pooling Conv2D *********/
258*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
259*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 1280,  320 * 1 * 1});
260*4bdc9457SAndroid Build Coastguard Worker   /******** Post-pooling Conv2D *********/
261*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
262*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1, 1000, 1280 * 1 * 1});
263*4bdc9457SAndroid Build Coastguard Worker }
264*4bdc9457SAndroid Build Coastguard Worker 
MobileNetV3SmallGemmArguments(benchmark::internal::Benchmark * b)265*4bdc9457SAndroid Build Coastguard Worker static void MobileNetV3SmallGemmArguments(benchmark::internal::Benchmark* b) {
266*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
267*4bdc9457SAndroid Build Coastguard Worker 
268*4bdc9457SAndroid Build Coastguard Worker   /************ Initial Stage ************/
269*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
270*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   16,    3 * 3 * 3});
271*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 1 ************/
272*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
273*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,    8,   16 * 1 * 1});
274*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   16,    8 * 1 * 1});
275*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   16,   16 * 1 * 1});
276*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 2 ************/
277*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
278*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   72,   16 * 1 * 1});
279*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   24,   72 * 1 * 1});
280*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 3 ************/
281*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
282*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   88,   24 * 1 * 1});
283*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   24,   88 * 1 * 1});
284*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 4 ************/
285*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
286*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   96,   24 * 1 * 1});
287*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   24,   96 * 1 * 1});
288*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   96,   24 * 1 * 1});
289*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   40,   96 * 1 * 1});
290*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 5 ************/
291*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
292*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  240,   40 * 1 * 1});
293*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   64,  240 * 1 * 1});
294*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  240,   64 * 1 * 1});
295*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   40,  240 * 1 * 1});
296*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 6 ************/
297*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
298*4bdc9457SAndroid Build Coastguard Worker //b->Args({ 14 *  14,  240,   40 * 1 * 1});
299*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,   64,  240 * 1 * 1});
300*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  240,   64 * 1 * 1});
301*4bdc9457SAndroid Build Coastguard Worker //b->Args({ 14 *  14,   40,  240 * 1 * 1});
302*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 7 ************/
303*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
304*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  120,   40 * 1 * 1});
305*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   32,  120 * 1 * 1});
306*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  120,   32 * 1 * 1});
307*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   48,  120 * 1 * 1});
308*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 8 ************/
309*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
310*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  144,   48 * 1 * 1});
311*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   40,  144 * 1 * 1});
312*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  144,   40 * 1 * 1});
313*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   48,  144 * 1 * 1});
314*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 9 ************/
315*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
316*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  288,   48 * 1 * 1});
317*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   72,  288 * 1 * 1});
318*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  288,   72 * 1 * 1});
319*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,   96,  288 * 1 * 1});
320*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 10 ************/
321*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
322*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  576,   96 * 1 * 1});
323*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  144,  576 * 1 * 1});
324*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  576,  144 * 1 * 1});
325*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,   96,  576 * 1 * 1});
326*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 11 ************/
327*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
328*4bdc9457SAndroid Build Coastguard Worker //b->Args({  7 *   7,  576,   96 * 1 * 1});
329*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  144,  576 * 1 * 1});
330*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  576,  144 * 1 * 1});
331*4bdc9457SAndroid Build Coastguard Worker //b->Args({  7 *   7,   96,  576 * 1 * 1});
332*4bdc9457SAndroid Build Coastguard Worker   /************* Last Stage  *************/
333*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
334*4bdc9457SAndroid Build Coastguard Worker //b->Args({  7 *   7,  576,   96 * 1 * 1});
335*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1, 1024,  576 * 1 * 1});
336*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1, 1001, 1024 * 1 * 1});
337*4bdc9457SAndroid Build Coastguard Worker }
338*4bdc9457SAndroid Build Coastguard Worker 
MobileNetV3LargeGemmArguments(benchmark::internal::Benchmark * b)339*4bdc9457SAndroid Build Coastguard Worker static void MobileNetV3LargeGemmArguments(benchmark::internal::Benchmark* b) {
340*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
341*4bdc9457SAndroid Build Coastguard Worker 
342*4bdc9457SAndroid Build Coastguard Worker   /************ Initial Stage ************/
343*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
344*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   16,    3 * 3 * 3});
345*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 1 ************/
346*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
347*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   16,   16 * 1 * 1});
348*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 2 ************/
349*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
350*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   64,   16 * 1 * 1});
351*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   24,   64 * 1 * 1});
352*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 3 ************/
353*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
354*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   72,   24 * 1 * 1});
355*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   24,   72 * 1 * 1});
356*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 4 ************/
357*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
358*4bdc9457SAndroid Build Coastguard Worker //b->Args({ 56 *  56,   72,   24 * 1 * 1});
359*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   24,   72 * 1 * 1});
360*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   72,   24 * 1 * 1});
361*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   40,   72 * 1 * 1});
362*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 5 ************/
363*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
364*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  120,   40 * 1 * 1});
365*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,   32,  120 * 1 * 1});
366*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  120,   32 * 1 * 1});
367*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,   40,  120 * 1 * 1});
368*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 6 ************/
369*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
370*4bdc9457SAndroid Build Coastguard Worker //b->Args({ 28 *  28,  120,   40 * 1 * 1});
371*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,   32,  120 * 1 * 1});
372*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  120,   32 * 1 * 1});
373*4bdc9457SAndroid Build Coastguard Worker //b->Args({ 28 *  28,   40,  120 * 1 * 1});
374*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 7 ************/
375*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
376*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  240,   40 * 1 * 1});
377*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   80,  240 * 1 * 1});
378*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 8 ************/
379*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
380*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  200,   80 * 1 * 1});
381*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   80,  200 * 1 * 1});
382*4bdc9457SAndroid Build Coastguard Worker   /************* Bottleneck 9 ************/
383*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
384*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  184,   80 * 1 * 1});
385*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   80,  184 * 1 * 1});
386*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 10 ************/
387*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
388*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  184,   80 * 1 * 1});
389*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,   80,  184 * 1 * 1});
390*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 11 ************/
391*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
392*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  480,   80 * 1 * 1});
393*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  120,  480 * 1 * 1});
394*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  480,  120 * 1 * 1});
395*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  112,  480 * 1 * 1});
396*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 12 ************/
397*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
398*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  672,  112 * 1 * 1});
399*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  168,  672 * 1 * 1});
400*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  672,  168 * 1 * 1});
401*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  112,  672 * 1 * 1});
402*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 13 ************/
403*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
404*4bdc9457SAndroid Build Coastguard Worker //b->Args({ 14 *  14,  672,  112 * 1 * 1});
405*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  168,  672 * 1 * 1});
406*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  672,  168 * 1 * 1});
407*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  160,  672 * 1 * 1});
408*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 14 ************/
409*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
410*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  960,  160 * 1 * 1});
411*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  240,  960 * 1 * 1});
412*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1,  960,  240 * 1 * 1});
413*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  160,  960 * 1 * 1});
414*4bdc9457SAndroid Build Coastguard Worker   /************ Bottleneck 15 ************/
415*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
416*4bdc9457SAndroid Build Coastguard Worker //b->Args({  7 *   7,  960,  160 * 1 * 1});
417*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  240,  960 * 1 * 1});
418*4bdc9457SAndroid Build Coastguard Worker //b->Args({  1 *   1,  960,  240 * 1 * 1});
419*4bdc9457SAndroid Build Coastguard Worker //b->Args({  7 *   7,  160,  960 * 1 * 1});
420*4bdc9457SAndroid Build Coastguard Worker   /************* Last Stage  *************/
421*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K     */
422*4bdc9457SAndroid Build Coastguard Worker //b->Args({  7 *   7,  960,  160 * 1 * 1});
423*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1, 1280,  960 * 1 * 1});
424*4bdc9457SAndroid Build Coastguard Worker   b->Args({  1 *   1, 1001, 1280 * 1 * 1});
425*4bdc9457SAndroid Build Coastguard Worker }
426*4bdc9457SAndroid Build Coastguard Worker 
427*4bdc9457SAndroid Build Coastguard Worker // SqueezeNet 1.0
SqueezeNetV10GemmArguments(benchmark::internal::Benchmark * b)428*4bdc9457SAndroid Build Coastguard Worker static void SqueezeNetV10GemmArguments(benchmark::internal::Benchmark* b) {
429*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
430*4bdc9457SAndroid Build Coastguard Worker 
431*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 1 ***************/
432*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
433*4bdc9457SAndroid Build Coastguard Worker   b->Args({111 * 111,   96,   3 * 7 * 7});
434*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 2 ***************/
435*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
436*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   16,  96 * 1 * 1});
437*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   64,  16 * 1 * 1});
438*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   64,  16 * 3 * 3});
439*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 3 ***************/
440*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
441*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   16, 128 * 1 * 1});
442*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 4 ***************/
443*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
444*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   32, 128 * 1 * 1});
445*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,  128,  32 * 1 * 1});
446*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,  128,  32 * 3 * 3});
447*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 5 ***************/
448*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
449*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,   32, 256 * 1 * 1});
450*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  128,  32 * 1 * 1});
451*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  128,  32 * 3 * 3});
452*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 6 ***************/
453*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
454*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,   48, 256 * 1 * 1});
455*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  192,  48 * 1 * 1});
456*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  192,  48 * 3 * 3});
457*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 7 ***************/
458*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
459*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,   48, 384 * 1 * 1});
460*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 8 ***************/
461*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
462*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,   64, 384 * 1 * 1});
463*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  256,  64 * 1 * 1});
464*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  256,  64 * 3 * 3});
465*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 9 ***************/
466*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
467*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,   64, 512 * 1 * 1});
468*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,  256,  64 * 1 * 1});
469*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,  256,  64 * 3 * 3});
470*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 10 **************/
471*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
472*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13, 1000, 512 * 1 * 1});
473*4bdc9457SAndroid Build Coastguard Worker }
474*4bdc9457SAndroid Build Coastguard Worker 
475*4bdc9457SAndroid Build Coastguard Worker // SqueezeNet 1.1
SqueezeNetV11GemmArguments(benchmark::internal::Benchmark * b)476*4bdc9457SAndroid Build Coastguard Worker static void SqueezeNetV11GemmArguments(benchmark::internal::Benchmark* b) {
477*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
478*4bdc9457SAndroid Build Coastguard Worker 
479*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 1 ***************/
480*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
481*4bdc9457SAndroid Build Coastguard Worker   b->Args({111 * 111,   64,   3 * 3 * 3});
482*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 2 ***************/
483*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
484*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   16,  64 * 1 * 1});
485*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   64,  16 * 1 * 1});
486*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   64,  16 * 3 * 3});
487*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 3 ***************/
488*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
489*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 55 *  55,   16, 128 * 1 * 1});
490*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 4 ***************/
491*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
492*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,   32, 128 * 1 * 1});
493*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  128,  32 * 1 * 1});
494*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,  128,  32 * 3 * 3});
495*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 5 ***************/
496*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
497*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 27 *  27,   32, 256 * 1 * 1});
498*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 6 ***************/
499*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
500*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,   48, 256 * 1 * 1});
501*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,  192,  48 * 1 * 1});
502*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,  192,  48 * 3 * 3});
503*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 7 ***************/
504*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
505*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,   48, 384 * 1 * 1});
506*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 8 ***************/
507*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
508*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,   64, 384 * 1 * 1});
509*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,  256,  64 * 1 * 1});
510*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,  256,  64 * 3 * 3});
511*4bdc9457SAndroid Build Coastguard Worker   /************** Fire 9 ***************/
512*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
513*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13,   64, 512 * 1 * 1});
514*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 10 **************/
515*4bdc9457SAndroid Build Coastguard Worker   /*           M        N         K    */
516*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 13 *  13, 1000, 512 * 1 * 1});
517*4bdc9457SAndroid Build Coastguard Worker }
518*4bdc9457SAndroid Build Coastguard Worker 
InceptionV3GemmArguments(benchmark::internal::Benchmark * b)519*4bdc9457SAndroid Build Coastguard Worker static void InceptionV3GemmArguments(benchmark::internal::Benchmark* b) {
520*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K   */
521*4bdc9457SAndroid Build Coastguard Worker   b->Args({150 * 150,   32,    3 * 3 * 3});
522*4bdc9457SAndroid Build Coastguard Worker   b->Args({149 * 149,   32,   32 * 3 * 3});
523*4bdc9457SAndroid Build Coastguard Worker   b->Args({149 * 149,   64,   32 * 3 * 3});
524*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 75 *  75,   80,   64 * 1 * 1});
525*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 73 *  73,  192,   80 * 3 * 3});
526*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   64,  192 * 1 * 1});
527*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   48,  192 * 1 * 1});
528*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   64,   48 * 5 * 5});
529*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   96,   64 * 3 * 3});
530*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   96,   96 * 3 * 3});
531*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   32,  192 * 1 * 1});
532*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   64,  256 * 1 * 1});
533*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   48,  256 * 1 * 1});
534*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   64,  288 * 1 * 1});
535*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 37 *  37,   48,  288 * 1 * 1});
536*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 18 *  18,  384,  288 * 3 * 3});
537*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 18 *  18,   96,   96 * 3 * 3});
538*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  768 * 1 * 1});
539*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  128,  768 * 1 * 1});
540*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  128,  128 * 1 * 7});
541*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  128 * 7 * 1});
542*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  128,  128 * 7 * 1});
543*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  128 * 1 * 7});
544*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  160,  768 * 1 * 1});
545*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  160,  160 * 1 * 7});
546*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  160 * 7 * 1});
547*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  160,  160 * 7 * 1});
548*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  160 * 1 * 7});
549*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  192 * 1 * 7});
550*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 19 *  19,  192,  192 * 7 * 1});
551*4bdc9457SAndroid Build Coastguard Worker   b->Args({  9 *   9,  320,  192 * 3 * 3});
552*4bdc9457SAndroid Build Coastguard Worker   b->Args({  9 *   9,  192,  192 * 3 * 3});
553*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  320, 1280 * 1 * 1});
554*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  384, 1280 * 1 * 1});
555*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  384,  384 * 1 * 3});
556*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  384,  384 * 3 * 1});
557*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  448, 1280 * 1 * 1});
558*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  384,  448 * 3 * 3});
559*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  192, 1280 * 1 * 1});
560*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  320, 2048 * 1 * 1});
561*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  384, 2048 * 1 * 1});
562*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  448, 2048 * 1 * 1});
563*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 10 *  10,  192, 2048 * 1 * 1});
564*4bdc9457SAndroid Build Coastguard Worker   b->Args({  3 *   3, 1001, 2048 * 1 * 1});
565*4bdc9457SAndroid Build Coastguard Worker }
566*4bdc9457SAndroid Build Coastguard Worker 
ResNet18GemmArguments(benchmark::internal::Benchmark * b)567*4bdc9457SAndroid Build Coastguard Worker static void ResNet18GemmArguments(benchmark::internal::Benchmark* b) {
568*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
569*4bdc9457SAndroid Build Coastguard Worker 
570*4bdc9457SAndroid Build Coastguard Worker   /*           M       N         K    */
571*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,  64,   3 * 7 * 7});
572*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  64,  64 * 3 * 3});
573*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 128,  64 * 3 * 3});
574*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 128, 128 * 3 * 3});
575*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 128,  64 * 1 * 1});
576*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 256, 128 * 3 * 3});
577*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 256, 256 * 3 * 3});
578*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 256, 128 * 1 * 1});
579*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 512, 256 * 3 * 3});
580*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 512, 512 * 3 * 3});
581*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 512, 256 * 1 * 1});
582*4bdc9457SAndroid Build Coastguard Worker }
583*4bdc9457SAndroid Build Coastguard Worker 
ResNet50GemmArguments(benchmark::internal::Benchmark * b)584*4bdc9457SAndroid Build Coastguard Worker static void ResNet50GemmArguments(benchmark::internal::Benchmark* b) {
585*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
586*4bdc9457SAndroid Build Coastguard Worker 
587*4bdc9457SAndroid Build Coastguard Worker   /*************** Conv 1 ***************/
588*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
589*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112,   64,    3 * 7 * 7});
590*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 2.X **************/
591*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
592*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   64,   64 * 1 * 1});
593*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   64,   64 * 3 * 3});
594*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  256,   64 * 1 * 1});
595*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,   64,  256 * 1 * 1});
596*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 3.X **************/
597*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
598*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56,  128,  256 * 1 * 1});
599*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  128,  128 * 3 * 3});
600*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  512,  128 * 1 * 1});
601*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  512,  256 * 1 * 1});
602*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  128,  512 * 1 * 1});
603*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 4.X **************/
604*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
605*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28,  256,  512 * 1 * 1});
606*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  256,  256 * 3 * 3});
607*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 1024,  256 * 1 * 1});
608*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 1024,  512 * 1 * 1});
609*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  256, 1024 * 1 * 1});
610*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 5.X **************/
611*4bdc9457SAndroid Build Coastguard Worker   /*           M        N          K    */
612*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14,  512, 1024 * 1 * 1});
613*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  512,  512 * 3 * 3});
614*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 2048,  512 * 1 * 1});
615*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7, 2048, 1024 * 1 * 1});
616*4bdc9457SAndroid Build Coastguard Worker   b->Args({  7 *   7,  512, 2048 * 1 * 1});
617*4bdc9457SAndroid Build Coastguard Worker }
618*4bdc9457SAndroid Build Coastguard Worker 
VGGGemmArguments(benchmark::internal::Benchmark * b)619*4bdc9457SAndroid Build Coastguard Worker static void VGGGemmArguments(benchmark::internal::Benchmark* b) {
620*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
621*4bdc9457SAndroid Build Coastguard Worker 
622*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 1.1 *************/
623*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
624*4bdc9457SAndroid Build Coastguard Worker   b->Args({224 * 224,  64,   3 * 3 * 3});
625*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 1.2 *************/
626*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
627*4bdc9457SAndroid Build Coastguard Worker   b->Args({224 * 224,  64,  64 * 3 * 3});
628*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 2.1 *************/
629*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
630*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112, 128,  64 * 3 * 3});
631*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 2.2 *************/
632*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
633*4bdc9457SAndroid Build Coastguard Worker   b->Args({112 * 112, 128, 128 * 3 * 3});
634*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 3.1 *************/
635*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
636*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56, 256, 128 * 3 * 3});
637*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 3.3 *************/
638*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
639*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 56 *  56, 256, 256 * 1 * 1});
640*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 4.1 *************/
641*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
642*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 512, 256 * 3 * 3});
643*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 4.2 *************/
644*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
645*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 512, 512 * 3 * 3});
646*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 4.3 *************/
647*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
648*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 28 *  28, 512, 512 * 1 * 1});
649*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 5.X *************/
650*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
651*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 512, 512 * 3 * 3});
652*4bdc9457SAndroid Build Coastguard Worker   /************** Conv 5.3 *************/
653*4bdc9457SAndroid Build Coastguard Worker   /*           M        N        K     */
654*4bdc9457SAndroid Build Coastguard Worker   b->Args({ 14 *  14, 512, 512 * 1 * 1});
655*4bdc9457SAndroid Build Coastguard Worker }
656*4bdc9457SAndroid Build Coastguard Worker 
657*4bdc9457SAndroid Build Coastguard Worker // SRCNN (9-1-5)
SRCNN915GemmArguments(benchmark::internal::Benchmark * b)658*4bdc9457SAndroid Build Coastguard Worker static void SRCNN915GemmArguments(benchmark::internal::Benchmark* b) {
659*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
660*4bdc9457SAndroid Build Coastguard Worker 
661*4bdc9457SAndroid Build Coastguard Worker   /*           M       N       K    */
662*4bdc9457SAndroid Build Coastguard Worker   b->Args({376 * 376, 64,  1 * 9 * 9});
663*4bdc9457SAndroid Build Coastguard Worker   b->Args({376 * 376, 32, 64 * 1 * 1});
664*4bdc9457SAndroid Build Coastguard Worker   b->Args({372 * 372,  1, 32 * 5 * 5});
665*4bdc9457SAndroid Build Coastguard Worker }
666*4bdc9457SAndroid Build Coastguard Worker 
667*4bdc9457SAndroid Build Coastguard Worker // SRCNN (9-3-5)
SRCNN935GemmArguments(benchmark::internal::Benchmark * b)668*4bdc9457SAndroid Build Coastguard Worker static void SRCNN935GemmArguments(benchmark::internal::Benchmark* b) {
669*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
670*4bdc9457SAndroid Build Coastguard Worker 
671*4bdc9457SAndroid Build Coastguard Worker   /*           M       N       K    */
672*4bdc9457SAndroid Build Coastguard Worker   b->Args({376 * 376, 64,  1 * 9 * 9});
673*4bdc9457SAndroid Build Coastguard Worker   b->Args({374 * 374, 32, 64 * 3 * 3});
674*4bdc9457SAndroid Build Coastguard Worker   b->Args({370 * 370,  1, 32 * 5 * 5});
675*4bdc9457SAndroid Build Coastguard Worker }
676*4bdc9457SAndroid Build Coastguard Worker 
677*4bdc9457SAndroid Build Coastguard Worker // SRCNN (9-5-5)
SRCNN955GemmArguments(benchmark::internal::Benchmark * b)678*4bdc9457SAndroid Build Coastguard Worker static void SRCNN955GemmArguments(benchmark::internal::Benchmark* b) {
679*4bdc9457SAndroid Build Coastguard Worker   b->ArgNames({"M", "N", "K"});
680*4bdc9457SAndroid Build Coastguard Worker 
681*4bdc9457SAndroid Build Coastguard Worker   /*           M       N       K    */
682*4bdc9457SAndroid Build Coastguard Worker   b->Args({376 * 376, 64,  1 * 9 * 9});
683*4bdc9457SAndroid Build Coastguard Worker   b->Args({372 * 372, 32, 64 * 5 * 5});
684*4bdc9457SAndroid Build Coastguard Worker   b->Args({368 * 368,  1, 32 * 5 * 5});
685*4bdc9457SAndroid Build Coastguard Worker }
686