From 8da96e9b52cb0a1acdf84088149afbccd3962954 Mon Sep 17 00:00:00 2001 From: Derek Murray <mrry@google.com> Date: Tue, 3 Mar 2020 10:36:55 -0800 Subject: [PATCH] [Slice] Reduce variance in benchmark. This change switches the various Slice benchmarks to run using tf.data's single-threaded executor. This eliminates noise from thread scheduling, which is often larger than the actual execution time for some of the benchmarks. PiperOrigin-RevId: 298638978 Change-Id: Id9472df0eea4a2ec56a3b88154b8069e92bc11dc --- tensorflow/core/kernels/BUILD | 1 + tensorflow/core/kernels/slice_op_test.cc | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tensorflow/core/kernels/BUILD b/tensorflow/core/kernels/BUILD index b3aa9278c92..6783d948052 100644 --- a/tensorflow/core/kernels/BUILD +++ b/tensorflow/core/kernels/BUILD @@ -2280,6 +2280,7 @@ tf_cc_test( "//tensorflow/core:test", "//tensorflow/core:test_main", "//tensorflow/core:testlib", + "//tensorflow/core/kernels/data:single_threaded_executor", ], ) diff --git a/tensorflow/core/kernels/slice_op_test.cc b/tensorflow/core/kernels/slice_op_test.cc index 2ddc3e9220f..f589a09c4fc 100644 --- a/tensorflow/core/kernels/slice_op_test.cc +++ b/tensorflow/core/kernels/slice_op_test.cc @@ -22,6 +22,7 @@ limitations under the License. #include "tensorflow/core/framework/tensor.h" #include "tensorflow/core/framework/types.h" #include "tensorflow/core/framework/types.pb.h" +#include "tensorflow/core/graph/algorithm.h" #include "tensorflow/core/graph/node_builder.h" #include "tensorflow/core/graph/testlib.h" #include "tensorflow/core/kernels/ops_testutil.h" @@ -62,10 +63,14 @@ static void SliceHelper(int iters, int size) { .Input(test::graph::Constant(g, sizes)) .Attr("T", dt) .Finalize(g, &node)); + FixupSourceAndSinkEdges(g); testing::BytesProcessed(static_cast<int64>(iters) * kDim * size * sizeof(T)); testing::StartTiming(); - test::Benchmark("cpu", g).Run(iters); + test::Benchmark("cpu", g, nullptr, nullptr, nullptr, + "SINGLE_THREADED_EXECUTOR") + .Run(iters); + testing::UseRealTime(); }