diff options
author | Chris Dalton <csmartdalton@google.com> | 2017-10-20 09:58:32 -0600 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-20 17:52:36 +0000 |
commit | 34d9055c103b6424cfaa2c7a3c1a1630a58e375e (patch) | |
tree | 2267ec878c1c12bcb3b13802849909de11eae36b /tools/skpbench/skpbench.py | |
parent | 328a33fc7abd9b6de99409a9b6e44c5c372609d5 (diff) |
skpbench: support pixel phone
Adds a script for pixel hardware with conservatively low clocks.
Bug: skia:
Change-Id: I1ade703ab9f0b4aefc9cf630e3d2efb996afd69f
Reviewed-on: https://skia-review.googlesource.com/62343
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Diffstat (limited to 'tools/skpbench/skpbench.py')
-rwxr-xr-x | tools/skpbench/skpbench.py | 91 |
1 files changed, 50 insertions, 41 deletions
diff --git a/tools/skpbench/skpbench.py b/tools/skpbench/skpbench.py index e9c7ec0f60..b8bae74660 100755 --- a/tools/skpbench/skpbench.py +++ b/tools/skpbench/skpbench.py @@ -243,45 +243,53 @@ def emit_result(line, resultsfile=None): resultsfile.flush() def run_benchmarks(configs, skps, hardware, resultsfile=None): - emit_result(SKPBench.get_header(), resultsfile) + hasheader = False benches = collections.deque([(skp, config, FLAGS.max_stddev) for skp in skps for config in configs]) while benches: - benchargs = benches.popleft() - with SKPBench(*benchargs) as skpbench: - try: - skpbench.execute(hardware) - if skpbench.best_result: - emit_result(skpbench.best_result.format(FLAGS.suffix), resultsfile) - else: - print("WARNING: no result for %s with config %s" % - (skpbench.skp, skpbench.config), file=sys.stderr) - - except StddevException: - retry_max_stddev = skpbench.max_stddev * math.sqrt(2) - if FLAGS.verbosity >= 1: - print("stddev is too high for %s/%s (%s%%, max=%.2f%%), " - "re-queuing with max=%.2f%%." % - (skpbench.best_result.config, skpbench.best_result.bench, - skpbench.best_result.stddev, skpbench.max_stddev, - retry_max_stddev), - file=sys.stderr) - benches.append((skpbench.skp, skpbench.config, retry_max_stddev, - skpbench.best_result)) - - except HardwareException as exception: - skpbench.terminate() - if FLAGS.verbosity >= 4: - hardware.print_debug_diagnostics() - if FLAGS.verbosity >= 1: - print("%s; taking a %i second nap..." % - (exception.message, exception.sleeptime), file=sys.stderr) - benches.appendleft(benchargs) # retry the same bench next time. - hardware.sleep(exception.sleeptime) - if FLAGS.verbosity >= 4: - hardware.print_debug_diagnostics() + try: + with hardware: SKPBench.run_warmup(hardware.warmup_time, configs[0]) + if not hasheader: + emit_result(SKPBench.get_header(), resultsfile) + hasheader = True + while benches: + benchargs = benches.popleft() + with SKPBench(*benchargs) as skpbench: + try: + skpbench.execute(hardware) + if skpbench.best_result: + emit_result(skpbench.best_result.format(FLAGS.suffix), + resultsfile) + else: + print("WARNING: no result for %s with config %s" % + (skpbench.skp, skpbench.config), file=sys.stderr) + + except StddevException: + retry_max_stddev = skpbench.max_stddev * math.sqrt(2) + if FLAGS.verbosity >= 1: + print("stddev is too high for %s/%s (%s%%, max=%.2f%%), " + "re-queuing with max=%.2f%%." % + (skpbench.best_result.config, skpbench.best_result.bench, + skpbench.best_result.stddev, skpbench.max_stddev, + retry_max_stddev), + file=sys.stderr) + benches.append((skpbench.skp, skpbench.config, retry_max_stddev, + skpbench.best_result)) + + except HardwareException as exception: + skpbench.terminate() + if FLAGS.verbosity >= 4: + hardware.print_debug_diagnostics() + if FLAGS.verbosity >= 1: + print("%s; exiting benchmark mode to take a %i second nap..." % + (exception.message, exception.sleeptime), file=sys.stderr) + benches.appendleft(benchargs) # retry the same bench next time. + raise # wake hw up from benchmarking mode before the nap. + + except HardwareException as exception: + time.sleep(exception.sleeptime) def main(): # Delimiter is ',' or ' ', skip if nested inside parens (e.g. gpu(a=b,c=d)). @@ -296,6 +304,9 @@ def main(): if model == 'Pixel C': from _hardware_pixel_c import HardwarePixelC hardware = HardwarePixelC(adb) + elif model == 'Pixel': + from _hardware_pixel import HardwarePixel + hardware = HardwarePixel(adb) elif model == 'Nexus 6P': from _hardware_nexus_6p import HardwareNexus6P hardware = HardwareNexus6P(adb) @@ -307,13 +318,11 @@ def main(): else: hardware = Hardware() - with hardware: - SKPBench.run_warmup(hardware.warmup_time, configs[0]) - if FLAGS.resultsfile: - with open(FLAGS.resultsfile, mode='a+') as resultsfile: - run_benchmarks(configs, skps, hardware, resultsfile=resultsfile) - else: - run_benchmarks(configs, skps, hardware) + if FLAGS.resultsfile: + with open(FLAGS.resultsfile, mode='a+') as resultsfile: + run_benchmarks(configs, skps, hardware, resultsfile=resultsfile) + else: + run_benchmarks(configs, skps, hardware) if __name__ == '__main__': |