You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
853 lines
45 KiB
853 lines
45 KiB
// Copyright (c) Facebook, Inc. and its affiliates.
|
|
// All rights reserved.
|
|
//
|
|
// Copyright 2019 Google LLC
|
|
//
|
|
// This source code is licensed under the BSD-style license found in the
|
|
// LICENSE file in the root directory of this source tree.
|
|
|
|
#pragma once
|
|
|
|
#include <benchmark/benchmark.h>
|
|
|
|
|
|
#define BENCHMARK_CONV(conv_fn) \
|
|
BENCHMARK_CAPTURE(conv_fn, mobilenet_v1, "MobileNet v1")->Apply(MobileNetV1ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, mobilenet_v2, "MobileNet v2")->Apply(MobileNetV2ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, mobilenet_v3_small, "MobileNet v3 Small")->Apply(MobileNetV3SmallConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, mobilenet_v3_large, "MobileNet v3 Large")->Apply(MobileNetV3LargeConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g1, "ShuffleNet v1 (1 group)")->Apply(ShuffleNetV1G1ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g2, "ShuffleNet v1 (2 groups)")->Apply(ShuffleNetV1G2ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g3, "ShuffleNet v1 (3 groups)")->Apply(ShuffleNetV1G3ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g4, "ShuffleNet v1 (4 groups)")->Apply(ShuffleNetV1G4ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v1_g8, "ShuffleNet v1 (8 groups)")->Apply(ShuffleNetV1G8ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x05, "ShuffleNet v2 0.5X")->Apply(ShuffleNetV2X05ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x10, "ShuffleNet v2 1.0X")->Apply(ShuffleNetV2X10ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x15, "ShuffleNet v2 1.5X")->Apply(ShuffleNetV2X15ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, shufflenet_v2_x20, "ShuffleNet v2 2.0X")->Apply(ShuffleNetV2X20ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, inception_v3, "Inception v3")->Apply(InceptionV3ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, resnet18, "ResNet-18")->Apply(ResNet18ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, resnet50, "ResNet-50")->Apply(ResNet50ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, squeezenet_v10, "SqueezeNet 1.0")->Apply(SqueezeNetV10ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, squeezenet_v11, "SqueezeNet 1.1")->Apply(SqueezeNetV11ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, vgg, "VGG")->Apply(VGGConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, srcnn915, "SRCNN (9-1-5)")->Apply(SRCNN915ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, srcnn935, "SRCNN (9-3-5)")->Apply(SRCNN935ConvArguments)->UseRealTime(); \
|
|
BENCHMARK_CAPTURE(conv_fn, srcnn955, "SRCNN (9-5-5)")->Apply(SRCNN955ConvArguments)->UseRealTime();
|
|
|
|
|
|
// ShuffleNet v1 with 1 group.
|
|
static void ShuffleNetV1G1ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/*************** Stage 2: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 36});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 36, 120});
|
|
/*************** Stage 2: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 144, 36});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 36, 144});
|
|
/*************** Stage 3: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 144, 72});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 72, 144});
|
|
/*************** Stage 3: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 288, 72});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 72, 288});
|
|
/*************** Stage 4: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 288, 144});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 144, 288});
|
|
/*************** Stage 4: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 144});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 144, 576});
|
|
}
|
|
|
|
// ShuffleNet v1 with 2 groups.
|
|
static void ShuffleNetV1G2ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/*************** Stage 2: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 50});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 25, 88});
|
|
/*************** Stage 2: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 100, 25});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 25, 100});
|
|
/*************** Stage 3: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 100, 50});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 50, 100});
|
|
/*************** Stage 3: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 200, 50});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 50, 200});
|
|
/*************** Stage 4: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 200, 100});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 100, 200});
|
|
/*************** Stage 4: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 400, 100});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 100, 400});
|
|
}
|
|
|
|
// ShuffleNet v1 with 3 groups.
|
|
static void ShuffleNetV1G3ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/*************** Stage 2: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 60});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 20, 72});
|
|
/*************** Stage 2: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 80, 20});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 20, 80});
|
|
/*************** Stage 3: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 80, 40});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 80});
|
|
/*************** Stage 3: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 160, 40});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 160});
|
|
/*************** Stage 4: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 160, 80});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 80, 160});
|
|
/*************** Stage 4: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 320, 80});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 80, 320});
|
|
}
|
|
|
|
// ShuffleNet v1 with 4 groups.
|
|
static void ShuffleNetV1G4ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/*************** Stage 2: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 68});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 17, 62});
|
|
/*************** Stage 2: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 68, 17});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 17, 68});
|
|
/*************** Stage 3: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 68, 34});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 34, 68});
|
|
/*************** Stage 3: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 136, 34});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 34, 136});
|
|
/*************** Stage 4: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 136, 68});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 68, 136});
|
|
/*************** Stage 4: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 272, 68});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 68, 272});
|
|
}
|
|
|
|
// ShuffleNet v1 with 8 groups.
|
|
static void ShuffleNetV1G8ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/*************** Stage 2: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 96});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 12, 45});
|
|
/*************** Stage 2: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 48, 12});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 12, 48});
|
|
/*************** Stage 3: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 48, 24});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 24, 48});
|
|
/*************** Stage 3: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 24});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 24, 96});
|
|
/*************** Stage 4: stride-2 unit **************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 48});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 48, 96});
|
|
/*************** Stage 4: stride-1 units *************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 192, 48});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 48, 192});
|
|
}
|
|
|
|
// ShuffleNet v2 (0.5X scale).
|
|
static void ShuffleNetV2X05ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/********************** Stage 2 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 24});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 24});
|
|
/********************** Stage 3 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 48, 48});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 48, 48});
|
|
/********************** Stage 4 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 96});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 96});
|
|
/*********************** Conv 5 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 192, 1024});
|
|
}
|
|
|
|
// ShuffleNet v2 (1.0X scale).
|
|
static void ShuffleNetV2X10ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/********************** Stage 2 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 58});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 58});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 58, 58});
|
|
/********************** Stage 3 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 116, 116});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 116, 116});
|
|
/********************** Stage 4 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 232, 232});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 232, 232});
|
|
/*********************** Conv 5 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 464, 1024});
|
|
}
|
|
|
|
// ShuffleNet v2 (1.5X scale).
|
|
static void ShuffleNetV2X15ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/********************** Stage 2 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 88});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 88});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 88, 88});
|
|
/********************** Stage 3 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 176, 176});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 176, 176});
|
|
/********************** Stage 4 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 352, 352});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 352, 352});
|
|
/*********************** Conv 5 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 704, 1024});
|
|
}
|
|
|
|
// ShuffleNet v2 (2.0X scale).
|
|
static void ShuffleNetV2X20ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 24});
|
|
/********************** Stage 2 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 122});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 122});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 122, 122});
|
|
/********************** Stage 3 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 244, 244});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 244, 244});
|
|
/********************** Stage 4 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 488, 488});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 488, 488});
|
|
/*********************** Conv 5 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 976, 2048});
|
|
}
|
|
|
|
static void MobileNetV1ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 32});
|
|
b->Args({112, 112, 1, 1, 0, 0, 1, 1, 32, 64});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 128});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 128, 128});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 128, 256});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 256, 256});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 256, 512});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 512, 512});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 512, 1024});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 1024, 1024});
|
|
}
|
|
|
|
static void MobileNetV2ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 32});
|
|
|
|
/******************** Bottleneck 1 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({112, 112, 1, 1, 0, 0, 1, 1, 32, 16});
|
|
|
|
/******************** Bottleneck 2 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({112, 112, 1, 1, 0, 0, 1, 1, 16, 96});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 96, 24});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 144});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 144, 24});
|
|
|
|
/******************** Bottleneck 3 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 144});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 144, 32});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 32, 192});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 192, 32});
|
|
//b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 32, 192});
|
|
//b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 192, 32});
|
|
|
|
/******************** Bottleneck 4 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 32, 192});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 192, 64});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 64});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 64});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 64});
|
|
|
|
/******************** Bottleneck 5 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 64, 384});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 384, 96});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 576});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 576, 96});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 576});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 576, 96});
|
|
|
|
/******************** Bottleneck 6 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 576});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 160});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160});
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960});
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160});
|
|
|
|
/******************** Bottleneck 7 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 320});
|
|
|
|
/**************** Pre-pooling Conv2D *****************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 320, 1280});
|
|
/**************** Post-pooling Conv2D ****************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 1280, 1000});
|
|
}
|
|
|
|
static void MobileNetV3SmallConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/******************* Initial Stage *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 16});
|
|
/******************** Bottleneck 1 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 16, 8});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 8, 16});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 16, 16});
|
|
/******************** Bottleneck 2 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 16, 72});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 72, 24});
|
|
/******************** Bottleneck 3 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 88});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 88, 24});
|
|
/******************** Bottleneck 4 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 24, 96});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 96, 24});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 24, 96});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 96, 40});
|
|
/******************** Bottleneck 5 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 240});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 64});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 64, 240});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 240, 40});
|
|
/******************** Bottleneck 6 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 240});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 64});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 64, 240});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 240, 40});
|
|
/******************** Bottleneck 7 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 40, 120});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 32});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 32, 120});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 120, 48});
|
|
/******************** Bottleneck 8 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 48, 144});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 144, 40});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 40, 144});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 144, 48});
|
|
/******************** Bottleneck 9 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 48, 288});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 288, 72});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 72, 288});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 288, 96});
|
|
/******************* Bottleneck 10 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 576});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 576, 144});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 144, 576});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 96});
|
|
/******************* Bottleneck 11 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 576});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 576, 144});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 144, 576});
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 576, 96});
|
|
/********************* Last Stage ********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 96, 576});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 576, 1024});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 1024, 1001});
|
|
}
|
|
|
|
static void MobileNetV3LargeConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/******************* Initial Stage *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 16});
|
|
/******************** Bottleneck 1 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({112, 112, 1, 1, 0, 0, 1, 1, 16, 16});
|
|
/******************** Bottleneck 2 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({112, 112, 1, 1, 0, 0, 1, 1, 16, 64});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 24});
|
|
/******************** Bottleneck 3 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 72});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 72, 24});
|
|
/******************** Bottleneck 4 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 24, 72});*/
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 72, 24});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 24, 72});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 72, 40});
|
|
/******************** Bottleneck 5 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 40, 120});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 32});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 32, 120});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 120, 40});
|
|
/******************** Bottleneck 6 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 40, 120});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 32});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 32, 120});
|
|
//b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 120, 40});
|
|
/******************** Bottleneck 7 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 40, 240});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 240, 80});
|
|
/******************** Bottleneck 8 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 200});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 200, 80});
|
|
/******************** Bottleneck 9 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 184});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 184, 80});
|
|
/******************* Bottleneck 10 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 184});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 184, 80});
|
|
/******************* Bottleneck 11 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 80, 480});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 480, 120});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 120, 480});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 480, 112});
|
|
/******************* Bottleneck 12 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 112, 672});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 672, 168});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 168, 672});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 672, 112});
|
|
/******************* Bottleneck 13 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 112, 672});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 672, 160});
|
|
/******************* Bottleneck 14 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 960, 240});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 960});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160});
|
|
/******************* Bottleneck 15 *******************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 960, 240});
|
|
//b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 240, 960});
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 960, 160});
|
|
/******************** Last Stage *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 160, 960});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 960, 1280});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 1280, 1001});
|
|
}
|
|
|
|
// SqueezeNet 1.0
|
|
static void SqueezeNetV10ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 7, 7, 6, 6, 2, 1, 3, 96});
|
|
/*********************** Fire 2 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 96, 16});
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64});
|
|
b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64});
|
|
/*********************** Fire 3 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 55, 1, 1, 0, 0, 1, 1, 128, 16});
|
|
//b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64});
|
|
//b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64});
|
|
/*********************** Fire 4 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 128, 32});
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 32, 128});
|
|
b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 32, 128});
|
|
/*********************** Fire 5 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 256, 32});
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 32, 128});
|
|
b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 32, 128});
|
|
/*********************** Fire 6 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 256, 48});
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 48, 192});
|
|
b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 48, 192});
|
|
/*********************** Fire 7 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 384, 48});
|
|
//b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 48, 192});
|
|
//b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 48, 192});
|
|
/*********************** Fire 8 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 384, 64});
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 64, 256});
|
|
/*********************** Fire 9 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 64});
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 64, 256});
|
|
/********************** Conv 10 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 1000});
|
|
}
|
|
|
|
// SqueezeNet 1.1
|
|
static void SqueezeNetV11ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/*********************** Conv 1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 2, 1, 3, 64});
|
|
/*********************** Fire 2 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 64, 16});
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64});
|
|
b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64});
|
|
/*********************** Fire 3 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 128, 16});
|
|
//b->Args({ 55, 55, 1, 1, 0, 0, 1, 1, 16, 64});
|
|
//b->Args({ 55, 55, 3, 3, 2, 2, 1, 1, 16, 64});
|
|
/*********************** Fire 4 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 128, 32});
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 32, 128});
|
|
b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 32, 128});
|
|
/*********************** Fire 5 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 256, 32});
|
|
//b->Args({ 27, 27, 1, 1, 0, 0, 1, 1, 32, 128});
|
|
//b->Args({ 27, 27, 3, 3, 2, 2, 1, 1, 32, 128});
|
|
/*********************** Fire 6 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 256, 48});
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 48, 192});
|
|
b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 48, 192});
|
|
/*********************** Fire 7 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 384, 48});
|
|
//b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 48, 192});
|
|
//b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 48, 192});
|
|
/*********************** Fire 8 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 384, 64});
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 64, 256});
|
|
/*********************** Fire 9 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 64});
|
|
//b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
//b->Args({ 13, 13, 3, 3, 2, 2, 1, 1, 64, 256});
|
|
/********************** Conv 10 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 13, 13, 1, 1, 0, 0, 1, 1, 512, 1000});
|
|
}
|
|
|
|
static void InceptionV3ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({299, 299, 3, 3, 0, 0, 2, 1, 3, 32});
|
|
b->Args({149, 149, 3, 3, 0, 0, 1, 1, 32, 32});
|
|
b->Args({147, 147, 3, 3, 2, 2, 1, 1, 32, 64});
|
|
b->Args({ 73, 73, 1, 1, 0, 0, 1, 1, 64, 80});
|
|
b->Args({ 73, 73, 3, 3, 0, 0, 1, 1, 80, 192});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 192, 64});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 192, 48});
|
|
b->Args({ 35, 35, 5, 5, 4, 4, 1, 1, 48, 64});
|
|
b->Args({ 35, 35, 3, 3, 2, 2, 1, 1, 64, 96});
|
|
b->Args({ 35, 35, 3, 3, 2, 2, 1, 1, 96, 96});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 192, 32});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 256, 64});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 256, 48});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 288, 64});
|
|
b->Args({ 35, 35, 1, 1, 0, 0, 1, 1, 288, 48});
|
|
b->Args({ 35, 35, 3, 3, 0, 0, 2, 1, 288, 384});
|
|
b->Args({ 35, 35, 3, 3, 0, 0, 2, 1, 96, 96});
|
|
b->Args({ 17, 17, 1, 1, 0, 0, 1, 1, 768, 192});
|
|
b->Args({ 17, 17, 1, 1, 0, 0, 1, 1, 768, 128});
|
|
b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 128, 128});
|
|
b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 128, 192});
|
|
b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 128, 128});
|
|
b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 128, 192});
|
|
b->Args({ 17, 17, 1, 1, 0, 0, 1, 1, 768, 160});
|
|
b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 160, 160});
|
|
b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 160, 192});
|
|
b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 160, 160});
|
|
b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 160, 192});
|
|
b->Args({ 17, 17, 1, 7, 0, 6, 1, 1, 192, 192});
|
|
b->Args({ 17, 17, 7, 1, 6, 0, 1, 1, 192, 192});
|
|
b->Args({ 17, 17, 3, 3, 0, 0, 2, 1, 192, 320});
|
|
b->Args({ 17, 17, 3, 3, 0, 0, 2, 1, 192, 192});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 320});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 384});
|
|
b->Args({ 8, 8, 1, 3, 0, 2, 1, 1, 384, 384});
|
|
b->Args({ 8, 8, 3, 1, 2, 0, 1, 1, 384, 384});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 448});
|
|
b->Args({ 8, 8, 3, 3, 2, 2, 1, 1, 448, 384});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 1280, 192});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 320});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 384});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 448});
|
|
b->Args({ 8, 8, 1, 1, 0, 0, 1, 1, 2048, 192});
|
|
b->Args({ 1, 1, 1, 1, 0, 0, 1, 1, 2048, 1001});
|
|
}
|
|
|
|
static void ResNet18ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/********************** Conv 1 ***********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 7, 7, 6, 6, 2, 1, 3, 64});
|
|
/********************* Conv 2.X **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 64, 64});
|
|
/********************* Conv 3.X **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 3, 3, 2, 2, 2, 1, 64, 128});
|
|
b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 128, 128});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 2, 1, 64, 128});
|
|
/********************* Conv 4.X **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 3, 3, 2, 2, 2, 1, 128, 256});
|
|
b->Args({ 14, 14, 3, 3, 2, 2, 1, 1, 256, 256});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 2, 1, 128, 256});
|
|
/********************* Conv 5.X **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 3, 3, 2, 2, 2, 1, 256, 512});
|
|
b->Args({ 7, 7, 3, 3, 2, 2, 1, 1, 512, 512});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 2, 1, 256, 512});
|
|
}
|
|
|
|
static void ResNet50ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/********************** Conv 1 ***********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 7, 7, 6, 6, 2, 1, 3, 64});
|
|
/********************* Conv 2.1 **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 64});
|
|
b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 64, 64});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
//b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
/********************* Conv 2.X **********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 256, 64});
|
|
//b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 64, 64});
|
|
//b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 64, 256});
|
|
/********************** Conv 3.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 256, 128});
|
|
b->Args({ 56, 56, 3, 3, 2, 2, 2, 1, 128, 128});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 128, 512});
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 2, 1, 256, 512});
|
|
/********************** Conv 3.X *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 512, 128});
|
|
b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 128, 128});
|
|
//b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 128, 512});
|
|
/********************** Conv 4.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 512, 256});
|
|
b->Args({ 28, 28, 3, 3, 2, 2, 2, 1, 256, 256});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 256, 1024});
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 2, 1, 512, 1024});
|
|
/********************** Conv 4.X *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 1024, 256});
|
|
b->Args({ 14, 14, 3, 3, 2, 2, 1, 1, 256, 256});
|
|
//b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 256, 1024});
|
|
/********************** Conv 5.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 1024, 512});
|
|
b->Args({ 14, 14, 3, 3, 2, 2, 2, 1, 512, 512});
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 512, 2048});
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 2, 1, 1024, 2048});
|
|
/********************** Conv 5.X *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 2048, 512});
|
|
b->Args({ 7, 7, 3, 3, 2, 2, 1, 1, 512, 512});
|
|
//b->Args({ 7, 7, 1, 1, 0, 0, 1, 1, 512, 2048});
|
|
}
|
|
|
|
static void VGGConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/********************** Conv 1.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 1, 1, 3, 64});
|
|
/********************** Conv 1.2 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({224, 224, 3, 3, 2, 2, 1, 1, 64, 64});
|
|
|
|
/********************** Conv 2.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({112, 112, 3, 3, 2, 2, 1, 1, 64, 128});
|
|
/********************** Conv 2.2 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({112, 112, 3, 3, 2, 2, 1, 1, 128, 128});
|
|
|
|
/********************** Conv 3.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 128, 256});
|
|
/********************** Conv 3.2 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 3, 3, 2, 2, 1, 1, 256, 256});
|
|
/********************** Conv 3.3 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 56, 56, 1, 1, 0, 0, 1, 1, 256, 256});
|
|
|
|
/********************** Conv 4.1 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 256, 512});
|
|
/********************** Conv 4.2 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 3, 3, 2, 2, 1, 1, 512, 512});
|
|
/********************** Conv 4.3 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 28, 28, 1, 1, 0, 0, 1, 1, 512, 512});
|
|
|
|
/********************** Conv 5.X *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 3, 3, 2, 2, 1, 1, 512, 512});
|
|
/********************** Conv 5.3 *********************/
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({ 14, 14, 1, 1, 0, 0, 1, 1, 512, 512});
|
|
}
|
|
|
|
// SRCNN (9-1-5)
|
|
static void SRCNN915ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({384, 384, 9, 9, 0, 0, 1, 1, 1, 64});
|
|
b->Args({376, 376, 1, 1, 0, 0, 1, 1, 64, 32});
|
|
b->Args({376, 376, 5, 5, 0, 0, 1, 1, 32, 1});
|
|
}
|
|
|
|
// SRCNN (9-3-5)
|
|
static void SRCNN935ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({384, 384, 9, 9, 0, 0, 1, 1, 1, 64});
|
|
b->Args({376, 376, 3, 3, 0, 0, 1, 1, 64, 32});
|
|
b->Args({374, 374, 5, 5, 0, 0, 1, 1, 32, 1});
|
|
}
|
|
|
|
// SRCNN (9-5-5)
|
|
static void SRCNN955ConvArguments(benchmark::internal::Benchmark* b) {
|
|
b->ArgNames({"H", "W", "KH", "KW", "PH", "PW", "S", "D", "GCin", "GCout"});
|
|
|
|
/* H W KH KW PH PW S D GCin GCout */
|
|
b->Args({384, 384, 9, 9, 0, 0, 1, 1, 1, 64});
|
|
b->Args({376, 376, 5, 5, 0, 0, 1, 1, 64, 32});
|
|
b->Args({372, 372, 5, 5, 0, 0, 1, 1, 32, 1});
|
|
}
|