From 3b9cec6634b02f2808f9f0383b51e643602013e3 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 14 Jul 2020 16:59:14 +0200 Subject: Add --no-cache option --- bin/analyze-archive.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'bin/analyze-archive.py') diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index c531bb6..3075e3d 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -101,6 +101,9 @@ Options: --export-energymodel= Export energy model. Works out of the box for v1 and v2 logfiles. Requires --hwmodel for v0 logfiles. + +--no-cache + Do not load cached measurement results """ import getopt @@ -300,7 +303,7 @@ if __name__ == "__main__": try: optspec = ( - "info " + "info no-cache " "plot-unparam= plot-param= plot-traces= show-models= show-quality= " "ignored-trace-indexes= function-override= " "export-traces= " @@ -362,7 +365,9 @@ if __name__ == "__main__": sys.exit(2) raw_data = RawData( - args, with_traces=("export-traces" in opt or "plot-traces" in opt) + args, + with_traces=("export-traces" in opt or "plot-traces" in opt), + skip_cache=("no-cache" in opt), ) if "info" in opt: -- cgit v1.2.3 From 65f480ab43ff9767f16a0d2941d81d0b4bf02f48 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 15 Jul 2020 11:10:33 +0200 Subject: analyze-archive: Add header to model quality table --- bin/analyze-archive.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'bin/analyze-archive.py') diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index 3075e3d..aa1ca07 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -145,6 +145,15 @@ def format_quality_measures(result): def model_quality_table(result_lists, info_list): + print( + "{:20s} {:15s} {:19s} {:19s} {:19s}".format( + "key", + "attribute", + "static".center(19), + "LUT".center(19), + "parameterized".center(19), + ) + ) for state_or_tran in result_lists[0]["by_name"].keys(): for key in result_lists[0]["by_name"][state_or_tran].keys(): buf = "{:20s} {:15s}".format(state_or_tran, key) @@ -155,7 +164,7 @@ def model_quality_table(result_lists, info_list): result = results["by_name"][state_or_tran][key] buf += format_quality_measures(result) else: - buf += "{:6}----{:9}".format("", "") + buf += "{:7}----{:8}".format("", "") print(buf) -- cgit v1.2.3 From af4cc108b5c5132a991a2b83d258ed55e985936f Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 16 Jul 2020 16:13:47 +0200 Subject: analyze-archive: fix --show-quality=overall for non-nrf24 measurements --- bin/analyze-archive.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'bin/analyze-archive.py') diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index aa1ca07..8311f5c 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -704,7 +704,7 @@ if __name__ == "__main__": ) if "overall" in show_quality or "all" in show_quality: - print("overall static/param/lut MAE assuming equal state distribution:") + print("overall state static/param/lut MAE assuming equal state distribution:") print( " {:6.1f} / {:6.1f} / {:6.1f} µW".format( model.assess_states(static_model), @@ -712,15 +712,30 @@ if __name__ == "__main__": model.assess_states(lut_model), ) ) - print("overall static/param/lut MAE assuming 95% STANDBY1:") - distrib = {"STANDBY1": 0.95, "POWERDOWN": 0.03, "TX": 0.01, "RX": 0.01} - print( - " {:6.1f} / {:6.1f} / {:6.1f} µW".format( - model.assess_states(static_model, distribution=distrib), - model.assess_states(param_model, distribution=distrib), - model.assess_states(lut_model, distribution=distrib), + distrib = dict() + num_states = len(model.states()) + p95_state = None + for state in model.states(): + distrib[state] = 1.0 / num_states + + if "STANDBY1" in model.states(): + p95_state = "STANDBY1" + elif "SLEEP" in model.states(): + p95_state = "SLEEP" + + if p95_state is not None: + for state in distrib.keys(): + distrib[state] = 0.05 / (num_states - 1) + distrib[p95_state] = 0.95 + + print(f"overall state static/param/lut MAE assuming 95% {p95_state}:") + print( + " {:6.1f} / {:6.1f} / {:6.1f} µW".format( + model.assess_states(static_model, distribution=distrib), + model.assess_states(param_model, distribution=distrib), + model.assess_states(lut_model, distribution=distrib), + ) ) - ) if "summary" in show_quality or "all" in show_quality: model_summary_table( -- cgit v1.2.3 From f519d3c9500e4b5a56f8400f18e97dcc70a8718c Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 17 Jul 2020 15:42:58 +0200 Subject: Bugfixes in edge cases --- bin/analyze-archive.py | 4 ++-- lib/loader.py | 2 +- lib/runner.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'bin/analyze-archive.py') diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index 8311f5c..aa266ed 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -150,8 +150,8 @@ def model_quality_table(result_lists, info_list): "key", "attribute", "static".center(19), - "LUT".center(19), "parameterized".center(19), + "LUT".center(19), ) ) for state_or_tran in result_lists[0]["by_name"].keys(): @@ -434,7 +434,7 @@ if __name__ == "__main__": ) sys.exit(2) - if len(traces) > 20: + if len(traces) > 40: print(f"""Truncating plot to 40 of {len(traces)} traces (random sample)""") traces = random.sample(traces, 40) diff --git a/lib/loader.py b/lib/loader.py index 4e07c92..57b3d30 100644 --- a/lib/loader.py +++ b/lib/loader.py @@ -481,7 +481,7 @@ class RawData: if sorted(online_trace_part["parameter"].keys()) != self._parameter_names: processed_data[ "error" - ] = "Offline #{off_idx:d} (online {on_name:s} @ {on_idx:d}/{on_sub:d}) has inconsistent parameter set: should be {param_want:s}, is {param_is:s}".format( + ] = "Offline #{off_idx:d} (online {on_name:s} @ {on_idx:d}/{on_sub:d}) has inconsistent parameter set: should be {param_want}, is {param_is}".format( off_idx=offline_idx, on_idx=online_run_idx, on_sub=online_trace_part_idx, diff --git a/lib/runner.py b/lib/runner.py index 77b7c68..96569a8 100644 --- a/lib/runner.py +++ b/lib/runner.py @@ -419,7 +419,7 @@ def sleep_ms(duration: int, arch: str, cpu_freq: int = None) -> str: if tail_sleep > 0: ret += f"arch.sleep_ms({tail_sleep});\n" return ret - return "arch.sleep_ms({duration});\n" + return f"arch.sleep_ms({duration});\n" def get_counter_limits_us(arch: str) -> tuple: -- cgit v1.2.3 From ab33810fa92f8a262695077ae9504c836cd3c1a2 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 20 Aug 2020 09:19:38 +0200 Subject: analyze-archive: print options used to create measurements --- bin/analyze-archive.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'bin/analyze-archive.py') diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index aa266ed..65d80b3 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -381,6 +381,11 @@ if __name__ == "__main__": if "info" in opt: print(" ".join(raw_data.filenames) + ":") + if raw_data.ptalog: + options = " --".join( + map(lambda kv: f"{kv[0]}={str(kv[1])}", raw_data.ptalog["opt"].items()) + ) + print(f" Options: --{options}") if raw_data.version <= 1: data_source = "MIMOSA" elif raw_data.version == 2: -- cgit v1.2.3