XNNPACK Team | b455b12 | 2019-09-27 18:10:33 -0700 | [diff] [blame] | 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 | #pragma once |
| 10 | |
| 11 | #include <benchmark/benchmark.h> |
| 12 | |
| 13 | |
| 14 | #define BENCHMARK_CONV(conv_fn) \ |
| 15 | BENCHMARK_CAPTURE(conv_fn, mobilenet_v1, "MobileNet v1")->Apply(MobileNetV1ConvArguments)->UseRealTime(); \ |
| 16 | BENCHMARK_CAPTURE(conv_fn, mobilenet_v2, "MobileNet v2")->Apply(MobileNetV2ConvArguments)->UseRealTime(); \ |
| 17 | BENCHMARK_CAPTURE(conv_fn, mobilenet_v3_small, "MobileNet v3 Small")->Apply(MobileNetV3SmallConvArguments)->UseRealTime(); \ |
| 18 | BENCHMARK_CAPTURE(conv_fn, mobilenet_v3_large, "MobileNet v3 Large")->Apply(MobileNetV3LargeConvArguments)->UseRealTime(); \ |
| 19 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g1, "ShuffleNet v1 (1 group)")->Apply(ShuffleNetV1G1ConvArguments)->UseRealTime(); \ |
| 20 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g2, "ShuffleNet v1 (2 groups)")->Apply(ShuffleNetV1G2ConvArguments)->UseRealTime(); \ |
| 21 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g3, "ShuffleNet v1 (3 groups)")->Apply(ShuffleNetV1G3ConvArguments)->UseRealTime(); \ |
| 22 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g4, "ShuffleNet v1 (4 groups)")->Apply(ShuffleNetV1G4ConvArguments)->UseRealTime(); \ |
| 23 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g8, "ShuffleNet v1 (8 groups)")->Apply(ShuffleNetV1G8ConvArguments)->UseRealTime(); \ |
| 24 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x05, "ShuffleNet v2 0.5X")->Apply(ShuffleNetV2X05ConvArguments)->UseRealTime(); \ |
| 25 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x10, "ShuffleNet v2 1.0X")->Apply(ShuffleNetV2X10ConvArguments)->UseRealTime(); \ |
| 26 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x15, "ShuffleNet v2 1.5X")->Apply(ShuffleNetV2X15ConvArguments)->UseRealTime(); \ |
| 27 | BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x20, "ShuffleNet v2 2.0X")->Apply(ShuffleNetV2X20ConvArguments)->UseRealTime(); \ |
| 28 | BENCHMARK_CAPTURE(conv_fn, inception_v3, "Inception v3")->Apply(InceptionV3ConvArguments)->UseRealTime(); \ |
| 29 | BENCHMARK_CAPTURE(conv_fn, resnet18, "ResNet-18")->Apply(ResNet18ConvArguments)->UseRealTime(); \ |
| 30 | BENCHMARK_CAPTURE(conv_fn, resnet50, "ResNet-50")->Apply(ResNet50ConvArguments)->UseRealTime(); \ |
| 31 | BENCHMARK_CAPTURE(conv_fn, squeezenet_v10, "SqueezeNet 1.0")->Apply(SqueezeNetV10ConvArguments)->UseRealTime(); \ |
| 32 | BENCHMARK_CAPTURE(conv_fn, squeezenet_v11, "SqueezeNet 1.1")->Apply(SqueezeNetV11ConvArguments)->UseRealTime(); \ |
| 33 | BENCHMARK_CAPTURE(conv_fn, vgg, "VGG")->Apply(VGGConvArguments)->UseRealTime(); \ |
| 34 | BENCHMARK_CAPTURE(conv_fn, srcnn915, "SRCNN (9-1-5)")->Apply(SRCNN915ConvArguments)->UseRealTime(); \ |
| 35 | BENCHMARK_CAPTURE(conv_fn, srcnn935, "SRCNN (9-3-5)")->Apply(SRCNN935ConvArguments)->UseRealTime(); \ |
| 36 | BENCHMARK_CAPTURE(conv_fn, srcnn955, "SRCNN (9-5-5)")->Apply(SRCNN955ConvArguments)->UseRealTime(); |
| 37 | |
| 38 | |
| 39 | // ShuffleNet v1 with 1 group. |
| 40 | static void ShuffleNetV1G1ConvArguments(benchmark::internal::Benchmark* b) { |
| 41 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 42 | |
| 43 | /*********************** Conv 1 **********************/ |
| 44 | /* H W KH KW PH PW S D GCin GCout */ |
| 45 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 46 | /*************** Stage 2: stride-2 unit **************/ |
| 47 | /* H W KH KW PH PW S D GCin GCout */ |
| 48 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 36}); |
| 49 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 36, 120}); |
| 50 | /*************** Stage 2: stride-1 units *************/ |
| 51 | /* H W KH KW PH PW S D GCin GCout */ |
| 52 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 144, 36}); |
| 53 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 36, 144}); |
| 54 | /*************** Stage 3: stride-2 unit **************/ |
| 55 | /* H W KH KW PH PW S D GCin GCout */ |
| 56 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 144, 72}); |
| 57 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 72, 144}); |
| 58 | /*************** Stage 3: stride-1 units *************/ |
| 59 | /* H W KH KW PH PW S D GCin GCout */ |
| 60 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 288, 72}); |
| 61 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 72, 288}); |
| 62 | /*************** Stage 4: stride-2 unit **************/ |
| 63 | /* H W KH KW PH PW S D GCin GCout */ |
| 64 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 288, 144}); |
| 65 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 144, 288}); |
| 66 | /*************** Stage 4: stride-1 units *************/ |
| 67 | /* H W KH KW PH PW S D GCin GCout */ |
| 68 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 144}); |
| 69 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 144, 576}); |
| 70 | } |
| 71 | |
| 72 | // ShuffleNet v1 with 2 groups. |
| 73 | static void ShuffleNetV1G2ConvArguments(benchmark::internal::Benchmark* b) { |
| 74 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 75 | |
| 76 | /*********************** Conv 1 **********************/ |
| 77 | /* H W KH KW PH PW S D GCin GCout */ |
| 78 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 79 | /*************** Stage 2: stride-2 unit **************/ |
| 80 | /* H W KH KW PH PW S D GCin GCout */ |
| 81 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 50}); |
| 82 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 25, 88}); |
| 83 | /*************** Stage 2: stride-1 units *************/ |
| 84 | /* H W KH KW PH PW S D GCin GCout */ |
| 85 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 100, 25}); |
| 86 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 25, 100}); |
| 87 | /*************** Stage 3: stride-2 unit **************/ |
| 88 | /* H W KH KW PH PW S D GCin GCout */ |
| 89 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 100, 50}); |
| 90 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 50, 100}); |
| 91 | /*************** Stage 3: stride-1 units *************/ |
| 92 | /* H W KH KW PH PW S D GCin GCout */ |
| 93 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 200, 50}); |
| 94 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 50, 200}); |
| 95 | /*************** Stage 4: stride-2 unit **************/ |
| 96 | /* H W KH KW PH PW S D GCin GCout */ |
| 97 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 200, 100}); |
| 98 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 100, 200}); |
| 99 | /*************** Stage 4: stride-1 units *************/ |
| 100 | /* H W KH KW PH PW S D GCin GCout */ |
| 101 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 400, 100}); |
| 102 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 100, 400}); |
| 103 | } |
| 104 | |
| 105 | // ShuffleNet v1 with 3 groups. |
| 106 | static void ShuffleNetV1G3ConvArguments(benchmark::internal::Benchmark* b) { |
| 107 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 108 | |
| 109 | /*********************** Conv 1 **********************/ |
| 110 | /* H W KH KW PH PW S D GCin GCout */ |
| 111 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 112 | /*************** Stage 2: stride-2 unit **************/ |
| 113 | /* H W KH KW PH PW S D GCin GCout */ |
| 114 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 60}); |
| 115 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 20, 72}); |
| 116 | /*************** Stage 2: stride-1 units *************/ |
| 117 | /* H W KH KW PH PW S D GCin GCout */ |
| 118 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 80, 20}); |
| 119 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 20, 80}); |
| 120 | /*************** Stage 3: stride-2 unit **************/ |
| 121 | /* H W KH KW PH PW S D GCin GCout */ |
| 122 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 80, 40}); |
| 123 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 80}); |
| 124 | /*************** Stage 3: stride-1 units *************/ |
| 125 | /* H W KH KW PH PW S D GCin GCout */ |
| 126 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 160, 40}); |
| 127 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 160}); |
| 128 | /*************** Stage 4: stride-2 unit **************/ |
| 129 | /* H W KH KW PH PW S D GCin GCout */ |
| 130 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 160, 80}); |
| 131 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 80, 160}); |
| 132 | /*************** Stage 4: stride-1 units *************/ |
| 133 | /* H W KH KW PH PW S D GCin GCout */ |
| 134 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 320, 80}); |
| 135 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 80, 320}); |
| 136 | } |
| 137 | |
| 138 | // ShuffleNet v1 with 4 groups. |
| 139 | static void ShuffleNetV1G4ConvArguments(benchmark::internal::Benchmark* b) { |
| 140 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 141 | |
| 142 | /*********************** Conv 1 **********************/ |
| 143 | /* H W KH KW PH PW S D GCin GCout */ |
| 144 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 145 | /*************** Stage 2: stride-2 unit **************/ |
| 146 | /* H W KH KW PH PW S D GCin GCout */ |
| 147 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 68}); |
| 148 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 17, 62}); |
| 149 | /*************** Stage 2: stride-1 units *************/ |
| 150 | /* H W KH KW PH PW S D GCin GCout */ |
| 151 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 68, 17}); |
| 152 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 17, 68}); |
| 153 | /*************** Stage 3: stride-2 unit **************/ |
| 154 | /* H W KH KW PH PW S D GCin GCout */ |
| 155 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 68, 34}); |
| 156 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 34, 68}); |
| 157 | /*************** Stage 3: stride-1 units *************/ |
| 158 | /* H W KH KW PH PW S D GCin GCout */ |
| 159 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 136, 34}); |
| 160 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 34, 136}); |
| 161 | /*************** Stage 4: stride-2 unit **************/ |
| 162 | /* H W KH KW PH PW S D GCin GCout */ |
| 163 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 136, 68}); |
| 164 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 68, 136}); |
| 165 | /*************** Stage 4: stride-1 units *************/ |
| 166 | /* H W KH KW PH PW S D GCin GCout */ |
| 167 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 272, 68}); |
| 168 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 68, 272}); |
| 169 | } |
| 170 | |
| 171 | // ShuffleNet v1 with 8 groups. |
| 172 | static void ShuffleNetV1G8ConvArguments(benchmark::internal::Benchmark* b) { |
| 173 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 174 | |
| 175 | /*********************** Conv 1 **********************/ |
| 176 | /* H W KH KW PH PW S D GCin GCout */ |
| 177 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 178 | /*************** Stage 2: stride-2 unit **************/ |
| 179 | /* H W KH KW PH PW S D GCin GCout */ |
| 180 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 96}); |
| 181 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 12, 45}); |
| 182 | /*************** Stage 2: stride-1 units *************/ |
| 183 | /* H W KH KW PH PW S D GCin GCout */ |
| 184 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 48, 12}); |
| 185 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 12, 48}); |
| 186 | /*************** Stage 3: stride-2 unit **************/ |
| 187 | /* H W KH KW PH PW S D GCin GCout */ |
| 188 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 48, 24}); |
| 189 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 24, 48}); |
| 190 | /*************** Stage 3: stride-1 units *************/ |
| 191 | /* H W KH KW PH PW S D GCin GCout */ |
| 192 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 24}); |
| 193 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 24, 96}); |
| 194 | /*************** Stage 4: stride-2 unit **************/ |
| 195 | /* H W KH KW PH PW S D GCin GCout */ |
| 196 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 48}); |
| 197 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 48, 96}); |
| 198 | /*************** Stage 4: stride-1 units *************/ |
| 199 | /* H W KH KW PH PW S D GCin GCout */ |
| 200 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 192, 48}); |
| 201 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 48, 192}); |
| 202 | } |
| 203 | |
| 204 | // ShuffleNet v2 (0.5X scale). |
| 205 | static void ShuffleNetV2X05ConvArguments(benchmark::internal::Benchmark* b) { |
| 206 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 207 | |
| 208 | /*********************** Conv 1 **********************/ |
| 209 | /* H W KH KW PH PW S D GCin GCout */ |
| 210 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 211 | /********************** Stage 2 **********************/ |
| 212 | /* H W KH KW PH PW S D GCin GCout */ |
| 213 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 24}); |
| 214 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 24}); |
| 215 | /********************** Stage 3 **********************/ |
| 216 | /* H W KH KW PH PW S D GCin GCout */ |
| 217 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 48, 48}); |
| 218 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 48, 48}); |
| 219 | /********************** Stage 4 **********************/ |
| 220 | /* H W KH KW PH PW S D GCin GCout */ |
| 221 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 96}); |
| 222 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 96}); |
| 223 | /*********************** Conv 5 **********************/ |
| 224 | /* H W KH KW PH PW S D GCin GCout */ |
| 225 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 192, 1024}); |
| 226 | } |
| 227 | |
| 228 | // ShuffleNet v2 (1.0X scale). |
| 229 | static void ShuffleNetV2X10ConvArguments(benchmark::internal::Benchmark* b) { |
| 230 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 231 | |
| 232 | /*********************** Conv 1 **********************/ |
| 233 | /* H W KH KW PH PW S D GCin GCout */ |
| 234 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 235 | /********************** Stage 2 **********************/ |
| 236 | /* H W KH KW PH PW S D GCin GCout */ |
| 237 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 58}); |
| 238 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 58}); |
| 239 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 58, 58}); |
| 240 | /********************** Stage 3 **********************/ |
| 241 | /* H W KH KW PH PW S D GCin GCout */ |
| 242 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 116, 116}); |
| 243 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 116, 116}); |
| 244 | /********************** Stage 4 **********************/ |
| 245 | /* H W KH KW PH PW S D GCin GCout */ |
| 246 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 232, 232}); |
| 247 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 232, 232}); |
| 248 | /*********************** Conv 5 **********************/ |
| 249 | /* H W KH KW PH PW S D GCin GCout */ |
| 250 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 464, 1024}); |
| 251 | } |
| 252 | |
| 253 | // ShuffleNet v2 (1.5X scale). |
| 254 | static void ShuffleNetV2X15ConvArguments(benchmark::internal::Benchmark* b) { |
| 255 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 256 | |
| 257 | /*********************** Conv 1 **********************/ |
| 258 | /* H W KH KW PH PW S D GCin GCout */ |
| 259 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 260 | /********************** Stage 2 **********************/ |
| 261 | /* H W KH KW PH PW S D GCin GCout */ |
| 262 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 88}); |
| 263 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 88}); |
| 264 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 88, 88}); |
| 265 | /********************** Stage 3 **********************/ |
| 266 | /* H W KH KW PH PW S D GCin GCout */ |
| 267 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 176, 176}); |
| 268 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 176, 176}); |
| 269 | /********************** Stage 4 **********************/ |
| 270 | /* H W KH KW PH PW S D GCin GCout */ |
| 271 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 352, 352}); |
| 272 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 352, 352}); |
| 273 | /*********************** Conv 5 **********************/ |
| 274 | /* H W KH KW PH PW S D GCin GCout */ |
| 275 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 704, 1024}); |
| 276 | } |
| 277 | |
| 278 | // ShuffleNet v2 (2.0X scale). |
| 279 | static void ShuffleNetV2X20ConvArguments(benchmark::internal::Benchmark* b) { |
| 280 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 281 | |
| 282 | /*********************** Conv 1 **********************/ |
| 283 | /* H W KH KW PH PW S D GCin GCout */ |
| 284 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24}); |
| 285 | /********************** Stage 2 **********************/ |
| 286 | /* H W KH KW PH PW S D GCin GCout */ |
| 287 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 122}); |
| 288 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 122}); |
| 289 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 122, 122}); |
| 290 | /********************** Stage 3 **********************/ |
| 291 | /* H W KH KW PH PW S D GCin GCout */ |
| 292 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 244, 244}); |
| 293 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 244, 244}); |
| 294 | /********************** Stage 4 **********************/ |
| 295 | /* H W KH KW PH PW S D GCin GCout */ |
| 296 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 488, 488}); |
| 297 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 488, 488}); |
| 298 | /*********************** Conv 5 **********************/ |
| 299 | /* H W KH KW PH PW S D GCin GCout */ |
| 300 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 976, 2048}); |
| 301 | } |
| 302 | |
| 303 | static void MobileNetV1ConvArguments(benchmark::internal::Benchmark* b) { |
| 304 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 305 | |
| 306 | /* H W KH KW PH PW S D GCin GCout */ |
| 307 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 32}); |
| 308 | b->Args({112, 112, 1, 1, 0, 0, 1, 1, 32, 64}); |
| 309 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 128}); |
| 310 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 128, 128}); |
| 311 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 128, 256}); |
| 312 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 256, 256}); |
| 313 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 256, 512}); |
| 314 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 512, 512}); |
| 315 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 512, 1024}); |
| 316 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 1024, 1024}); |
| 317 | } |
| 318 | |
| 319 | static void MobileNetV2ConvArguments(benchmark::internal::Benchmark* b) { |
| 320 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 321 | |
| 322 | /* H W KH KW PH PW S D GCin GCout */ |
| 323 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 32}); |
| 324 | |
| 325 | /******************** Bottleneck 1 *******************/ |
| 326 | /* H W KH KW PH PW S D GCin GCout */ |
| 327 | b->Args({112, 112, 1, 1, 0, 0, 1, 1, 32, 16}); |
| 328 | |
| 329 | /******************** Bottleneck 2 *******************/ |
| 330 | /* H W KH KW PH PW S D GCin GCout */ |
| 331 | b->Args({112, 112, 1, 1, 0, 0, 1, 1, 16, 96}); |
| 332 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 96, 24}); |
| 333 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 144}); |
| 334 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 144, 24}); |
| 335 | |
| 336 | /******************** Bottleneck 3 *******************/ |
| 337 | /* H W KH KW PH PW S D GCin GCout */ |
| 338 | //b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 144}); |
| 339 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 144, 32}); |
| 340 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 32, 192}); |
| 341 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 192, 32}); |
| 342 | //b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 32, 192}); |
| 343 | //b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 192, 32}); |
| 344 | |
| 345 | /******************** Bottleneck 4 *******************/ |
| 346 | /* H W KH KW PH PW S D GCin GCout */ |
| 347 | //b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 32, 192}); |
| 348 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 192, 64}); |
| 349 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384}); |
| 350 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 64}); |
| 351 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384}); |
| 352 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 64}); |
| 353 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384}); |
| 354 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 64}); |
| 355 | |
| 356 | /******************** Bottleneck 5 *******************/ |
| 357 | /* H W KH KW PH PW S D GCin GCout */ |
| 358 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384}); |
| 359 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 96}); |
| 360 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 576}); |
| 361 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 576, 96}); |
| 362 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 576}); |
| 363 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 576, 96}); |
| 364 | |
| 365 | /******************** Bottleneck 6 *******************/ |
| 366 | /* H W KH KW PH PW S D GCin GCout */ |
| 367 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 576}); |
| 368 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 160}); |
| 369 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960}); |
| 370 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160}); |
| 371 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960}); |
| 372 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160}); |
| 373 | |
| 374 | /******************** Bottleneck 7 *******************/ |
| 375 | /* H W KH KW PH PW S D GCin GCout */ |
| 376 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960}); |
| 377 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 320}); |
| 378 | |
| 379 | /**************** Pre-pooling Conv2D *****************/ |
| 380 | /* H W KH KW PH PW S D GCin GCout */ |
| 381 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 320, 1280}); |
| 382 | /**************** Post-pooling Conv2D ****************/ |
| 383 | /* H W KH KW PH PW S D GCin GCout */ |
| 384 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 1280, 1000}); |
| 385 | } |
| 386 | |
| 387 | static void MobileNetV3SmallConvArguments(benchmark::internal::Benchmark* b) { |
| 388 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 389 | |
| 390 | /******************* Initial Stage *******************/ |
| 391 | /* H W KH KW PH PW S D GCin GCout */ |
| 392 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 16}); |
| 393 | /******************** Bottleneck 1 *******************/ |
| 394 | /* H W KH KW PH PW S D GCin GCout */ |
| 395 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 16, 8}); |
| 396 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 8, 16}); |
| 397 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 16, 16}); |
| 398 | /******************** Bottleneck 2 *******************/ |
| 399 | /* H W KH KW PH PW S D GCin GCout */ |
| 400 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 16, 72}); |
| 401 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 72, 24}); |
| 402 | /******************** Bottleneck 3 *******************/ |
| 403 | /* H W KH KW PH PW S D GCin GCout */ |
| 404 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 88}); |
| 405 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 88, 24}); |
| 406 | /******************** Bottleneck 4 *******************/ |
| 407 | /* H W KH KW PH PW S D GCin GCout */ |
| 408 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 96}); |
| 409 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 96, 24}); |
| 410 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 24, 96}); |
| 411 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 40}); |
| 412 | /******************** Bottleneck 5 *******************/ |
| 413 | /* H W KH KW PH PW S D GCin GCout */ |
| 414 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 240}); |
| 415 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 64}); |
| 416 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 64, 240}); |
| 417 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 240, 40}); |
| 418 | /******************** Bottleneck 6 *******************/ |
| 419 | /* H W KH KW PH PW S D GCin GCout */ |
| 420 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 240}); |
| 421 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 64}); |
| 422 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 64, 240}); |
| 423 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 240, 40}); |
| 424 | /******************** Bottleneck 7 *******************/ |
| 425 | /* H W KH KW PH PW S D GCin GCout */ |
| 426 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 120}); |
| 427 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 32}); |
| 428 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 32, 120}); |
| 429 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 120, 48}); |
| 430 | /******************** Bottleneck 8 *******************/ |
| 431 | /* H W KH KW PH PW S D GCin GCout */ |
| 432 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 48, 144}); |
| 433 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 144, 40}); |
| 434 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 40, 144}); |
| 435 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 144, 48}); |
| 436 | /******************** Bottleneck 9 *******************/ |
| 437 | /* H W KH KW PH PW S D GCin GCout */ |
| 438 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 48, 288}); |
| 439 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 288, 72}); |
| 440 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 72, 288}); |
| 441 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 288, 96}); |
| 442 | /******************* Bottleneck 10 *******************/ |
| 443 | /* H W KH KW PH PW S D GCin GCout */ |
| 444 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 576}); |
| 445 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 576, 144}); |
| 446 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 144, 576}); |
| 447 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 96}); |
| 448 | /******************* Bottleneck 11 *******************/ |
| 449 | /* H W KH KW PH PW S D GCin GCout */ |
| 450 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 576}); |
| 451 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 576, 144}); |
| 452 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 144, 576}); |
| 453 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 96}); |
| 454 | /********************* Last Stage ********************/ |
| 455 | /* H W KH KW PH PW S D GCin GCout */ |
| 456 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 576}); |
| 457 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 576, 1024}); |
| 458 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 1024, 1001}); |
| 459 | } |
| 460 | |
| 461 | static void MobileNetV3LargeConvArguments(benchmark::internal::Benchmark* b) { |
| 462 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 463 | |
| 464 | /******************* Initial Stage *******************/ |
| 465 | /* H W KH KW PH PW S D GCin GCout */ |
| 466 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 16}); |
| 467 | /******************** Bottleneck 1 *******************/ |
| 468 | /* H W KH KW PH PW S D GCin GCout */ |
| 469 | b->Args({112, 112, 1, 1, 0, 0, 1, 1, 16, 16}); |
| 470 | /******************** Bottleneck 2 *******************/ |
| 471 | /* H W KH KW PH PW S D GCin GCout */ |
| 472 | b->Args({112, 112, 1, 1, 0, 0, 1, 1, 16, 64}); |
| 473 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 24}); |
| 474 | /******************** Bottleneck 3 *******************/ |
| 475 | /* H W KH KW PH PW S D GCin GCout */ |
| 476 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 72}); |
Frank Barchard | e104aa3 | 2020-01-27 12:12:38 -0800 | [diff] [blame] | 477 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 72, 24}); |
XNNPACK Team | b455b12 | 2019-09-27 18:10:33 -0700 | [diff] [blame] | 478 | /******************** Bottleneck 4 *******************/ |
| 479 | /* H W KH KW PH PW S D GCin GCout */ |
| 480 | //b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 72});*/ |
| 481 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 72, 24}); |
| 482 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 24, 72}); |
| 483 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 72, 40}); |
| 484 | /******************** Bottleneck 5 *******************/ |
| 485 | /* H W KH KW PH PW S D GCin GCout */ |
| 486 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 40, 120}); |
| 487 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 32}); |
| 488 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 32, 120}); |
| 489 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 120, 40}); |
| 490 | /******************** Bottleneck 6 *******************/ |
| 491 | /* H W KH KW PH PW S D GCin GCout */ |
| 492 | //b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 40, 120}); |
| 493 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 32}); |
| 494 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 32, 120}); |
| 495 | //b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 120, 40}); |
| 496 | /******************** Bottleneck 7 *******************/ |
| 497 | /* H W KH KW PH PW S D GCin GCout */ |
| 498 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 40, 240}); |
| 499 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 240, 80}); |
| 500 | /******************** Bottleneck 8 *******************/ |
| 501 | /* H W KH KW PH PW S D GCin GCout */ |
| 502 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 200}); |
| 503 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 200, 80}); |
| 504 | /******************** Bottleneck 9 *******************/ |
| 505 | /* H W KH KW PH PW S D GCin GCout */ |
| 506 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 184}); |
| 507 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 184, 80}); |
| 508 | /******************* Bottleneck 10 *******************/ |
| 509 | /* H W KH KW PH PW S D GCin GCout */ |
| 510 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 184}); |
| 511 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 184, 80}); |
| 512 | /******************* Bottleneck 11 *******************/ |
| 513 | /* H W KH KW PH PW S D GCin GCout */ |
| 514 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 480}); |
| 515 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 480, 120}); |
| 516 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 480}); |
| 517 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 480, 112}); |
| 518 | /******************* Bottleneck 12 *******************/ |
| 519 | /* H W KH KW PH PW S D GCin GCout */ |
| 520 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 112, 672}); |
| 521 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 672, 168}); |
| 522 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 168, 672}); |
| 523 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 672, 112}); |
| 524 | /******************* Bottleneck 13 *******************/ |
| 525 | /* H W KH KW PH PW S D GCin GCout */ |
| 526 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 112, 672}); |
| 527 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 672, 160}); |
| 528 | /******************* Bottleneck 14 *******************/ |
| 529 | /* H W KH KW PH PW S D GCin GCout */ |
| 530 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960}); |
| 531 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 960, 240}); |
| 532 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 960}); |
| 533 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160}); |
| 534 | /******************* Bottleneck 15 *******************/ |
| 535 | /* H W KH KW PH PW S D GCin GCout */ |
| 536 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960}); |
| 537 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 960, 240}); |
| 538 | //b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 960}); |
| 539 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160}); |
| 540 | /******************** Last Stage *********************/ |
| 541 | /* H W KH KW PH PW S D GCin GCout */ |
| 542 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960}); |
| 543 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 960, 1280}); |
| 544 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 1280, 1001}); |
| 545 | } |
| 546 | |
| 547 | // SqueezeNet 1.0 |
| 548 | static void SqueezeNetV10ConvArguments(benchmark::internal::Benchmark* b) { |
| 549 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 550 | |
| 551 | /*********************** Conv 1 **********************/ |
| 552 | /* H W KH KW PH PW S D GCin GCout */ |
| 553 | b->Args({224, 224, 7, 7, 6, 6, 2, 1, 3, 96}); |
| 554 | /*********************** Fire 2 **********************/ |
| 555 | /* H W KH KW PH PW S D GCin GCout */ |
| 556 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 96, 16}); |
| 557 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64}); |
| 558 | b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64}); |
| 559 | /*********************** Fire 3 **********************/ |
| 560 | /* H W KH KW PH PW S D GCin GCout */ |
| 561 | b->Args({ 56, 55, 1, 1, 0, 0, 1, 1, 128, 16}); |
| 562 | //b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64}); |
| 563 | //b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64}); |
| 564 | /*********************** Fire 4 **********************/ |
| 565 | /* H W KH KW PH PW S D GCin GCout */ |
| 566 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 128, 32}); |
| 567 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 32, 128}); |
| 568 | b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 32, 128}); |
| 569 | /*********************** Fire 5 **********************/ |
| 570 | /* H W KH KW PH PW S D GCin GCout */ |
| 571 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 256, 32}); |
| 572 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 32, 128}); |
| 573 | b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 32, 128}); |
| 574 | /*********************** Fire 6 **********************/ |
| 575 | /* H W KH KW PH PW S D GCin GCout */ |
| 576 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 256, 48}); |
| 577 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 48, 192}); |
| 578 | b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 48, 192}); |
| 579 | /*********************** Fire 7 **********************/ |
| 580 | /* H W KH KW PH PW S D GCin GCout */ |
| 581 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 384, 48}); |
| 582 | //b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 48, 192}); |
| 583 | //b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 48, 192}); |
| 584 | /*********************** Fire 8 **********************/ |
| 585 | /* H W KH KW PH PW S D GCin GCout */ |
| 586 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 384, 64}); |
| 587 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 588 | b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 64, 256}); |
| 589 | /*********************** Fire 9 **********************/ |
| 590 | /* H W KH KW PH PW S D GCin GCout */ |
| 591 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 64}); |
| 592 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 593 | b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 64, 256}); |
| 594 | /********************** Conv 10 **********************/ |
| 595 | /* H W KH KW PH PW S D GCin GCout */ |
| 596 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 1000}); |
| 597 | } |
| 598 | |
| 599 | // SqueezeNet 1.1 |
| 600 | static void SqueezeNetV11ConvArguments(benchmark::internal::Benchmark* b) { |
| 601 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 602 | |
| 603 | /*********************** Conv 1 **********************/ |
| 604 | /* H W KH KW PH PW S D GCin GCout */ |
| 605 | b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 64}); |
| 606 | /*********************** Fire 2 **********************/ |
| 607 | /* H W KH KW PH PW S D GCin GCout */ |
| 608 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 64, 16}); |
| 609 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64}); |
| 610 | b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64}); |
| 611 | /*********************** Fire 3 **********************/ |
| 612 | /* H W KH KW PH PW S D GCin GCout */ |
| 613 | b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 128, 16}); |
| 614 | //b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64}); |
| 615 | //b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64}); |
| 616 | /*********************** Fire 4 **********************/ |
| 617 | /* H W KH KW PH PW S D GCin GCout */ |
| 618 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 128, 32}); |
| 619 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 32, 128}); |
| 620 | b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 32, 128}); |
| 621 | /*********************** Fire 5 **********************/ |
| 622 | /* H W KH KW PH PW S D GCin GCout */ |
| 623 | b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 256, 32}); |
| 624 | //b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 32, 128}); |
| 625 | //b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 32, 128}); |
| 626 | /*********************** Fire 6 **********************/ |
| 627 | /* H W KH KW PH PW S D GCin GCout */ |
| 628 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 256, 48}); |
| 629 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 48, 192}); |
| 630 | b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 48, 192}); |
| 631 | /*********************** Fire 7 **********************/ |
| 632 | /* H W KH KW PH PW S D GCin GCout */ |
| 633 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 384, 48}); |
| 634 | //b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 48, 192}); |
| 635 | //b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 48, 192}); |
| 636 | /*********************** Fire 8 **********************/ |
| 637 | /* H W KH KW PH PW S D GCin GCout */ |
| 638 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 384, 64}); |
| 639 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 640 | b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 64, 256}); |
| 641 | /*********************** Fire 9 **********************/ |
| 642 | /* H W KH KW PH PW S D GCin GCout */ |
| 643 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 64}); |
| 644 | //b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 645 | //b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 64, 256}); |
| 646 | /********************** Conv 10 **********************/ |
| 647 | /* H W KH KW PH PW S D GCin GCout */ |
| 648 | b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 1000}); |
| 649 | } |
| 650 | |
| 651 | static void InceptionV3ConvArguments(benchmark::internal::Benchmark* b) { |
| 652 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 653 | |
| 654 | /* H W KH KW PH PW S D GCin GCout */ |
| 655 | b->Args({299, 299, 3, 3, 0, 0, 2, 1, 3, 32}); |
| 656 | b->Args({149, 149, 3, 3, 0, 0, 1, 1, 32, 32}); |
| 657 | b->Args({147, 147, 3, 3, 2, 2, 1, 1, 32, 64}); |
| 658 | b->Args({ 73, 73, 1, 1, 0, 0, 1, 1, 64, 80}); |
| 659 | b->Args({ 73, 73, 3, 3, 0, 0, 1, 1, 80, 192}); |
| 660 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 192, 64}); |
| 661 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 192, 48}); |
| 662 | b->Args({ 35, 35, 5, 5, 4, 4, 1, 1, 48, 64}); |
| 663 | b->Args({ 35, 35, 3, 3, 2, 2, 1, 1, 64, 96}); |
| 664 | b->Args({ 35, 35, 3, 3, 2, 2, 1, 1, 96, 96}); |
| 665 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 192, 32}); |
| 666 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 256, 64}); |
| 667 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 256, 48}); |
| 668 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 288, 64}); |
| 669 | b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 288, 48}); |
| 670 | b->Args({ 35, 35, 3, 3, 0, 0, 2, 1, 288, 384}); |
| 671 | b->Args({ 35, 35, 3, 3, 0, 0, 2, 1, 96, 96}); |
| 672 | b->Args({ 17, 17, 1, 1, 0, 0, 1, 1, 768, 192}); |
| 673 | b->Args({ 17, 17, 1, 1, 0, 0, 1, 1, 768, 128}); |
| 674 | b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 128, 128}); |
| 675 | b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 128, 192}); |
| 676 | b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 128, 128}); |
| 677 | b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 128, 192}); |
| 678 | b->Args({ 17, 17, 1, 1, 0, 0, 1, 1, 768, 160}); |
| 679 | b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 160, 160}); |
| 680 | b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 160, 192}); |
| 681 | b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 160, 160}); |
| 682 | b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 160, 192}); |
| 683 | b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 192, 192}); |
| 684 | b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 192, 192}); |
| 685 | b->Args({ 17, 17, 3, 3, 0, 0, 2, 1, 192, 320}); |
| 686 | b->Args({ 17, 17, 3, 3, 0, 0, 2, 1, 192, 192}); |
| 687 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 320}); |
| 688 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 384}); |
| 689 | b->Args({ 8, 8, 1, 3, 0, 2, 1, 1, 384, 384}); |
| 690 | b->Args({ 8, 8, 3, 1, 2, 0, 1, 1, 384, 384}); |
| 691 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 448}); |
| 692 | b->Args({ 8, 8, 3, 3, 2, 2, 1, 1, 448, 384}); |
| 693 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 192}); |
| 694 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 320}); |
| 695 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 384}); |
| 696 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 448}); |
| 697 | b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 192}); |
| 698 | b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 2048, 1001}); |
| 699 | } |
| 700 | |
| 701 | static void ResNet18ConvArguments(benchmark::internal::Benchmark* b) { |
| 702 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 703 | |
| 704 | /********************** Conv 1 ***********************/ |
| 705 | /* H W KH KW PH PW S D GCin GCout */ |
| 706 | b->Args({224, 224, 7, 7, 6, 6, 2, 1, 3, 64}); |
| 707 | /********************* Conv 2.X **********************/ |
| 708 | /* H W KH KW PH PW S D GCin GCout */ |
| 709 | b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 64, 64}); |
| 710 | /********************* Conv 3.X **********************/ |
| 711 | /* H W KH KW PH PW S D GCin GCout */ |
| 712 | b->Args({ 56, 56, 3, 3, 2, 2, 2, 1, 64, 128}); |
| 713 | b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 128, 128}); |
| 714 | b->Args({ 56, 56, 1, 1, 0, 0, 2, 1, 64, 128}); |
| 715 | /********************* Conv 4.X **********************/ |
| 716 | /* H W KH KW PH PW S D GCin GCout */ |
| 717 | b->Args({ 28, 28, 3, 3, 2, 2, 2, 1, 128, 256}); |
| 718 | b->Args({ 14, 14, 3, 3, 2, 2, 1, 1, 256, 256}); |
| 719 | b->Args({ 28, 28, 1, 1, 0, 0, 2, 1, 128, 256}); |
| 720 | /********************* Conv 5.X **********************/ |
| 721 | /* H W KH KW PH PW S D GCin GCout */ |
| 722 | b->Args({ 14, 14, 3, 3, 2, 2, 2, 1, 256, 512}); |
| 723 | b->Args({ 7, 7, 3, 3, 2, 2, 1, 1, 512, 512}); |
| 724 | b->Args({ 14, 14, 1, 1, 0, 0, 2, 1, 256, 512}); |
| 725 | } |
| 726 | |
| 727 | static void ResNet50ConvArguments(benchmark::internal::Benchmark* b) { |
| 728 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 729 | |
| 730 | /********************** Conv 1 ***********************/ |
| 731 | /* H W KH KW PH PW S D GCin GCout */ |
| 732 | b->Args({224, 224, 7, 7, 6, 6, 2, 1, 3, 64}); |
| 733 | /********************* Conv 2.1 **********************/ |
| 734 | /* H W KH KW PH PW S D GCin GCout */ |
| 735 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 64}); |
| 736 | b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 64, 64}); |
| 737 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 738 | //b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 739 | /********************* Conv 2.X **********************/ |
| 740 | /* H W KH KW PH PW S D GCin GCout */ |
| 741 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 256, 64}); |
| 742 | //b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 64, 64}); |
| 743 | //b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 256}); |
| 744 | /********************** Conv 3.1 *********************/ |
| 745 | /* H W KH KW PH PW S D GCin GCout */ |
| 746 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 256, 128}); |
| 747 | b->Args({ 56, 56, 3, 3, 2, 2, 2, 1, 128, 128}); |
| 748 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 128, 512}); |
| 749 | b->Args({ 56, 56, 1, 1, 0, 0, 2, 1, 256, 512}); |
| 750 | /********************** Conv 3.X *********************/ |
| 751 | /* H W KH KW PH PW S D GCin GCout */ |
| 752 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 512, 128}); |
| 753 | b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 128, 128}); |
| 754 | //b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 128, 512}); |
| 755 | /********************** Conv 4.1 *********************/ |
| 756 | /* H W KH KW PH PW S D GCin GCout */ |
| 757 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 512, 256}); |
| 758 | b->Args({ 28, 28, 3, 3, 2, 2, 2, 1, 256, 256}); |
| 759 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 256, 1024}); |
| 760 | b->Args({ 28, 28, 1, 1, 0, 0, 2, 1, 512, 1024}); |
| 761 | /********************** Conv 4.X *********************/ |
| 762 | /* H W KH KW PH PW S D GCin GCout */ |
| 763 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 1024, 256}); |
| 764 | b->Args({ 14, 14, 3, 3, 2, 2, 1, 1, 256, 256}); |
| 765 | //b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 256, 1024}); |
| 766 | /********************** Conv 5.1 *********************/ |
| 767 | /* H W KH KW PH PW S D GCin GCout */ |
| 768 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 1024, 512}); |
| 769 | b->Args({ 14, 14, 3, 3, 2, 2, 2, 1, 512, 512}); |
| 770 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 512, 2048}); |
| 771 | b->Args({ 14, 14, 1, 1, 0, 0, 2, 1, 1024, 2048}); |
| 772 | /********************** Conv 5.X *********************/ |
| 773 | /* H W KH KW PH PW S D GCin GCout */ |
| 774 | b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 2048, 512}); |
| 775 | b->Args({ 7, 7, 3, 3, 2, 2, 1, 1, 512, 512}); |
| 776 | //b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 512, 2048}); |
| 777 | } |
| 778 | |
| 779 | static void VGGConvArguments(benchmark::internal::Benchmark* b) { |
| 780 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 781 | |
| 782 | /********************** Conv 1.1 *********************/ |
| 783 | /* H W KH KW PH PW S D GCin GCout */ |
| 784 | b->Args({224, 224, 3, 3, 2, 2, 1, 1, 3, 64}); |
| 785 | /********************** Conv 1.2 *********************/ |
| 786 | /* H W KH KW PH PW S D GCin GCout */ |
| 787 | b->Args({224, 224, 3, 3, 2, 2, 1, 1, 64, 64}); |
| 788 | |
| 789 | /********************** Conv 2.1 *********************/ |
| 790 | /* H W KH KW PH PW S D GCin GCout */ |
| 791 | b->Args({112, 112, 3, 3, 2, 2, 1, 1, 64, 128}); |
| 792 | /********************** Conv 2.2 *********************/ |
| 793 | /* H W KH KW PH PW S D GCin GCout */ |
| 794 | b->Args({112, 112, 3, 3, 2, 2, 1, 1, 128, 128}); |
| 795 | |
| 796 | /********************** Conv 3.1 *********************/ |
| 797 | /* H W KH KW PH PW S D GCin GCout */ |
| 798 | b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 128, 256}); |
| 799 | /********************** Conv 3.2 *********************/ |
| 800 | /* H W KH KW PH PW S D GCin GCout */ |
| 801 | b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 256, 256}); |
| 802 | /********************** Conv 3.3 *********************/ |
| 803 | /* H W KH KW PH PW S D GCin GCout */ |
| 804 | b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 256, 256}); |
| 805 | |
| 806 | /********************** Conv 4.1 *********************/ |
| 807 | /* H W KH KW PH PW S D GCin GCout */ |
| 808 | b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 256, 512}); |
| 809 | /********************** Conv 4.2 *********************/ |
| 810 | /* H W KH KW PH PW S D GCin GCout */ |
| 811 | b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 512, 512}); |
| 812 | /********************** Conv 4.3 *********************/ |
| 813 | /* H W KH KW PH PW S D GCin GCout */ |
| 814 | b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 512, 512}); |
| 815 | |
| 816 | /********************** Conv 5.X *********************/ |
| 817 | /* H W KH KW PH PW S D GCin GCout */ |
| 818 | b->Args({ 14, 14, 3, 3, 2, 2, 1, 1, 512, 512}); |
| 819 | /********************** Conv 5.3 *********************/ |
| 820 | /* H W KH KW PH PW S D GCin GCout */ |
| 821 | b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 512, 512}); |
| 822 | } |
| 823 | |
| 824 | // SRCNN (9-1-5) |
| 825 | static void SRCNN915ConvArguments(benchmark::internal::Benchmark* b) { |
| 826 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 827 | |
| 828 | /* H W KH KW PH PW S D GCin GCout */ |
| 829 | b->Args({384, 384, 9, 9, 0, 0, 1, 1, 1, 64}); |
| 830 | b->Args({376, 376, 1, 1, 0, 0, 1, 1, 64, 32}); |
| 831 | b->Args({376, 376, 5, 5, 0, 0, 1, 1, 32, 1}); |
| 832 | } |
| 833 | |
| 834 | // SRCNN (9-3-5) |
| 835 | static void SRCNN935ConvArguments(benchmark::internal::Benchmark* b) { |
| 836 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 837 | |
| 838 | /* H W KH KW PH PW S D GCin GCout */ |
| 839 | b->Args({384, 384, 9, 9, 0, 0, 1, 1, 1, 64}); |
| 840 | b->Args({376, 376, 3, 3, 0, 0, 1, 1, 64, 32}); |
| 841 | b->Args({374, 374, 5, 5, 0, 0, 1, 1, 32, 1}); |
| 842 | } |
| 843 | |
| 844 | // SRCNN (9-5-5) |
| 845 | static void SRCNN955ConvArguments(benchmark::internal::Benchmark* b) { |
| 846 | b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"}); |
| 847 | |
| 848 | /* H W KH KW PH PW S D GCin GCout */ |
| 849 | b->Args({384, 384, 9, 9, 0, 0, 1, 1, 1, 64}); |
| 850 | b->Args({376, 376, 5, 5, 0, 0, 1, 1, 64, 32}); |
| 851 | b->Args({372, 372, 5, 5, 0, 0, 1, 1, 32, 1}); |
| 852 | } |