aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/kernels/adjust_contrast_op_benchmark_test.cc
blob: 75b177cf4d9a0bf5efd34467e47e76edb0df17f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "tensorflow/core/public/tensor.h"
#include <gtest/gtest.h>
#include "tensorflow/core/common_runtime/kernel_benchmark_testlib.h"
#include "tensorflow/core/graph/node_builder.h"
#include "tensorflow/core/platform/test_benchmark.h"

namespace tensorflow {

static Graph* BM_AdjustContrast(int batches, int width, int height) {
  Graph* g = new Graph(OpRegistry::Global());
  Tensor in(DT_UINT8, TensorShape({batches, width, height, 3}));
  in.flat<uint8>().setRandom();
  Tensor factor(DT_FLOAT, TensorShape({}));
  factor.flat<float>().setConstant(1.2);
  Tensor min_value(DT_FLOAT, TensorShape({}));
  min_value.flat<float>().setConstant(7.);
  Tensor max_value(DT_FLOAT, TensorShape({}));
  max_value.flat<float>().setConstant(250.);

  Node* ret;
  NodeBuilder(g->NewName("n"), "AdjustContrast")
      .Input(test::graph::Constant(g, in))
      .Input(test::graph::Constant(g, factor))
      .Input(test::graph::Constant(g, min_value))
      .Input(test::graph::Constant(g, max_value))
      .Finalize(g, &ret);
  return g;
}

#define BM_AdjustContrastDev(DEVICE, B, W, H)                           \
  static void BM_AdjustContrast_##DEVICE##_##B##_##W##_##H(int iters) { \
    testing::ItemsProcessed(iters* B* W* H * 3);                        \
    test::Benchmark(#DEVICE, BM_AdjustContrast(B, W, H)).Run(iters);    \
  }                                                                     \
  BENCHMARK(BM_AdjustContrast_##DEVICE##_##B##_##W##_##H);

// Benchmark results as of cl/106323955
// BM_AdjustContrast_cpu_1_299_299  3416770  22008951  100  11.6M items/s

// BM_AdjustContrast_gpu_32_299_299  37117844  45512374  100  179.8M items/s
BM_AdjustContrastDev(cpu, 1, 299, 299) BM_AdjustContrastDev(gpu, 32, 299, 299)

}  // namespace tensorflow