From 5ba7276118a458c0caf377d34d0c82b58db607bc Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 13 Dec 2020 19:08:49 -0800 Subject: [PATCH] model timing benchmark script --- selfdrive/modeld/test/timing/benchmark.py | 36 +++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 selfdrive/modeld/test/timing/benchmark.py diff --git a/selfdrive/modeld/test/timing/benchmark.py b/selfdrive/modeld/test/timing/benchmark.py new file mode 100755 index 0000000000..88ab0e76a3 --- /dev/null +++ b/selfdrive/modeld/test/timing/benchmark.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +import os +import time +import numpy as np +import cereal.messaging as messaging +import selfdrive.manager as manager + + +N = int(os.getenv("N", "5")) +TIME = int(os.getenv("TIME", "30")) + +if __name__ == "__main__": + sock = messaging.sub_sock('modelV2', conflate=False, timeout=1000) + + execution_times = [] + + for _ in range(N): + os.environ['LOGPRINT'] = 'debug' + manager.start_managed_process('modeld') + time.sleep(5) + + t = [] + start = time.monotonic() + while time.monotonic() - start < TIME: + msgs = messaging.drain_sock(sock, wait_for_one=True) + for m in msgs: + t.append(m.modelV2.modelExecutionTime) + + execution_times.append(np.array(t[10:]) * 1000) + manager.kill_managed_process('modeld') + + print("\n\n") + print(f"ran modeld {N} times for {TIME}s each") + for n, t in enumerate(execution_times): + print(f"\tavg: {sum(t)/len(t):0.2f}ms, min: {min(t):0.2f}ms, max: {max(t):0.2f}ms") + print("\n\n")