From 1d4032d8d64b8936fefcbabf8938aceabbe51bec Mon Sep 17 00:00:00 2001 From: Lin Yuan Date: Tue, 24 Sep 2019 10:50:01 -0700 Subject: [PATCH] set fixed seed for profiler (#16155) * set fix seed for profiler * update README with profiler option * fix wording --- benchmark/opperf/README.md | 18 +++++++++++++++++- benchmark/opperf/utils/benchmark_utils.py | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/benchmark/opperf/README.md b/benchmark/opperf/README.md index 6e628dfe40a8..ef7747cf4483 100644 --- a/benchmark/opperf/README.md +++ b/benchmark/opperf/README.md @@ -129,7 +129,7 @@ Output for the above benchmark run, on a CPU machine, would look something like ``` -## Usecase 3.1 - Run benchmarks for group of operators with same input +## Usecase 4 - Run benchmarks for group of operators with same input For example, you want to run benchmarks for `nd.add`, `nd.sub` operator in MXNet, with the same set of inputs. You just run the following python script. ``` @@ -173,6 +173,22 @@ This utility queries MXNet operator registry to fetch all operators registered w However, fully automated tests are enabled only for simpler operators such as - broadcast operators, element_wise operators etc... For the purpose of readability and giving more control to the users, complex operators such as convolution (2D, 3D), Pooling, Recurrent are not fully automated but expressed as default rules. See `utils/op_registry_utils.py` for more details. +## Use python timer +Optionally, you could use the python time package as the profiler engine to caliberate runtime in each operator. +To use python timer for all operators, use the argument --profiler 'python': +``` +python incubator-mxnet/benchmark/opperf/opperf.py --profiler='python' +``` + +To use python timer for a specific operator, pass the argument profiler to the run_performance_test method: +``` +add_res = run_performance_test([nd.add, nd.subtract], run_backward=True, dtype='float32', ctx=mx.cpu(), + inputs=[{"lhs": (1024, 1024), + "rhs": (1024, 1024)}], + warmup=10, runs=25, profiler='python') +``` +By default, MXNet profiler is used as the profiler engine. + # TODO All contributions are welcome. Below is the list of desired features: diff --git a/benchmark/opperf/utils/benchmark_utils.py b/benchmark/opperf/utils/benchmark_utils.py index a6ee38bf9f65..5db6b0b5ea83 100644 --- a/benchmark/opperf/utils/benchmark_utils.py +++ b/benchmark/opperf/utils/benchmark_utils.py @@ -28,6 +28,7 @@ def _prepare_op_inputs(inputs, run_backward, dtype, ctx): + mx.random.seed(41) kwargs_list = [] args_list = []