diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2018-07-31 14:35:20 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-07-31 14:39:10 -0700 |
commit | 566a0a2dc720685d130ce626131dc66e1651007b (patch) | |
tree | cf2721a8ffbc013163fa32b56eed00d2aeb42458 /tensorflow/core/kernels/crop_and_resize_op_benchmark_test.cc | |
parent | 218ddcaa2da9fa041c297146e3aad1af46542481 (diff) |
Benchmark crop and resize op.
PiperOrigin-RevId: 206829040
Diffstat (limited to 'tensorflow/core/kernels/crop_and_resize_op_benchmark_test.cc')
-rw-r--r-- | tensorflow/core/kernels/crop_and_resize_op_benchmark_test.cc | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tensorflow/core/kernels/crop_and_resize_op_benchmark_test.cc b/tensorflow/core/kernels/crop_and_resize_op_benchmark_test.cc new file mode 100644 index 0000000000..d7ca64bea0 --- /dev/null +++ b/tensorflow/core/kernels/crop_and_resize_op_benchmark_test.cc @@ -0,0 +1,72 @@ +/* Copyright 2015 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "tensorflow/core/common_runtime/kernel_benchmark_testlib.h" +#include "tensorflow/core/framework/tensor.h" +#include "tensorflow/core/graph/node_builder.h" +#include "tensorflow/core/platform/test.h" +#include "tensorflow/core/platform/test_benchmark.h" + +namespace tensorflow { + +static Graph* BM_CropAndResize(int batches, int width, int height, int depth, + int crop_height, int crop_width) { + Graph* g = new Graph(OpRegistry::Global()); + Tensor in(DT_FLOAT, TensorShape({batches, height, width, depth})); + in.flat<float>().setRandom(); + Tensor boxes(DT_FLOAT, TensorShape({batches, 4})); + auto boxes_tensor = boxes.matrix<float>(); + Tensor box_ind(DT_INT32, TensorShape({batches})); + auto box_ind_flat = box_ind.flat<int32>(); + for (int i = 0; i < batches; ++i) { + boxes_tensor(i, 0) = 0.2; + boxes_tensor(i, 1) = 0.2; + boxes_tensor(i, 2) = 0.8; + boxes_tensor(i, 3) = 0.7; + box_ind_flat(i) = i; + } + Tensor crop_size(DT_INT32, TensorShape({2})); + auto crop_size_flat = crop_size.flat<int32>(); + crop_size_flat(0) = crop_height; + crop_size_flat(1) = crop_width; + Node* ret; + TF_CHECK_OK(NodeBuilder(g->NewName("n"), "CropAndResize") + .Input(test::graph::Constant(g, in)) + .Input(test::graph::Constant(g, boxes)) + .Input(test::graph::Constant(g, box_ind)) + .Input(test::graph::Constant(g, crop_size)) + .Finalize(g, &ret)); + return g; +} + +#define BM_CropAndResizeDev(DEVICE, B, W, H, D, CH, CW) \ + static void BM_CropAndResize_##DEVICE##_##B##_##W##_##H##_##D##_##CH##_##CW( \ + int iters) { \ + testing::ItemsProcessed(iters* B* W* H* D); \ + test::Benchmark(#DEVICE, BM_CropAndResize(B, W, H, D, CH, CW)).Run(iters); \ + } \ + BENCHMARK(BM_CropAndResize_##DEVICE##_##B##_##W##_##H##_##D##_##CH##_##CW); + +// Benchmark results using CPU:Intel Haswell with HyperThreading (6 cores) +// Benchmark Time(ns) CPU(ns) Iterations +// BM_CropAndResize_cpu_1_640_640_3_512_512 7078765 7173520 100 163.361M items/s +// BM_CropAndResize_cpu_1_640_640_1_512_512 3801232 3914692 185 99.784M items/s +// BM_CropAndResize_cpu_1_80_80_512_7_7 182470 241767 2941 1.372G items/s + +BM_CropAndResizeDev(cpu, 1, 640, 640, 3, 512, 512); +BM_CropAndResizeDev(cpu, 1, 640, 640, 1, 512, 512); +BM_CropAndResizeDev(cpu, 1, 80, 80, 512, 7, 7); + +} // namespace tensorflow |