From f22c79c4c1d934a017090c78a628acaa4fdfbfaa Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Fri, 4 Sep 2026 20:55:40 -0400 Subject: [PATCH 01/14] Pulse P3.5 around each capacitor wait for recharge-time measurement --- passes/runtime/vcc_wait.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/passes/runtime/vcc_wait.c b/passes/runtime/vcc_wait.c index 87cd9051..fc04cb2e 100644 --- a/passes/runtime/vcc_wait.c +++ b/passes/runtime/vcc_wait.c @@ -14,6 +14,15 @@ * ~150 uA combined, which would fight the capacitor's charging current), * so the sleeping board draws only LPM3-level current (~1 uA). * + * Each wait is bracketed by a pulse on P3.5 for the Saleae (channel 1, + * see docs/intermittent.md): one right before the sleep loop and one + * right after it, so the host can sum the recharge time out of the + * end-to-end measurement. The exit pulse is a few cycles wider than the + * enter pulse, which is how the host tells them apart. Each pulse is a + * handful of cycles in front of a >=10 ms sleep, and a boundary that + * does not wait never touches the pin. hw_init (boot_common.inc) has + * already driven every port output-low, so no pin setup is needed. + * * Called from the .crt_0010 boot path BEFORE data/BSS initialization, * so this file must not use .data/.bss variables; cnt_wait lives in the * .nvm section, which is programmed at flash time and never touched by @@ -41,6 +50,19 @@ __attribute__((section(".nvm"))) uint32_t cnt_wait = 0; /* Sample period in VLO (~9.4 kHz) ticks: ~10 ms. */ #define SAMPLE_PERIOD_TICKS 94 +#define WAIT_PIN BIT5 + +static inline void pulse_wait_enter(void) { + P3OUT |= WAIT_PIN; + P3OUT &= ~WAIT_PIN; +} + +static inline void pulse_wait_exit(void) { + P3OUT |= WAIT_PIN; + __asm__ volatile("nop\n\tnop\n\tnop\n\tnop"); + P3OUT &= ~WAIT_PIN; +} + /* Power up REF + ADC, take one battery-monitor sample, power both down. The ~75 us reference settling cost per sample is negligible against the 10 ms sample period. Long sample time (256 clocks) accommodates @@ -84,6 +106,7 @@ void wait_until_vcc_full(void) { samples read far below the threshold and VCC only rises while waiting, so early inaccuracy is harmless. */ if (sample_avcc_half() < VCC_FULL_ADC_COUNTS) { + pulse_wait_enter(); cnt_wait++; TA0CCR0 = SAMPLE_PERIOD_TICKS; TA0CCTL0 = CCIE; @@ -97,6 +120,7 @@ void wait_until_vcc_full(void) { TA0CTL = MC__STOP; TA0CCTL0 = 0; TA0CTL |= TACLR; + pulse_wait_exit(); } } From 8309739cb930c76869f5fa7da0649878b821a650 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Fri, 4 Sep 2026 20:55:59 -0400 Subject: [PATCH 02/14] Document the P3.5 wait pulses and Saleae channel 1 --- docs/intermittent.md | 26 +++++++++++++++++++++----- docs/saleae.md | 2 ++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/docs/intermittent.md b/docs/intermittent.md index 81f6e225..8be80745 100644 --- a/docs/intermittent.md +++ b/docs/intermittent.md @@ -26,9 +26,11 @@ of truth for this measurement setup's wiring and software. supply rail (anode toward the Otii, cathode at the board). It blocks back-feed into the Otii output while the ez-FET's 3V3 powers the board for flashing and readback. -- **Saleae Logic** — wired to P3.4 as in [saleae.md](saleae.md). It captures - the benchmark start/stop pulses during the replay: completion detection - and execution time both come from this capture. +- **Saleae Logic** — channel 0 wired to P3.4 as in [saleae.md](saleae.md), + channel 1 to P3.5. Channel 0 captures the benchmark start/stop pulses + during the replay: completion detection and execution time both come + from this capture. Channel 1 captures the wait pulses (below) that split + the recharge time out of it. ## Wiring Diagram @@ -65,7 +67,7 @@ flowchart LR gpo2 -->|relay control| SB ezfet <-->|"J101 ez-FET side: 3V3, RST, TEST"| relay relay <-->|"J101 target side: 3V3, RST, TEST"| mcu - mcu -->|P3.4 pulse| saleae + mcu -->|P3.4 / P3.5 pulses| saleae ``` ## Connections @@ -82,6 +84,7 @@ flowchart LR | LaunchPad `GND` jumper (J101) | — | Left mounted: ground stays common at all times, not routed through the switchboard | | Host USB | ez-FET USB connector | Direct — the switchboard's USB interface is not used | | Saleae digital channel 0 | MSP430 `P3.4` | Start/stop pulses: completion detection + execution time | +| Saleae digital channel 1 | MSP430 `P3.5` | Wait enter/exit pulses: recharge time | | Saleae GND | Board GND | | On the LaunchPad's J101 isolation block, only the `GND` jumper stays mounted. @@ -130,9 +133,22 @@ For each (benchmark, capacitor, trace): early; no trigger by the end of the trace means `status=incomplete`. Execution time is the first start-pulse falling edge to the stop-pulse rising edge, outages included. + + Every boundary or boot that finds the capacitor below the threshold + pulses P3.5 right before it sleeps and right after it wakes + (`passes/runtime/vcc_wait.c`): the enter pulse is one port write pair, + the exit pulse the same with four `nop`s in between, so the host tells + them apart by width (about 5 vs 9 CPU cycles high). The recharge time + of a run is the sum of enter-to-exit spans inside the execution-time + window. A wait cut short by a brownout has no exit pulse; the recovery + boot waits again, so its enter pulse follows directly and the span runs + on to that wait's exit, counting the outage and reboot as power-off + time. Pulses that coincide with a channel-0 pulse are the cold power-up + glitch (every floating pin follows the rising rail) and are dropped. 4. **Readback** — main off, relays closed again, NVM read via `mspdebug` (`__nvm_done`, `__nvm_violation`, `cnt_wait` — boundaries/boots that found - the capacitor below the threshold and slept — `cnt_recovery`, and with + the capacitor below the threshold and slept, checked against the pulse + count — `cnt_recovery`, and with `--device-debug` — off by default, its counter updates and UART cost energy — also `cnt_boundary` and the result). Completed and violated runs park at boot, so their NVM state survives the reconnect. diff --git a/docs/saleae.md b/docs/saleae.md index c5a70597..ed686f44 100644 --- a/docs/saleae.md +++ b/docs/saleae.md @@ -10,6 +10,8 @@ is the single source of truth for the hardware wiring and software setup. - Wire MSP430FR5994 **P3.4** to Saleae **digital channel 0**, and connect ground between the board and the analyzer. - The channel is sampled at 100 MHz. +- `ckpt intermittent` additionally uses **P3.5** on **digital channel 1** + for the wait pulses; see [intermittent.md](intermittent.md). ## Software From 2f78d1e47245db4ddaeed5050d56bf99a406c492 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Fri, 4 Sep 2026 20:59:04 -0400 Subject: [PATCH 03/14] Extract recharge wait time from the Saleae wait channel in intermittent runs --- scripts/ckpt/device/saleae.py | 212 ++++++++++++++++++++++------ scripts/ckpt/intermittent/runner.py | 52 +++++-- tests/test_intermittent.py | 74 +++++++++- 3 files changed, 282 insertions(+), 56 deletions(-) diff --git a/scripts/ckpt/device/saleae.py b/scripts/ckpt/device/saleae.py index c9531926..894689fe 100644 --- a/scripts/ckpt/device/saleae.py +++ b/scripts/ckpt/device/saleae.py @@ -15,6 +15,7 @@ import time from collections.abc import Iterator from contextlib import contextmanager +from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING @@ -31,6 +32,8 @@ from saleae.automation import Capture, Manager _SALEAE_CHANNEL = 0 +# Wait enter/exit pulses from vcc_wait.c under intermittent power. +_WAIT_CHANNEL = 1 _SALEAE_SAMPLE_RATE = 100_000_000 # 100 MHz _MAX_CAPTURE_ATTEMPTS = 3 _CAPTURE_START_RETRY_DELAY_SECONDS = 0.5 @@ -287,34 +290,42 @@ def _is_ambiguous_capture(exc: DeviceError) -> bool: return str(exc).startswith(_AMBIGUOUS_CAPTURE_PREFIX) -def _collect_pulses(csv_path: Path) -> list[tuple[float, float]]: - """Parse a Saleae digital CSV export into (rising_time, falling_time) pairs. +def _collect_channel_pulses(csv_path: Path) -> list[list[tuple[float, float]]]: + """Parse a Saleae digital CSV export into (rising_time, falling_time) pairs + per channel column. - The CSV has columns like ``Time [s], Channel 0``. + The CSV has columns like ``Time [s], Channel 0, Channel 1``; every row + carries the state of all exported channels, so each column is scanned + for its own edges. """ - pulses: list[tuple[float, float]] = [] - prev_val: int | None = None - rising_time: float | None = None - with open(csv_path) as f: - f.readline() # skip header + header = f.readline() + n_channels = header.count(",") + pulses: list[list[tuple[float, float]]] = [[] for _ in range(n_channels)] + prev_vals: list[int | None] = [None] * n_channels + rising_times: list[float | None] = [None] * n_channels for line in f: parts = line.strip().split(",") - if len(parts) < 2: + if len(parts) < n_channels + 1: continue timestamp = float(parts[0]) - value = int(parts[1]) - - if prev_val is not None: - if prev_val == 0 and value == 1: - rising_time = timestamp - elif prev_val == 1 and value == 0 and rising_time is not None: - pulses.append((rising_time, timestamp)) - rising_time = None + for ch in range(n_channels): + value = int(parts[ch + 1]) + prev_val = prev_vals[ch] + rising_time = rising_times[ch] + if prev_val is not None: + if prev_val == 0 and value == 1: + rising_times[ch] = timestamp + elif prev_val == 1 and value == 0 and rising_time is not None: + pulses[ch].append((rising_time, timestamp)) + rising_times[ch] = None + prev_vals[ch] = value + return pulses - prev_val = value - return pulses +def _collect_pulses(csv_path: Path) -> list[tuple[float, float]]: + """Pulses on the first channel column of a Saleae digital CSV export.""" + return _collect_channel_pulses(csv_path)[0] def _start_pulses(pulses: list[tuple[float, float]]) -> list[tuple[float, float]]: @@ -407,8 +418,10 @@ def _extract_timing(csv_path: Path) -> float: def start_pulse_capture(manager: Manager, after_trigger_seconds: float): """Arm a capture that triggers on the >=1 ms stop pulse on channel 0. - Returns the capture context manager from ``manager.start_capture``; - the caller enters it and later calls :func:`finish_pulse_capture`. + The wait channel is recorded alongside so the recharge time can be + split out afterwards. Returns the capture context manager from + ``manager.start_capture``; the caller enters it and later calls + :func:`finish_pulse_capture`. """ from saleae.automation import ( CaptureConfiguration, @@ -418,7 +431,7 @@ def start_pulse_capture(manager: Manager, after_trigger_seconds: float): ) device_config = LogicDeviceConfiguration( - enabled_digital_channels=[_SALEAE_CHANNEL], + enabled_digital_channels=[_SALEAE_CHANNEL, _WAIT_CHANNEL], digital_sample_rate=_SALEAE_SAMPLE_RATE, ) capture_config = CaptureConfiguration( @@ -472,42 +485,78 @@ def watch() -> None: thread.join() -def finish_pulse_capture(capture, wait_seconds: float) -> tuple[bool, float | None]: +@dataclass(frozen=True) +class WaitTiming: + """Recharge waits inside the execution-time window of a replayed run.""" + + wait_time_us: float + # Waits started inside the window; a wait that died and was resumed + # by the recovery boot's wait counts once. + wait_count: int + # Enter pulses that followed an unfinished wait: the board browned out + # while waiting and rebooted into another wait. + wait_deaths: int + + +@dataclass(frozen=True) +class ReplayTiming: + """Outcome of a pulse capture over one trace replay. + + - ``completed`` False: the trigger never fired (run incomplete); the + capture is stopped and the other fields are None. + - ``execution_time_us``: first start-pulse falling edge to stop-pulse + rising edge. Unlike :func:`saleae_run`, several start pulses are + expected: a run that dies before its first checkpoint boots fresh and + pulses again, and the wall-clock time (outages included) starts at the + first attempt. None when the trigger fired but no timing could be + extracted. + - ``wait``: the recharge waits inside that window; None whenever + ``execution_time_us`` is. + """ + + completed: bool + execution_time_us: float | None + wait: WaitTiming | None + + +def finish_pulse_capture( + capture, wait_seconds: float, cpu_freq_hz: int +) -> ReplayTiming: """Resolve an armed pulse capture after the trace replay ended. By this point the target is unpowered, so the stop pulse either already fired the trigger or never will — *wait_seconds* only needs to cover the - capture's after-trigger tail. - - Returns ``(completed, execution_time_us)``: - - ``(False, None)`` — the trigger never fired (run incomplete); the - capture is stopped. - - ``(True, None)`` — the trigger fired but no timing could be extracted. - - ``(True, us)`` — execution time from the first start-pulse falling - edge to the stop-pulse rising edge. Unlike :func:`saleae_run`, several - start pulses are expected: a run that dies before its first checkpoint - boots fresh and pulses again, and the wall-clock time (outages - included) starts at the first attempt. + capture's after-trigger tail. *cpu_freq_hz* sets the pulse-width scale + that tells wait enter pulses from exit pulses. """ try: _wait_for_capture(capture, wait_seconds) except DeviceError: _stop_capture_quietly(capture) - return False, None + return ReplayTiming(completed=False, execution_time_us=None, wait=None) with tempfile.TemporaryDirectory() as tmpdir: csv_path = Path(tmpdir) / "digital.csv" capture.export_raw_data_csv( directory=tmpdir, - digital_channels=[_SALEAE_CHANNEL], + digital_channels=[_SALEAE_CHANNEL, _WAIT_CHANNEL], ) - pulses = _collect_pulses(csv_path) - - return True, _replay_timing_from_pulses(pulses) + channels = _collect_channel_pulses(csv_path) + pulses, wait_pulses = channels[0], channels[1] + + window = _replay_window(pulses) + if window is None: + return ReplayTiming(completed=True, execution_time_us=None, wait=None) + start_time, stop_time = window + return ReplayTiming( + completed=True, + execution_time_us=(stop_time - start_time) * 1_000_000, + wait=_wait_timing_from_pulses(pulses, wait_pulses, window, cpu_freq_hz), + ) -def _replay_timing_from_pulses(pulses: list[tuple[float, float]]) -> float | None: - """First start-pulse falling edge -> first stop-pulse rising edge, in us.""" +def _replay_window(pulses: list[tuple[float, float]]) -> tuple[float, float] | None: + """(first start-pulse falling edge, first stop-pulse rising edge), in s.""" long_pulses = _stop_pulses(pulses) if not long_pulses: logger.warning("Capture triggered but no stop pulse found in the export") @@ -519,4 +568,83 @@ def _replay_timing_from_pulses(pulses: list[tuple[float, float]]) -> float | Non logger.warning("Stop pulse captured but no start pulse precedes it") return None - return (stop_time - start_falls[0]) * 1_000_000 # seconds -> us + return start_falls[0], stop_time + + +def _replay_timing_from_pulses(pulses: list[tuple[float, float]]) -> float | None: + """First start-pulse falling edge -> first stop-pulse rising edge, in us.""" + window = _replay_window(pulses) + if window is None: + return None + start_time, stop_time = window + return (stop_time - start_time) * 1_000_000 # seconds -> us + + +# Wait pulse widths in CPU cycles (vcc_wait.c): the enter pulse is a port +# set followed by a port clear; the exit pulse has four nops in between. +_WAIT_ENTER_CYCLES = 5 +_WAIT_EXIT_CYCLES = 9 + +# A wait pulse this close to a channel-0 pulse is the cold power-up glitch: +# every floating pin follows the rising rail at the same moment, and the +# wait code never runs while P3.4 is pulsing. +_GLITCH_COINCIDENCE_SECONDS = 0.000002 # 2 us + + +def _coincides_with_timing_pulse( + pulse: tuple[float, float], timing_pulses: list[tuple[float, float]] +) -> bool: + rise, fall = pulse + return any( + r - _GLITCH_COINCIDENCE_SECONDS <= fall + and rise <= f + _GLITCH_COINCIDENCE_SECONDS + for r, f in timing_pulses + ) + + +def _wait_timing_from_pulses( + timing_pulses: list[tuple[float, float]], + wait_pulses: list[tuple[float, float]], + window: tuple[float, float], + cpu_freq_hz: int, +) -> WaitTiming: + """Sum the recharge waits inside *window* from the wait-channel pulses. + + A wait spans its enter pulse to the next exit pulse. An enter pulse that + arrives while a wait is still open means the board died during that + wait and rebooted into another one: the span carries on, so the outage + and reboot count as power-off time. + """ + start_time, stop_time = window + exit_min_width = (_WAIT_ENTER_CYCLES + _WAIT_EXIT_CYCLES) / 2 / cpu_freq_hz + + total = 0.0 + count = 0 + deaths = 0 + open_since: float | None = None + for rise, fall in wait_pulses: + if rise < start_time or rise > stop_time: + continue + if _coincides_with_timing_pulse((rise, fall), timing_pulses): + continue + is_exit = (fall - rise) >= exit_min_width + if not is_exit: + if open_since is None: + open_since = rise + count += 1 + else: + deaths += 1 + elif open_since is None: + logger.warning("Wait exit pulse at %.6f s without a preceding enter", rise) + else: + total += rise - open_since + open_since = None + if open_since is not None: + logger.warning( + "Wait entered at %.6f s never exited before the stop pulse", open_since + ) + total += stop_time - open_since + + return WaitTiming( + wait_time_us=total * 1_000_000, wait_count=count, wait_deaths=deaths + ) diff --git a/scripts/ckpt/intermittent/runner.py b/scripts/ckpt/intermittent/runner.py index e523429a..9abd5a53 100644 --- a/scripts/ckpt/intermittent/runner.py +++ b/scripts/ckpt/intermittent/runner.py @@ -46,6 +46,7 @@ replay_trace, ) from ..device.saleae import ( + ReplayTiming, capture_completion_watcher, discover_saleae, finish_pulse_capture, @@ -85,6 +86,9 @@ "profiling_time_ms", "replay_seconds", "execution_time_us", + "wait_time_us", + "saleae_wait_count", + "saleae_wait_deaths", "runtime_region_boundary_calls", "runtime_wait_count", "runtime_recovery_boots", @@ -320,10 +324,11 @@ def _run_on_trace( elf: Path, samples: list[tuple[float, float]], nvm_symbols: list[str], -) -> tuple[float, bool, float | None, dict[str, int]]: + cpu_freq: int, +) -> tuple[float, ReplayTiming, dict[str, int]]: """Flash, isolate, replay one trace, then reconnect and read NVM. - Returns ``(replay_seconds, completed, execution_time_us, nvm_values)``. + Returns ``(replay_seconds, timing, nvm_values)``. """ connect_debugger(otii) session = flash_and_hold(elf, FLASH_TIMEOUT) @@ -350,13 +355,13 @@ def _run_on_trace( with capture_completion_watcher(capture) as benchmark_done: replay_seconds = replay_trace(otii, samples, benchmark_done) - completed, execution_time_us = finish_pulse_capture( - capture, _CAPTURE_FINISH_TIMEOUT_SECONDS + timing = finish_pulse_capture( + capture, _CAPTURE_FINISH_TIMEOUT_SECONDS, cpu_freq ) connect_debugger(otii) values = read_nvm(tc, elf, FLASH_TIMEOUT, nvm_symbols) - return replay_seconds, completed, execution_time_us, values + return replay_seconds, timing, values def _build_row( @@ -504,10 +509,14 @@ def emit(row: BenchmarkRow) -> None: ) fields = dict(static_fields) try: - replay_seconds, completed, execution_time_us, values = ( - _run_on_trace( - tc, otii, saleae_manager, elf, samples, nvm_symbols - ) + replay_seconds, timing, values = _run_on_trace( + tc, + otii, + saleae_manager, + elf, + samples, + nvm_symbols, + cpu_freq, ) except DeviceError as exc: logger.error(" DEVICE ERROR: %s", exc) @@ -528,16 +537,22 @@ def emit(row: BenchmarkRow) -> None: done = values.get("__nvm_done", 0) == 1 if values.get("__nvm_violation", 0) != 0: status = "region_violation" - elif completed and done: + elif timing.completed and done: status = "ok" - elif completed: + elif timing.completed: status = "unconfirmed" else: status = "incomplete" fields["replay_seconds"] = str(round(replay_seconds, 2)) - if status == "ok" and execution_time_us is not None: - fields["execution_time_us"] = str(round(execution_time_us, 2)) + if status == "ok" and timing.execution_time_us is not None: + fields["execution_time_us"] = str( + round(timing.execution_time_us, 2) + ) + if status == "ok" and timing.wait is not None: + fields["wait_time_us"] = str(round(timing.wait.wait_time_us, 2)) + fields["saleae_wait_count"] = timing.wait.wait_count + fields["saleae_wait_deaths"] = timing.wait.wait_deaths # Counters are trustworthy only when the device parked at # readback: done committed (ok) or violation park. Any # other run resumes under debugger power the moment the @@ -546,6 +561,17 @@ def emit(row: BenchmarkRow) -> None: if status in ("ok", "region_violation"): fields["runtime_wait_count"] = values.get("cnt_wait") fields["runtime_recovery_boots"] = values.get("cnt_recovery") + # Every wait pulses once on entry, so the pulses inside + # the timing window can never outnumber cnt_wait (the + # fresh-boot wait precedes the start pulse). + if timing.wait is not None and "cnt_wait" in values: + enters = timing.wait.wait_count + timing.wait.wait_deaths + if enters > values["cnt_wait"]: + logger.warning( + " %d wait enter pulses but cnt_wait=%d", + enters, + values["cnt_wait"], + ) if status == "ok": fields["result"] = values.get("__nvm_result") if device_debug: diff --git a/tests/test_intermittent.py b/tests/test_intermittent.py index 344be40c..cf96e304 100644 --- a/tests/test_intermittent.py +++ b/tests/test_intermittent.py @@ -6,7 +6,12 @@ import pytest from ckpt.device.otii import OtiiSession, replay_trace -from ckpt.device.saleae import _collect_pulses, _replay_timing_from_pulses +from ckpt.device.saleae import ( + _collect_channel_pulses, + _collect_pulses, + _replay_timing_from_pulses, + _wait_timing_from_pulses, +) from ckpt.env import ProjectEnv from ckpt.errors import ConfigError from ckpt.intermittent.runner import load_trace, resolve_traces @@ -55,6 +60,73 @@ def test_trailing_high_ignored(self, tmp_path): p.write_text("Time [s],Channel 0\n0.0,0\n1.0,1\n") assert _collect_pulses(p) == [] + def test_two_channels(self, tmp_path): + # Every row carries both channel states; each column has its own edges. + p = tmp_path / "digital.csv" + p.write_text( + "Time [s],Channel 0,Channel 1\n" + "0.0,0,0\n1.0,1,0\n1.00001,0,0\n1.5,0,1\n1.5000003,0,0\n" + "1.7,0,1\n1.7000006,0,0\n2.0,1,0\n2.005,0,0\n" + ) + ch0, ch1 = _collect_channel_pulses(p) + assert ch0 == [(1.0, 1.00001), (2.0, 2.005)] + assert ch1 == [(1.5, 1.5000003), (1.7, 1.7000006)] + + +F_CPU = 16_000_000 +ENTER = 5 / F_CPU # port set + clear +EXIT = 9 / F_CPU # four nops in between + + +def enter(t): + return (t, t + ENTER) + + +def exit_(t): + return (t, t + EXIT) + + +# Start pulse at 1.0 (falls at 1.00001), stop pulse rises at 5.0. +TIMING = [(1.0, 1.00001), (5.0, 5.005)] +WINDOW = (1.00001, 5.0) + + +class TestWaitTimingFromPulses: + def test_sums_waits(self): + waits = [enter(2.0), exit_(2.3), enter(3.0), exit_(3.1)] + w = _wait_timing_from_pulses(TIMING, waits, WINDOW, F_CPU) + assert w.wait_time_us == pytest.approx(0.4e6) + assert (w.wait_count, w.wait_deaths) == (2, 0) + + def test_death_during_wait_extends_the_span(self): + # Died at ~2.2 while waiting; the recovery boot waited again at 2.5. + waits = [enter(2.0), enter(2.5), exit_(2.8)] + w = _wait_timing_from_pulses(TIMING, waits, WINDOW, F_CPU) + assert w.wait_time_us == pytest.approx(0.8e6) + assert (w.wait_count, w.wait_deaths) == (1, 1) + + def test_waits_outside_window_ignored(self): + # Fresh-boot wait before the start pulse, and a stray one after stop. + waits = [enter(0.5), exit_(0.9), enter(2.0), exit_(2.3), enter(6.0)] + w = _wait_timing_from_pulses(TIMING, waits, WINDOW, F_CPU) + assert w.wait_time_us == pytest.approx(0.3e6) + assert (w.wait_count, w.wait_deaths) == (1, 0) + + def test_power_up_glitch_dropped(self): + # A reboot at 2.4 glitches every pin at once; the wait channel's + # copy must not be read as a second enter. + timing = [(1.0, 1.00001), (2.4, 2.4000004), (5.0, 5.005)] + waits = [enter(2.0), (2.4000001, 2.4000004), enter(2.5), exit_(2.8)] + w = _wait_timing_from_pulses(timing, waits, WINDOW, F_CPU) + assert w.wait_time_us == pytest.approx(0.8e6) + assert (w.wait_count, w.wait_deaths) == (1, 1) + + def test_unfinished_wait_runs_to_stop(self): + waits = [enter(4.0)] + w = _wait_timing_from_pulses(TIMING, waits, WINDOW, F_CPU) + assert w.wait_time_us == pytest.approx(1.0e6) + assert (w.wait_count, w.wait_deaths) == (1, 0) + class TestLoadTrace: def test_loads_samples(self, tmp_path): From 52d5531be7ad1180c71121f95b1a530df08c69a3 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Fri, 4 Sep 2026 21:01:10 -0400 Subject: [PATCH 04/14] Decompose intermittent execution time into exec, checkpoint, recharge, and rest --- results/intermittent/run_continuous.sh | 15 ++ results/intermittent/summarize.py | 184 ++++++++++++++++++++++++- 2 files changed, 198 insertions(+), 1 deletion(-) create mode 100755 results/intermittent/run_continuous.sh diff --git a/results/intermittent/run_continuous.sh b/results/intermittent/run_continuous.sh new file mode 100755 index 00000000..afcb6779 --- /dev/null +++ b/results/intermittent/run_continuous.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Continuous-power reference for the decomposition (summarize.py): the same +# wait-mode binaries at the board capacitance, run at a constant 3.3 V so no +# boundary ever waits. Wire the Otii main output directly to the board rail +# (no 560 Ohm resistor, no diode) as in docs/intermittent.md. The +# uninstrumented reference is results/uninstrumented.csv. +cd "$(dirname "$0")/../.." || exit 1 +BENCHMARKS="aes crc rsa dijkstra qsort activity_recognition bitcount chacha20 sensor_fusion poly1305 cuckoo_filter sha256 stringsearch" +OUT=results/intermittent/continuous +mkdir -p "$OUT" +for a in milp rockclimb schematic schematicO3; do + echo "=== $(date '+%F %T') start $a" + uv run ckpt bench "$a" $BENCHMARKS --cap board --halt-mode wait --csv "$OUT/$a.csv" > "$OUT/$a.log" 2>&1 + echo "=== $(date '+%F %T') end $a exit=$?" +done diff --git a/results/intermittent/summarize.py b/results/intermittent/summarize.py index 211d939f..24e3ce9c 100644 --- a/results/intermittent/summarize.py +++ b/results/intermittent/summarize.py @@ -58,6 +58,9 @@ "runtime_wait_count", "runtime_recovery_boots", "execution_time_us", + "wait_time_us", + "saleae_wait_count", + "saleae_wait_deaths", "replay_seconds", "region_boundaries", ] @@ -171,5 +174,184 @@ def cell(r): f"| {a} | " + " | ".join(cell(by.get((b, a, t))) for t in TRACES) + " |" ) L.append("") + +# --------------------------------------------------------------------------- +# Decomposition: T_total = T_exec + T_checkpoint + T_recharge + T_rest +# T_recharge = wait_time_us (Saleae wait channel, outages included) +# T_exec = uninstrumented O3 under continuous power (../uninstrumented.csv) +# T_checkpoint = continuous-power time of the same wait-mode binary at the +# board cap (continuous/.csv) minus T_exec: state saves +# plus the voltage check at every boundary +# T_rest = remainder: boot + restore after real power failures, wait +# entry/exit +# --------------------------------------------------------------------------- + + +def read_bench_times(path): + """benchmark -> execution time (s) from a `ckpt bench` CSV.""" + if not path.is_file(): + return {} + with open(path, newline="") as f: + return { + r["benchmark"].split("-")[0]: float(r["execution_time_us"]) / 1e6 + for r in csv.DictReader(f) + if r["status"] == "ok" and r["execution_time_us"] + } + + +COMPONENTS = ["t_exec", "t_checkpoint", "t_recharge", "t_rest"] +t_uninstr = read_bench_times(OUT.parent / "uninstrumented.csv") +t_cont = {a: read_bench_times(OUT / "continuous" / f"{a}.csv") for a in ALGOS} + +decomp = [] +for r in rows: + b, a = r["benchmark"], r["algorithm"] + if r["status"] != "ok" or not r.get("wait_time_us"): + continue + if b not in t_uninstr or b not in t_cont[a]: + continue + total = secs(r) + recharge = float(r["wait_time_us"]) / 1e6 + exec_ = t_uninstr[b] + checkpoint = t_cont[a][b] - exec_ + decomp.append( + { + "benchmark": b, + "algorithm": a, + "trace": r["trace"], + "t_total": total, + "t_exec": exec_, + "t_checkpoint": checkpoint, + "t_recharge": recharge, + "t_rest": total - recharge - t_cont[a][b], + } + ) + +if decomp: + with open(OUT / "decomposition.csv", "w", newline="") as f: + w = csv.DictWriter( + f, fieldnames=["benchmark", "algorithm", "trace", "t_total"] + COMPONENTS + ) + w.writeheader() + w.writerows(decomp) + + bao_total = { + (d["benchmark"], d["trace"]): d["t_total"] + for d in decomp + if d["algorithm"] == "milp" + } + + def mean(xs): + return sum(xs) / len(xs) + + def gmean(xs): + import math + + return math.exp(mean([math.log(x) for x in xs])) + + def per_algo(ds): + """Mean share of each component, and each component normalized to + Bao's total on the same (benchmark, trace): mean over traces, then + over benchmarks, so the normalized parts add up to the normalized + total. The geomean total matches the figure.""" + out = {} + for a in ALGOS: + da = [ + d + for d in ds + if d["algorithm"] == a and (d["benchmark"], d["trace"]) in bao_total + ] + if not da: + continue + benches = sorted({d["benchmark"] for d in da}) + norm = {} + for c in COMPONENTS + ["t_total"]: + per_b = [ + mean( + [ + d[c] / bao_total[(d["benchmark"], d["trace"])] + for d in da + if d["benchmark"] == b + ] + ) + for b in benches + ] + norm[c] = mean(per_b) + share = {c: mean([d[c] / d["t_total"] for d in da]) for c in COMPONENTS} + gm = gmean( + [ + gmean( + [ + d["t_total"] / bao_total[(d["benchmark"], d["trace"])] + for d in da + if d["benchmark"] == b + ] + ) + for b in benches + ] + ) + out[a] = {"norm": norm, "share": share, "gmean_total": gm, "n": len(da)} + return out + + summary_algo = per_algo(decomp) + L += [ + "## Decomposition (normalized to Bao's total on the same trace; mean over traces, then benchmarks)", + "", + "| algo | runs | total (arith) | total (geomean) | " + + " | ".join(COMPONENTS) + + " | power-off share |", + "|---|---|---|---|" + "---|" * (len(COMPONENTS) + 1), + ] + for a, v in summary_algo.items(): + L.append( + f"| {a} | {v['n']} | {v['norm']['t_total']:.2f} | {v['gmean_total']:.2f} | " + + " | ".join( + f"{v['norm'][c]:.3f} ({100 * v['share'][c]:.1f}%)" for c in COMPONENTS + ) + + f" | {100 * v['share']['t_recharge']:.1f}% |" + ) + L += [ + "", + "## Decomposition per benchmark (mean share of each run's total: exec / ckpt / recharge / rest)", + "", + ] + L += ["| benchmark | " + " | ".join(ALGOS) + " |", "|---|" + "---|" * len(ALGOS)] + for b in BENCHMARKS: + cells = [] + for a in ALGOS: + da = [d for d in decomp if d["benchmark"] == b and d["algorithm"] == a] + if not da: + cells.append("—") + continue + cells.append( + " / ".join( + f"{100 * mean([d[c] / d['t_total'] for d in da]):.0f}%" + for c in COMPONENTS + ) + ) + L.append(f"| {b} | " + " | ".join(cells) + " |") + + # LaTeX table for the paper: one row per system. + NAMES = { + "milp": r"\tool", + "rockclimb": r"\rockclimb", + "schematic": r"\schematic", + "schematicO3": r"\schematicO", + } + T = [ + r"\begin{tabular}{lrrrrrr}", + r"\toprule", + r"System & $T_{\mathrm{total}}$ & $T_{\mathrm{exec}}$ & $T_{\mathrm{ckpt}}$ & $T_{\mathrm{recharge}}$ & $T_{\mathrm{boot+restore}}$ & power-off \\", + r"\midrule", + ] + for a, v in summary_algo.items(): + T.append( + f"{NAMES[a]} & {v['norm']['t_total']:.2f} & " + + " & ".join(f"{v['norm'][c]:.2f}" for c in COMPONENTS) + + f" & {100 * v['share']['t_recharge']:.0f}\\% \\\\" + ) + T += [r"\bottomrule", r"\end{tabular}"] + (OUT / "decomposition.tex").write_text("\n".join(T) + "\n") + (OUT / "report.md").write_text("\n".join(L) + "\n") -print(f"{len(rows)} rows -> summary.csv, report.md") +print(f"{len(rows)} rows -> summary.csv, report.md; {len(decomp)} decomposed rows") From d1c392bcaec5777642d68bbefd1c1aa504657992 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Fri, 4 Sep 2026 21:47:16 -0400 Subject: [PATCH 05/14] Log measured wait pulse widths and split on the measured values --- docs/intermittent.md | 2 +- scripts/ckpt/device/saleae.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/intermittent.md b/docs/intermittent.md index 8be80745..302c7d09 100644 --- a/docs/intermittent.md +++ b/docs/intermittent.md @@ -138,7 +138,7 @@ For each (benchmark, capacitor, trace): pulses P3.5 right before it sleeps and right after it wakes (`passes/runtime/vcc_wait.c`): the enter pulse is one port write pair, the exit pulse the same with four `nop`s in between, so the host tells - them apart by width (about 5 vs 9 CPU cycles high). The recharge time + them apart by width (about 6 vs 11 CPU cycles high). The recharge time of a run is the sum of enter-to-exit spans inside the execution-time window. A wait cut short by a brownout has no exit pulse; the recovery boot waits again, so its enter pulse follows directly and the span runs diff --git a/scripts/ckpt/device/saleae.py b/scripts/ckpt/device/saleae.py index 894689fe..8853e306 100644 --- a/scripts/ckpt/device/saleae.py +++ b/scripts/ckpt/device/saleae.py @@ -582,8 +582,9 @@ def _replay_timing_from_pulses(pulses: list[tuple[float, float]]) -> float | Non # Wait pulse widths in CPU cycles (vcc_wait.c): the enter pulse is a port # set followed by a port clear; the exit pulse has four nops in between. -_WAIT_ENTER_CYCLES = 5 -_WAIT_EXIT_CYCLES = 9 +# Measured at 16 MHz: 370-390 ns and 690-700 ns. +_WAIT_ENTER_CYCLES = 6 +_WAIT_EXIT_CYCLES = 11 # A wait pulse this close to a channel-0 pulse is the cold power-up glitch: # every floating pin follows the rising rail at the same moment, and the @@ -622,12 +623,14 @@ def _wait_timing_from_pulses( count = 0 deaths = 0 open_since: float | None = None + widths: dict[bool, list[float]] = {False: [], True: []} for rise, fall in wait_pulses: if rise < start_time or rise > stop_time: continue if _coincides_with_timing_pulse((rise, fall), timing_pulses): continue is_exit = (fall - rise) >= exit_min_width + widths[is_exit].append(fall - rise) if not is_exit: if open_since is None: open_since = rise @@ -644,6 +647,16 @@ def _wait_timing_from_pulses( "Wait entered at %.6f s never exited before the stop pulse", open_since ) total += stop_time - open_since + for is_exit, ws in widths.items(): + if ws: + logger.debug( + "Wait %s pulses: %d, width %.0f-%.0f ns (split at %.0f ns)", + "exit" if is_exit else "enter", + len(ws), + min(ws) * 1e9, + max(ws) * 1e9, + exit_min_width * 1e9, + ) return WaitTiming( wait_time_us=total * 1_000_000, wait_count=count, wait_deaths=deaths From cee16fabf2f0a9af5e5348b59202050c2752788f Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 03:08:12 -0400 Subject: [PATCH 06/14] Re-measure intermittent execution with recharge wait time --- .../activity_recognition/milp.csv | 22 +- .../activity_recognition/rockclimb.csv | 22 +- .../activity_recognition/schematic.csv | 22 +- .../activity_recognition/schematicO3.csv | 22 +- results/intermittent/aes/milp.csv | 22 +- results/intermittent/aes/rockclimb.csv | 22 +- results/intermittent/aes/schematic.csv | 22 +- results/intermittent/aes/schematicO3.csv | 22 +- results/intermittent/bitcount/milp.csv | 22 +- results/intermittent/bitcount/rockclimb.csv | 22 +- results/intermittent/bitcount/schematic.csv | 22 +- results/intermittent/bitcount/schematicO3.csv | 22 +- results/intermittent/chacha20/milp.csv | 22 +- results/intermittent/chacha20/rockclimb.csv | 22 +- results/intermittent/chacha20/schematic.csv | 22 +- results/intermittent/chacha20/schematicO3.csv | 22 +- results/intermittent/crc/milp.csv | 22 +- results/intermittent/crc/rockclimb.csv | 22 +- results/intermittent/crc/schematic.csv | 22 +- results/intermittent/crc/schematicO3.csv | 22 +- results/intermittent/cuckoo_filter/milp.csv | 22 +- .../intermittent/cuckoo_filter/rockclimb.csv | 22 +- .../intermittent/cuckoo_filter/schematic.csv | 22 +- .../cuckoo_filter/schematicO3.csv | 22 +- results/intermittent/dijkstra/milp.csv | 22 +- results/intermittent/dijkstra/rockclimb.csv | 22 +- results/intermittent/dijkstra/schematic.csv | 22 +- results/intermittent/dijkstra/schematicO3.csv | 22 +- results/intermittent/poly1305/milp.csv | 22 +- results/intermittent/poly1305/rockclimb.csv | 22 +- results/intermittent/poly1305/schematic.csv | 22 +- results/intermittent/poly1305/schematicO3.csv | 22 +- results/intermittent/qsort/milp.csv | 22 +- results/intermittent/qsort/rockclimb.csv | 22 +- results/intermittent/qsort/schematic.csv | 22 +- results/intermittent/qsort/schematicO3.csv | 22 +- results/intermittent/report.md | 394 +++---- results/intermittent/rsa/milp.csv | 22 +- results/intermittent/rsa/rockclimb.csv | 22 +- results/intermittent/rsa/schematic.csv | 22 +- results/intermittent/rsa/schematicO3.csv | 22 +- results/intermittent/sensor_fusion/milp.csv | 22 +- .../intermittent/sensor_fusion/rockclimb.csv | 22 +- .../intermittent/sensor_fusion/schematic.csv | 22 +- .../sensor_fusion/schematicO3.csv | 22 +- results/intermittent/sha256/milp.csv | 22 +- results/intermittent/sha256/rockclimb.csv | 22 +- results/intermittent/sha256/schematic.csv | 22 +- results/intermittent/sha256/schematicO3.csv | 22 +- results/intermittent/stringsearch/milp.csv | 22 +- .../intermittent/stringsearch/rockclimb.csv | 22 +- .../intermittent/stringsearch/schematic.csv | 22 +- .../intermittent/stringsearch/schematicO3.csv | 22 +- results/intermittent/summary.csv | 1042 ++++++++--------- 54 files changed, 1290 insertions(+), 1290 deletions(-) diff --git a/results/intermittent/activity_recognition/milp.csv b/results/intermittent/activity_recognition/milp.csv index ebed7a62..d2488afb 100644 --- a/results/intermittent/activity_recognition/milp.csv +++ b/results/intermittent/activity_recognition/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -activity_recognition,board,1,ok,4,75,854,2.29,144446.63,,11,0,64 -activity_recognition,board,2,ok,4,75,854,3.18,619516.3,,13,0,64 -activity_recognition,board,3,ok,4,75,854,4.15,167939.47,,12,0,64 -activity_recognition,board,4,ok,4,75,854,5.97,3390377.2,,12,0,64 -activity_recognition,board,5,ok,4,75,854,4.47,1891121.82,,13,0,64 -activity_recognition,board,6,ok,4,75,854,2.89,1047546.96,,14,0,64 -activity_recognition,board,7,ok,4,75,854,3.87,2073055.26,,14,0,64 -activity_recognition,board,8,ok,4,75,854,3.54,919204.1,,17,0,64 -activity_recognition,board,9,ok,4,75,854,5.46,2619196.79,,12,0,64 -activity_recognition,board,10,ok,4,75,854,1.88,144510.19,,11,0,64 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +activity_recognition,board,1,ok,4,53,777,2.11,144329.48,108491.28,10,0,,11,0,64 +activity_recognition,board,2,ok,4,53,777,3.18,619375.18,583534.73,12,0,,13,0,64 +activity_recognition,board,3,ok,4,53,777,4.09,178735.3,142892.93,12,0,,13,0,64 +activity_recognition,board,4,ok,4,53,777,5.79,3273059.98,3237218.48,11,0,,12,0,64 +activity_recognition,board,5,ok,4,53,777,4.4,1898731.9,1862891.17,13,0,,14,0,64 +activity_recognition,board,6,ok,4,53,777,2.88,1034359.34,998516.18,12,0,,13,0,64 +activity_recognition,board,7,ok,4,53,777,3.79,2058317.77,2022475.07,12,0,,13,0,64 +activity_recognition,board,8,ok,4,53,777,3.47,918125.61,882278.99,15,0,,17,0,64 +activity_recognition,board,9,ok,4,53,777,5.3,2629188.2,2593344.23,11,0,,12,0,64 +activity_recognition,board,10,ok,4,53,777,1.89,144436.16,108596.75,10,0,,11,0,64 diff --git a/results/intermittent/activity_recognition/rockclimb.csv b/results/intermittent/activity_recognition/rockclimb.csv index 007bff32..4e285ea2 100644 --- a/results/intermittent/activity_recognition/rockclimb.csv +++ b/results/intermittent/activity_recognition/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -activity_recognition,board,1,ok,8,206,0,5.47,3361451.1,,49,1,64 -activity_recognition,board,2,ok,8,206,0,7.08,4486138.49,,69,1,64 -activity_recognition,board,3,ok,8,206,0,7.97,4058981.48,,113,1,64 -activity_recognition,board,4,ok,8,206,0,19.17,16568583.2,,85,0,64 -activity_recognition,board,5,ok,8,206,0,15.1,12478355.63,,67,4,64 -activity_recognition,board,6,ok,8,206,0,7.65,5840294.08,,67,1,64 -activity_recognition,board,7,ok,8,206,0,11.79,10032553.09,,64,0,64 -activity_recognition,board,8,ok,8,206,0,17.24,14620159.3,,94,9,64 -activity_recognition,board,9,ok,8,206,0,16.17,13387959.07,,60,0,64 -activity_recognition,board,10,ok,8,206,0,13.71,11864780.35,,58,9,64 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +activity_recognition,board,1,ok,8,20,0,4.78,2736150.77,2576701.08,47,1,,49,1,64 +activity_recognition,board,2,ok,8,20,0,6.98,4483566.14,4324075.65,64,1,,66,1,64 +activity_recognition,board,3,ok,8,20,0,8.0,4056380.49,3896776.74,108,1,,110,1,64 +activity_recognition,board,4,ok,8,20,0,21.61,19127260.8,18967726.07,89,0,,90,0,64 +activity_recognition,board,5,ok,8,20,0,14.9,12464805.86,12305302.36,59,4,,64,4,64 +activity_recognition,board,6,ok,8,20,0,7.67,5828039.78,5668545.83,62,1,,64,1,64 +activity_recognition,board,7,ok,8,20,0,11.69,10027816.82,9868314.33,61,0,,62,0,64 +activity_recognition,board,8,ok,8,20,0,17.21,14619806.11,14460245.1,81,9,,92,9,64 +activity_recognition,board,9,ok,8,20,0,16.18,13384105.98,13224597.49,59,0,,60,0,64 +activity_recognition,board,10,ok,8,20,0,13.58,11860629.75,11701133.84,51,9,,61,9,64 diff --git a/results/intermittent/activity_recognition/schematic.csv b/results/intermittent/activity_recognition/schematic.csv index c05024f5..2aef014a 100644 --- a/results/intermittent/activity_recognition/schematic.csv +++ b/results/intermittent/activity_recognition/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -activity_recognition,board,1,ok,6,241,744,4.82,2653896.37,,45,1,64 -activity_recognition,board,2,ok,6,241,744,6.59,3919015.07,,57,1,64 -activity_recognition,board,3,ok,6,241,744,5.25,1275635.68,,87,0,64 -activity_recognition,board,4,ok,6,241,744,16.49,13894732.87,,61,0,64 -activity_recognition,board,5,ok,6,241,744,11.98,9389915.15,,55,3,64 -activity_recognition,board,6,ok,6,241,744,5.71,3793546.7,,50,1,64 -activity_recognition,board,7,ok,6,241,744,10.58,8821280.86,,53,0,64 -activity_recognition,board,8,ok,6,241,744,12.79,10123364.13,,74,6,64 -activity_recognition,board,9,ok,6,241,744,13.7,10892632.04,,50,0,64 -activity_recognition,board,10,ok,6,241,744,9.9,8032189.47,,50,6,64 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +activity_recognition,board,1,ok,6,25,900,4.67,2654377.86,2545984.45,42,1,,44,1,64 +activity_recognition,board,2,ok,6,25,900,4.68,2088089.05,1979674.93,54,0,,55,0,64 +activity_recognition,board,3,ok,6,25,900,5.19,1276593.37,1168134.47,86,0,,87,0,64 +activity_recognition,board,4,ok,6,25,900,16.4,13900076.94,13791646.69,63,0,,64,0,64 +activity_recognition,board,5,ok,6,25,900,13.7,11138709.02,11030287.35,50,3,,54,3,64 +activity_recognition,board,6,ok,6,25,900,5.6,3779749.01,3671334.02,49,1,,51,1,64 +activity_recognition,board,7,ok,6,25,900,10.71,8983871.81,8875466.93,50,0,,51,0,64 +activity_recognition,board,8,ok,6,25,900,12.79,10120970.4,10012534.39,65,6,,73,6,64 +activity_recognition,board,9,ok,6,25,900,13.69,10880080.13,10771673.83,51,0,,52,0,64 +activity_recognition,board,10,ok,6,25,900,9.69,8026349.63,7917956.65,42,6,,49,6,64 diff --git a/results/intermittent/activity_recognition/schematicO3.csv b/results/intermittent/activity_recognition/schematicO3.csv index ee9f2acd..9a755624 100644 --- a/results/intermittent/activity_recognition/schematicO3.csv +++ b/results/intermittent/activity_recognition/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -activity_recognition,board,1,ok,3,6,733,2.28,180918.22,,14,0,64 -activity_recognition,board,2,ok,3,6,733,3.28,644444.22,,16,0,64 -activity_recognition,board,3,ok,3,6,733,4.3,258806.35,,21,0,64 -activity_recognition,board,4,ok,3,6,733,5.96,3449749.38,,17,0,64 -activity_recognition,board,5,ok,3,6,733,5.68,3127211.14,,19,1,64 -activity_recognition,board,6,ok,3,6,733,2.98,1092608.52,,19,0,64 -activity_recognition,board,7,ok,3,6,733,4.87,3049884.86,,18,0,64 -activity_recognition,board,8,ok,3,6,733,4.99,2332980.82,,22,1,64 -activity_recognition,board,9,ok,3,6,733,6.2,3358003.03,,15,0,64 -activity_recognition,board,10,ok,3,6,733,1.98,169684.72,,13,0,64 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +activity_recognition,board,1,ok,3,1,1310,2.28,180769.26,141478.39,13,0,,14,0,64 +activity_recognition,board,2,ok,3,1,1310,3.18,645011.06,605715.18,15,0,,16,0,64 +activity_recognition,board,3,ok,3,1,1310,4.18,258584.99,219281.03,20,0,,21,0,64 +activity_recognition,board,4,ok,3,1,1310,5.98,3449093.97,3409796.94,17,0,,18,0,64 +activity_recognition,board,5,ok,3,1,1310,5.69,3129336.38,3090036.2,16,1,,18,1,64 +activity_recognition,board,6,ok,3,1,1310,2.8,1095998.1,1056699.35,17,0,,18,0,64 +activity_recognition,board,7,ok,3,1,1310,4.78,3038113.82,2998815.84,16,0,,17,0,64 +activity_recognition,board,8,ok,3,1,1310,5.0,2338786.43,2299481.27,18,1,,21,1,64 +activity_recognition,board,9,ok,3,1,1310,6.1,3358607.96,3319309.29,14,1,,16,1,64 +activity_recognition,board,10,ok,3,1,1310,1.88,169828.47,130538.04,12,0,,13,0,64 diff --git a/results/intermittent/aes/milp.csv b/results/intermittent/aes/milp.csv index 40874f75..98f2eb99 100644 --- a/results/intermittent/aes/milp.csv +++ b/results/intermittent/aes/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -aes,board,1,ok,4,274,797,3.14,965024.04,,26,1,107 -aes,board,2,ok,4,274,797,3.46,892999.21,,25,0,107 -aes,board,3,ok,4,274,797,4.62,562577.45,,25,0,107 -aes,board,4,ok,4,274,797,8.69,6090705.01,,28,3,107 -aes,board,5,ok,4,274,797,8.79,6217378.17,,27,2,107 -aes,board,6,ok,4,274,797,3.2,1235151.42,,25,0,107 -aes,board,7,ok,4,274,797,7.27,5509520.23,,25,0,107 -aes,board,8,ok,4,274,797,8.18,5456901.95,,29,3,107 -aes,board,9,ok,4,274,797,8.65,5882944.0,,26,1,107 -aes,board,10,ok,4,274,797,5.86,4095920.08,,28,3,107 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +aes,board,1,ok,4,200,793,3.09,964416.81,856453.44,24,1,,26,1,107 +aes,board,2,ok,4,200,793,3.4,891711.75,783747.74,24,0,,25,0,107 +aes,board,3,ok,4,200,793,4.41,562560.75,454598.8,24,0,,25,0,107 +aes,board,4,ok,4,200,793,8.49,6093413.74,5985450.26,24,2,,27,2,107 +aes,board,5,ok,4,200,793,8.69,6203940.9,6095979.38,24,2,,27,2,107 +aes,board,6,ok,4,200,793,3.08,1247256.38,1139297.34,24,0,,25,0,107 +aes,board,7,ok,4,200,793,7.01,5329294.16,5221329.9,24,0,,25,0,107 +aes,board,8,ok,4,200,793,8.0,5429137.3,5321176.4,24,3,,29,3,107 +aes,board,9,ok,4,200,793,8.59,5868201.23,5760236.14,24,2,,27,2,107 +aes,board,10,ok,4,200,793,5.79,4080716.36,3972760.4,24,3,,28,3,107 diff --git a/results/intermittent/aes/rockclimb.csv b/results/intermittent/aes/rockclimb.csv index 1ebcc14e..ad7138d8 100644 --- a/results/intermittent/aes/rockclimb.csv +++ b/results/intermittent/aes/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -aes,board,1,ok,15,56,0,15.59,13470531.57,,181,5,107 -aes,board,2,ok,15,56,0,19.06,16497833.66,,246,4,107 -aes,board,3,ok,15,56,0,19.82,15803638.67,,417,4,107 -aes,board,4,ok,15,56,0,71.44,68906452.56,,336,0,107 -aes,board,5,ok,15,56,0,50.99,48384250.21,,235,15,107 -aes,board,6,ok,15,56,0,23.12,21294974.44,,233,4,107 -aes,board,7,ok,15,56,0,38.61,36835081.09,,236,0,107 -aes,board,8,ok,15,56,0,54.38,51746657.66,,339,33,107 -aes,board,9,ok,15,56,0,53.75,50911240.38,,217,0,107 -aes,board,10,ok,15,56,0,49.01,47291745.52,,227,36,107 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +aes,board,1,ok,15,6,0,15.48,13441378.24,12896651.98,173,5,,179,5,107 +aes,board,2,ok,15,6,0,18.97,16376975.2,15832145.72,243,4,,248,4,107 +aes,board,3,ok,15,6,0,17.17,13211408.3,12666336.87,405,3,,409,3,107 +aes,board,4,ok,15,6,0,66.17,63693389.2,63148525.12,329,0,,330,0,107 +aes,board,5,ok,15,6,0,49.0,46578013.42,46033235.81,221,15,,237,15,107 +aes,board,6,ok,15,6,0,21.89,20176720.12,19631984.27,223,4,,228,4,107 +aes,board,7,ok,15,6,0,38.1,36428838.74,35884089.49,228,0,,229,0,107 +aes,board,8,ok,15,6,0,54.4,51733191.94,51188272.98,307,33,,342,33,107 +aes,board,9,ok,15,6,0,53.61,50859215.05,50314566.81,220,0,,221,0,107 +aes,board,10,ok,15,6,0,45.2,43497287.77,42952659.0,186,33,,220,33,107 diff --git a/results/intermittent/aes/schematic.csv b/results/intermittent/aes/schematic.csv index 0402349d..e2f105e5 100644 --- a/results/intermittent/aes/schematic.csv +++ b/results/intermittent/aes/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -aes,board,1,ok,11,126,813,37.5,35360844.09,,460,14,107 -aes,board,2,ok,11,126,813,46.39,43740536.27,,562,11,107 -aes,board,3,ok,11,126,813,36.61,32585052.77,,786,8,107 -aes,board,4,ok,11,126,813,155.39,152781925.51,,625,0,107 -aes,board,5,ok,11,126,813,125.33,122742896.75,,602,39,107 -aes,board,6,ok,11,126,813,54.58,52707876.73,,553,10,107 -aes,board,7,ok,11,126,813,90.61,88856881.6,,534,0,107 -aes,board,8,ok,11,126,813,128.29,125656322.91,,726,81,107 -aes,board,9,ok,11,126,813,126.29,123406444.5,,528,18,107 -aes,board,10,ok,11,126,813,116.2,114439162.81,,546,87,107 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +aes,board,1,ok,11,11,846,37.38,35292946.51,33991752.31,444,14,,459,14,107 +aes,board,2,ok,11,11,846,43.49,40871922.74,39570641.08,543,10,,554,10,107 +aes,board,3,ok,11,11,846,36.08,32145478.36,30843862.12,759,8,,768,8,107 +aes,board,4,ok,11,11,846,149.19,146721235.87,145419869.69,614,0,,615,0,107 +aes,board,5,ok,11,11,846,120.32,117822809.51,116521511.34,546,38,,585,38,107 +aes,board,6,ok,11,11,846,52.91,51114992.11,49813779.35,530,11,,542,11,107 +aes,board,7,ok,11,11,846,90.33,88632043.04,87330845.2,535,0,,536,0,107 +aes,board,8,ok,11,11,846,128.1,125572776.22,124271311.56,642,81,,725,81,107 +aes,board,9,ok,11,11,846,126.08,123369881.89,122068728.59,513,12,,526,12,107 +aes,board,10,ok,11,11,846,112.11,110471177.57,109170050.25,464,84,,549,84,107 diff --git a/results/intermittent/aes/schematicO3.csv b/results/intermittent/aes/schematicO3.csv index 470a3c9f..d5c86de1 100644 --- a/results/intermittent/aes/schematicO3.csv +++ b/results/intermittent/aes/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -aes,board,1,ok,2,7,754,5.57,3396499.19,,56,1,107 -aes,board,2,ok,2,7,754,7.1,4464141.26,,63,1,107 -aes,board,3,ok,2,7,754,5.36,1395899.12,,93,0,107 -aes,board,4,ok,2,7,754,19.1,16504376.22,,70,0,107 -aes,board,5,ok,2,7,754,15.06,12449088.09,,68,4,107 -aes,board,6,ok,2,7,754,7.74,5834818.73,,64,1,107 -aes,board,7,ok,2,7,754,11.78,9998973.47,,63,0,107 -aes,board,8,ok,2,7,754,14.26,11615057.82,,84,7,107 -aes,board,9,ok,2,7,754,16.26,13403125.79,,60,0,107 -aes,board,10,ok,2,7,754,13.69,11914989.7,,66,9,107 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +aes,board,1,ok,2,2,832,5.51,3397343.34,3271847.34,54,1,,56,1,107 +aes,board,2,ok,2,2,832,7.0,4454920.99,4329413.64,60,1,,62,1,107 +aes,board,3,ok,2,2,832,5.28,1371926.22,1246376.58,91,0,,92,0,107 +aes,board,4,ok,2,2,832,17.01,14552443.59,14426925.23,68,0,,69,0,107 +aes,board,5,ok,2,2,832,14.89,12400799.26,12275286.6,59,4,,64,4,107 +aes,board,6,ok,2,2,832,6.9,5202566.78,5077057.53,65,1,,67,1,107 +aes,board,7,ok,2,2,832,11.67,9996464.06,9870964.83,61,0,,62,0,107 +aes,board,8,ok,2,2,832,14.19,11619386.43,11493857.05,72,7,,81,7,107 +aes,board,9,ok,2,2,832,16.11,13397573.57,13272071.91,61,0,,62,0,107 +aes,board,10,ok,2,2,832,13.69,11897845.87,11772349.71,56,9,,66,9,107 diff --git a/results/intermittent/bitcount/milp.csv b/results/intermittent/bitcount/milp.csv index 5f0a1329..ab4730ac 100644 --- a/results/intermittent/bitcount/milp.csv +++ b/results/intermittent/bitcount/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -bitcount,board,1,ok,9,248,751,2.27,105459.25,,8,0,14121 -bitcount,board,2,ok,9,248,751,3.15,544023.47,,10,0,14121 -bitcount,board,3,ok,9,248,751,4.06,119072.08,,7,0,14121 -bitcount,board,4,ok,9,248,751,3.99,1457186.17,,9,0,14121 -bitcount,board,5,ok,9,248,751,4.45,1840180.19,,9,0,14121 -bitcount,board,6,ok,9,248,751,2.59,701875.19,,10,0,14121 -bitcount,board,7,ok,9,248,751,3.7,1877879.07,,9,0,14121 -bitcount,board,8,ok,9,248,751,3.6,872297.64,,12,0,14121 -bitcount,board,9,ok,9,248,751,3.76,810476.17,,9,0,14121 -bitcount,board,10,ok,9,248,751,1.9,105478.24,,8,0,14121 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +bitcount,board,1,ok,9,218,794,2.17,105386.78,75764.93,7,0,,8,0,14121 +bitcount,board,2,ok,9,218,794,3.1,547334.24,517710.87,7,0,,8,0,14121 +bitcount,board,3,ok,9,218,794,4.0,118947.55,89323.62,6,0,,7,0,14121 +bitcount,board,4,ok,9,218,794,3.29,849675.84,820053.51,7,0,,8,0,14121 +bitcount,board,5,ok,9,218,794,4.37,1839270.8,1809645.56,8,0,,9,0,14121 +bitcount,board,6,ok,9,218,794,2.42,702799.24,673173.43,9,0,,10,0,14121 +bitcount,board,7,ok,9,218,794,3.69,2013039.05,1983412.68,8,0,,9,0,14121 +bitcount,board,8,ok,9,218,794,3.37,882148.04,852519.42,12,0,,14,0,14121 +bitcount,board,9,ok,9,218,794,3.67,922751.56,893127.93,8,0,,9,0,14121 +bitcount,board,10,ok,9,218,794,1.88,105575.9,75954.45,7,0,,8,0,14121 diff --git a/results/intermittent/bitcount/rockclimb.csv b/results/intermittent/bitcount/rockclimb.csv index e3e73c4c..71c5d174 100644 --- a/results/intermittent/bitcount/rockclimb.csv +++ b/results/intermittent/bitcount/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -bitcount,board,1,ok,14,15,0,23.3,21181752.74,,280,8,14121 -bitcount,board,2,ok,14,15,0,30.47,27846462.99,,393,7,14121 -bitcount,board,3,ok,14,15,0,28.5,24495677.2,,664,6,14121 -bitcount,board,4,ok,14,15,0,115.97,113457321.26,,538,0,14121 -bitcount,board,5,ok,14,15,0,78.89,76287137.61,,373,24,14121 -bitcount,board,6,ok,14,15,0,34.08,32201033.41,,352,6,14121 -bitcount,board,7,ok,14,15,0,60.58,58764271.4,,366,0,14121 -bitcount,board,8,ok,14,15,0,86.78,84080629.14,,541,54,14121 -bitcount,board,9,ok,14,15,0,83.77,80933376.11,,333,0,14121 -bitcount,board,10,ok,14,15,0,72.87,71109200.59,,338,54,14121 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +bitcount,board,1,ok,14,2,0,24.79,22695785.21,21729572.82,270,9,,280,9,14121 +bitcount,board,2,ok,14,2,0,30.51,27966739.49,27000286.84,373,7,,381,7,14121 +bitcount,board,3,ok,14,2,0,28.38,24451794.31,23484982.74,656,6,,663,6,14121 +bitcount,board,4,ok,14,2,0,118.62,116106081.63,115139467.39,531,0,,532,0,14121 +bitcount,board,5,ok,14,2,0,78.81,76251226.78,75284659.72,363,24,,388,24,14121 +bitcount,board,6,ok,14,2,0,33.88,32188788.04,31222083.53,345,6,,352,6,14121 +bitcount,board,7,ok,14,2,0,59.21,57549277.59,56582474.76,353,0,,354,0,14121 +bitcount,board,8,ok,14,2,0,86.69,84078142.63,83111193.26,485,54,,541,54,14121 +bitcount,board,9,ok,14,2,0,83.69,80890127.31,79923737.47,326,0,,327,0,14121 +bitcount,board,10,ok,14,2,0,72.79,71036948.37,70070624.16,291,54,,346,54,14121 diff --git a/results/intermittent/bitcount/schematic.csv b/results/intermittent/bitcount/schematic.csv index b12b1c4a..554e6287 100644 --- a/results/intermittent/bitcount/schematic.csv +++ b/results/intermittent/bitcount/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -bitcount,board,1,ok,2,27,918,3.18,1016436.33,,33,0,14121 -bitcount,board,2,ok,2,27,918,4.3,1674067.57,,39,0,14121 -bitcount,board,3,ok,2,27,918,4.98,1046933.22,,64,0,14121 -bitcount,board,4,ok,2,27,918,13.85,11273947.26,,50,0,14121 -bitcount,board,5,ok,2,27,918,10.69,8056534.23,,43,2,14121 -bitcount,board,6,ok,2,27,918,3.5,1626608.16,,38,0,14121 -bitcount,board,7,ok,2,27,918,8.31,6524987.38,,42,0,14121 -bitcount,board,8,ok,2,27,918,9.71,6995768.21,,56,4,14121 -bitcount,board,9,ok,2,27,918,11.19,8371842.56,,38,0,14121 -bitcount,board,10,ok,2,27,918,9.68,7909186.03,,41,6,14121 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +bitcount,board,1,ok,2,5,2957,3.07,1018221.36,936324.21,31,0,,32,0,14121 +bitcount,board,2,ok,2,5,2957,4.2,1688280.99,1606371.56,39,0,,40,0,14121 +bitcount,board,3,ok,2,5,2957,4.89,1011897.65,929942.23,62,0,,63,0,14121 +bitcount,board,4,ok,2,5,2957,13.78,11249926.71,11168000.06,52,0,,53,0,14121 +bitcount,board,5,ok,2,5,2957,10.59,8056781.03,7974867.75,40,2,,43,2,14121 +bitcount,board,6,ok,2,5,2957,3.39,1602878.76,1520978.3,38,0,,39,0,14121 +bitcount,board,7,ok,2,5,2957,8.19,6518371.88,6436468.38,40,0,,41,0,14121 +bitcount,board,8,ok,2,5,2957,9.6,6985043.89,6903117.84,49,4,,55,4,14121 +bitcount,board,9,ok,2,5,2957,11.07,8366565.98,8284660.76,39,0,,40,0,14121 +bitcount,board,10,ok,2,5,2957,9.58,7893161.94,7811267.52,34,6,,41,6,14121 diff --git a/results/intermittent/bitcount/schematicO3.csv b/results/intermittent/bitcount/schematicO3.csv index 0f113df9..40969b75 100644 --- a/results/intermittent/bitcount/schematicO3.csv +++ b/results/intermittent/bitcount/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -bitcount,board,1,ok,3,14,856,2.29,117047.46,,9,0,14121 -bitcount,board,2,ok,3,14,856,3.17,542561.33,,11,0,14121 -bitcount,board,3,ok,3,14,856,4.11,141602.01,,9,0,14121 -bitcount,board,4,ok,3,14,856,5.17,2615368.24,,10,0,14121 -bitcount,board,5,ok,3,14,856,4.5,1851275.89,,10,0,14121 -bitcount,board,6,ok,3,14,856,2.6,713080.55,,11,0,14121 -bitcount,board,7,ok,3,14,856,3.8,2034623.25,,11,0,14121 -bitcount,board,8,ok,3,14,856,3.6,892652.87,,14,0,14121 -bitcount,board,9,ok,3,14,856,3.71,922349.94,,9,0,14121 -bitcount,board,10,ok,3,14,856,1.91,117159.4,,9,0,14121 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +bitcount,board,1,ok,3,2,750,2.22,117265.14,86908.82,8,0,,9,0,14121 +bitcount,board,2,ok,3,2,750,3.08,568153.42,537794.47,10,0,,11,0,14121 +bitcount,board,3,ok,3,2,750,4.01,141665.33,111308.25,8,0,,9,0,14121 +bitcount,board,4,ok,3,2,750,5.17,2620409.63,2590050.87,9,0,,10,0,14121 +bitcount,board,5,ok,3,2,750,4.41,1875286.12,1844926.66,10,0,,11,0,14121 +bitcount,board,6,ok,3,2,750,2.59,724824.85,694463.14,11,0,,12,0,14121 +bitcount,board,7,ok,3,2,750,3.77,2022807.28,1992446.92,9,0,,10,0,14121 +bitcount,board,8,ok,3,2,750,3.41,893834.27,863471.71,12,0,,14,0,14121 +bitcount,board,9,ok,3,2,750,3.71,923660.74,893304.36,8,0,,9,0,14121 +bitcount,board,10,ok,3,2,750,1.87,117148.39,86793.62,8,0,,9,0,14121 diff --git a/results/intermittent/chacha20/milp.csv b/results/intermittent/chacha20/milp.csv index 426a04e7..ebda67c1 100644 --- a/results/intermittent/chacha20/milp.csv +++ b/results/intermittent/chacha20/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -chacha20,board,1,ok,2,44,799,2.31,159449.48,,11,0,79 -chacha20,board,2,ok,2,44,799,3.27,623558.4,,12,0,79 -chacha20,board,3,ok,2,44,799,4.16,208169.13,,11,0,79 -chacha20,board,4,ok,2,44,799,5.87,3265821.46,,12,1,79 -chacha20,board,5,ok,2,44,799,4.5,1892932.14,,11,0,79 -chacha20,board,6,ok,2,44,799,2.97,1038372.12,,11,0,79 -chacha20,board,7,ok,2,44,799,3.87,2052895.94,,11,0,79 -chacha20,board,8,ok,2,44,799,3.58,912866.71,,13,0,79 -chacha20,board,9,ok,2,44,799,6.18,3214576.39,,13,1,79 -chacha20,board,10,ok,2,44,799,2.0,159329.01,,11,0,79 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +chacha20,board,1,ok,2,43,1242,2.26,159467.95,107561.17,10,0,,11,0,79 +chacha20,board,2,ok,2,43,1242,3.18,622519.98,570609.88,11,0,,12,0,79 +chacha20,board,3,ok,2,43,1242,4.08,208490.03,156580.84,10,0,,11,0,79 +chacha20,board,4,ok,2,43,1242,5.8,3392855.3,3340944.88,10,1,,12,1,79 +chacha20,board,5,ok,2,43,1242,4.48,1895127.34,1843222.15,10,0,,11,0,79 +chacha20,board,6,ok,2,43,1242,2.87,1040239.39,988331.2,10,0,,11,0,79 +chacha20,board,7,ok,2,43,1242,3.77,2079525.89,2027618.81,10,0,,11,0,79 +chacha20,board,8,ok,2,43,1242,3.49,914172.11,862262.01,11,0,,13,0,79 +chacha20,board,9,ok,2,43,1242,5.29,2504250.92,2452342.78,10,1,,12,1,79 +chacha20,board,10,ok,2,43,1242,1.87,159503.56,107598.4,10,0,,11,0,79 diff --git a/results/intermittent/chacha20/rockclimb.csv b/results/intermittent/chacha20/rockclimb.csv index a70a62a8..d559a248 100644 --- a/results/intermittent/chacha20/rockclimb.csv +++ b/results/intermittent/chacha20/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -chacha20,board,1,ok,4,39,0,4.91,2697936.69,,46,1,79 -chacha20,board,2,ok,4,39,0,6.93,4306007.04,,60,1,79 -chacha20,board,3,ok,4,39,0,5.4,1395161.77,,98,0,79 -chacha20,board,4,ok,4,39,0,17.09,14551295.6,,71,0,79 -chacha20,board,5,ok,4,39,0,13.79,11171651.23,,57,3,79 -chacha20,board,6,ok,4,39,0,6.6,4688122.16,,54,1,79 -chacha20,board,7,ok,4,39,0,10.8,9028127.59,,58,0,79 -chacha20,board,8,ok,4,39,0,14.24,11563113.94,,81,7,79 -chacha20,board,9,ok,4,39,0,16.17,13325536.97,,58,0,79 -chacha20,board,10,ok,4,39,0,9.89,8063527.56,,52,6,79 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +chacha20,board,1,ok,4,3,0,4.7,2686607.07,2557975.47,44,1,,46,1,79 +chacha20,board,2,ok,4,3,0,6.88,4314943.43,4186288.77,59,1,,61,1,79 +chacha20,board,3,ok,4,3,0,5.29,1385061.95,1256378.29,95,0,,96,0,79 +chacha20,board,4,ok,4,3,0,16.47,13941534.72,13812893.97,71,0,,72,0,79 +chacha20,board,5,ok,4,3,0,13.6,11184744.94,11056110.03,53,3,,57,3,79 +chacha20,board,6,ok,4,3,0,6.49,4667260.83,4538624.86,53,1,,55,1,79 +chacha20,board,7,ok,4,3,0,10.7,9026723.7,8898090.48,54,0,,55,0,79 +chacha20,board,8,ok,4,3,0,12.77,10170101.29,10041448.26,67,6,,75,6,79 +chacha20,board,9,ok,4,3,0,13.67,10937567.99,10808941.99,55,0,,56,0,79 +chacha20,board,10,ok,4,3,0,9.78,8061499.79,7932881.14,46,6,,53,6,79 diff --git a/results/intermittent/chacha20/schematic.csv b/results/intermittent/chacha20/schematic.csv index 6cb4122f..d53c5ac4 100644 --- a/results/intermittent/chacha20/schematic.csv +++ b/results/intermittent/chacha20/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -chacha20,board,1,ok,2,21,667,4.67,2520501.87,,34,1,79 -chacha20,board,2,ok,2,21,667,4.29,1663205.18,,34,0,79 -chacha20,board,3,ok,2,21,667,4.75,757059.01,,37,0,79 -chacha20,board,4,ok,2,21,667,11.19,8655823.73,,36,1,79 -chacha20,board,5,ok,2,21,667,8.89,6279035.26,,37,2,79 -chacha20,board,6,ok,2,21,667,3.31,1616982.85,,33,0,79 -chacha20,board,7,ok,2,21,667,7.45,5688892.54,,35,0,79 -chacha20,board,8,ok,2,21,667,8.17,5532194.38,,37,3,79 -chacha20,board,9,ok,2,21,667,11.2,8347290.12,,38,3,79 -chacha20,board,10,ok,2,21,667,9.7,7906901.69,,39,6,79 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +chacha20,board,1,ok,2,4,768,4.59,2522302.89,2426904.42,32,1,,34,1,79 +chacha20,board,2,ok,2,4,768,4.18,1667022.3,1571623.4,33,0,,34,0,79 +chacha20,board,3,ok,2,4,768,4.59,769311.33,673898.51,36,0,,37,0,79 +chacha20,board,4,ok,2,4,768,11.18,8652801.43,8557397.28,33,1,,35,1,79 +chacha20,board,5,ok,2,4,768,8.87,6269065.83,6173664.28,33,2,,36,2,79 +chacha20,board,6,ok,2,4,768,3.42,1606269.49,1510875.14,32,0,,33,0,79 +chacha20,board,7,ok,2,4,768,7.3,5667243.38,5571843.14,33,0,,34,0,79 +chacha20,board,8,ok,2,4,768,8.09,5517116.85,5421709.7,32,3,,37,3,79 +chacha20,board,9,ok,2,4,768,11.09,8330893.12,8235484.47,34,2,,37,2,79 +chacha20,board,10,ok,2,4,768,9.5,7883257.18,7787853.34,32,6,,39,6,79 diff --git a/results/intermittent/chacha20/schematicO3.csv b/results/intermittent/chacha20/schematicO3.csv index 756ca8ea..6242228e 100644 --- a/results/intermittent/chacha20/schematicO3.csv +++ b/results/intermittent/chacha20/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -chacha20,board,1,ok,1,5,633,2.99,887694.53,,22,0,79 -chacha20,board,2,ok,1,5,633,3.51,814718.98,,24,0,79 -chacha20,board,3,ok,1,5,633,4.39,367312.74,,28,0,79 -chacha20,board,4,ok,1,5,633,8.59,6044979.82,,25,0,79 -chacha20,board,5,ok,1,5,633,7.61,4970974.63,,26,1,79 -chacha20,board,6,ok,1,5,633,3.1,1180645.64,,24,0,79 -chacha20,board,7,ok,1,5,633,6.18,4427125.74,,24,0,79 -chacha20,board,8,ok,1,5,633,8.08,5381300.06,,31,3,79 -chacha20,board,9,ok,1,5,633,8.68,5827917.58,,25,1,79 -chacha20,board,10,ok,1,5,633,5.79,4024400.51,,26,3,79 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +chacha20,board,1,ok,1,1,984,2.92,887957.01,826188.94,21,0,,22,0,79 +chacha20,board,2,ok,1,1,984,3.28,776353.31,714579.49,23,0,,24,0,79 +chacha20,board,3,ok,1,1,984,4.32,367697.05,305918.94,27,0,,28,0,79 +chacha20,board,4,ok,1,1,984,8.5,6036338.44,5974563.45,24,0,,25,0,79 +chacha20,board,5,ok,1,1,984,7.5,4970654.62,4908875.56,25,1,,27,1,79 +chacha20,board,6,ok,1,1,984,3.01,1181802.87,1120032.42,22,0,,23,0,79 +chacha20,board,7,ok,1,1,984,6.7,5081027.6,5019256.98,22,0,,23,0,79 +chacha20,board,8,ok,1,1,984,7.89,5382134.06,5320352.0,26,3,,31,3,79 +chacha20,board,9,ok,1,1,984,7.93,5123350.81,5061574.4,22,1,,24,1,79 +chacha20,board,10,ok,1,1,984,5.7,4009892.43,3948121.06,21,3,,25,3,79 diff --git a/results/intermittent/crc/milp.csv b/results/intermittent/crc/milp.csv index e26f19ca..2901c66a 100644 --- a/results/intermittent/crc/milp.csv +++ b/results/intermittent/crc/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -crc,board,1,ok,3,28,625,2.18,95136.23,,7,0,20431 -crc,board,2,ok,3,28,625,3.2,535811.95,,7,0,20431 -crc,board,3,ok,3,28,625,3.9,119586.36,,7,0,20431 -crc,board,4,ok,3,28,625,3.39,839428.1,,8,1,20431 -crc,board,5,ok,3,28,625,4.5,1842730.53,,7,0,20431 -crc,board,6,ok,3,28,625,2.56,669080.02,,7,0,20431 -crc,board,7,ok,3,28,625,3.6,1868235.97,,7,0,20431 -crc,board,8,ok,3,28,625,3.5,849897.97,,8,0,20431 -crc,board,9,ok,3,28,625,3.7,886919.06,,7,0,20431 -crc,board,10,ok,3,28,625,1.87,95281.54,,7,0,20431 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +crc,board,1,ok,3,29,662,2.2,95182.39,64719.96,6,0,,7,0,20431 +crc,board,2,ok,3,29,662,2.93,423641.27,393176.93,6,0,,7,0,20431 +crc,board,3,ok,3,29,662,3.97,119474.84,89012.8,6,0,,7,0,20431 +crc,board,4,ok,3,29,662,3.26,838568.84,808106.63,6,1,,8,1,20431 +crc,board,5,ok,3,29,662,2.57,94953.81,64491.78,6,0,,7,0,20431 +crc,board,6,ok,3,29,662,2.5,667084.2,636621.71,6,0,,7,0,20431 +crc,board,7,ok,3,29,662,3.57,1860399.06,1829936.83,6,0,,7,0,20431 +crc,board,8,ok,3,29,662,3.37,848229.29,817765.58,6,0,,8,0,20431 +crc,board,9,ok,3,29,662,3.67,896748.8,866285.69,6,0,,7,0,20431 +crc,board,10,ok,3,29,662,1.87,95154.15,64694.58,6,0,,7,0,20431 diff --git a/results/intermittent/crc/rockclimb.csv b/results/intermittent/crc/rockclimb.csv index e17e92e6..2f287e45 100644 --- a/results/intermittent/crc/rockclimb.csv +++ b/results/intermittent/crc/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -crc,board,1,ok,8,21,0,7.18,5082226.15,,65,2,20431 -crc,board,2,ok,8,21,0,7.39,4788899.94,,85,1,20431 -crc,board,3,ok,8,21,0,8.61,4626745.64,,152,1,20431 -crc,board,4,ok,8,21,0,26.91,24374391.92,,118,0,20431 -crc,board,5,ok,8,21,0,19.97,17373029.29,,87,5,20431 -crc,board,6,ok,8,21,0,8.19,6330561.45,,81,1,20431 -crc,board,7,ok,8,21,0,15.33,13526218.96,,85,0,20431 -crc,board,8,ok,8,21,0,21.87,19248577.93,,124,12,20431 -crc,board,9,ok,8,21,0,21.21,18377062.42,,78,0,20431 -crc,board,10,ok,8,21,0,17.58,15817079.81,,77,12,20431 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +crc,board,1,ok,8,2,0,7.09,5050783.73,4837614.12,62,2,,65,2,20431 +crc,board,2,ok,8,2,0,7.38,4796119.51,4582928.74,83,1,,85,1,20431 +crc,board,3,ok,8,2,0,8.37,4580761.39,4367441.7,143,1,,145,1,20431 +crc,board,4,ok,8,2,0,24.87,22419821.4,22206586.35,117,0,,118,0,20431 +crc,board,5,ok,8,2,0,19.9,17351051.05,17137869.13,82,5,,88,5,20431 +crc,board,6,ok,8,2,0,8.11,6325691.18,6112532.11,81,1,,83,1,20431 +crc,board,7,ok,8,2,0,17.31,15542343.56,15329172.68,85,0,,86,0,20431 +crc,board,8,ok,8,2,0,21.92,19248187.49,19034964.41,110,12,,124,12,20431 +crc,board,9,ok,8,2,0,20.99,18344984.09,18131818.19,79,0,,80,0,20431 +crc,board,10,ok,8,2,0,17.48,15803381.31,15590200.27,64,12,,77,12,20431 diff --git a/results/intermittent/crc/schematic.csv b/results/intermittent/crc/schematic.csv index 823b990f..cfba469b 100644 --- a/results/intermittent/crc/schematic.csv +++ b/results/intermittent/crc/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -crc,board,1,ok,3,11,740,10.69,8586257.42,,135,3,20431 -crc,board,2,ok,3,11,740,14.81,12178598.64,,178,3,20431 -crc,board,3,ok,3,11,740,13.11,9056689.11,,282,2,20431 -crc,board,4,ok,3,11,740,47.87,45306634.59,,213,0,20431 -crc,board,5,ok,3,11,740,36.8,34139466.28,,177,11,20431 -crc,board,6,ok,3,11,740,16.01,14091786.59,,161,3,20431 -crc,board,7,ok,3,11,740,28.18,26374084.54,,170,0,20431 -crc,board,8,ok,3,11,740,37.4,34720122.59,,232,22,20431 -crc,board,9,ok,3,11,740,38.69,35851240.84,,154,0,20431 -crc,board,10,ok,3,11,740,33.38,31614971.77,,161,24,20431 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +crc,board,1,ok,3,2,761,10.67,8571685.32,8254887.28,130,3,,134,3,20431 +crc,board,2,ok,3,2,761,14.68,12178628.09,11861760.72,173,3,,177,3,20431 +crc,board,3,ok,3,2,761,12.82,8984139.26,8667121.23,272,2,,275,2,20431 +crc,board,4,ok,3,2,761,45.18,42749186.38,42432280.45,208,0,,209,0,20431 +crc,board,5,ok,3,2,761,36.7,34100692.79,33783821.27,165,11,,177,11,20431 +crc,board,6,ok,3,2,761,13.81,12021859.13,11705004.38,159,2,,162,2,20431 +crc,board,7,ok,3,2,761,27.82,26213076.02,25896234.61,165,0,,166,0,20431 +crc,board,8,ok,3,2,761,37.27,34703039.05,34386093.13,206,22,,230,22,20431 +crc,board,9,ok,3,2,761,38.57,35835142.1,35518316.0,154,0,,155,0,20431 +crc,board,10,ok,3,2,761,33.27,31585210.56,31268377.26,140,24,,165,24,20431 diff --git a/results/intermittent/crc/schematicO3.csv b/results/intermittent/crc/schematicO3.csv index 960123ab..d96eeadd 100644 --- a/results/intermittent/crc/schematicO3.csv +++ b/results/intermittent/crc/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -crc,board,1,ok,3,3,845,2.29,113487.66,,8,0,20431 -crc,board,2,ok,3,3,845,3.18,540701.58,,8,0,20431 -crc,board,3,ok,3,3,845,4.11,137706.55,,8,0,20431 -crc,board,4,ok,3,3,845,3.48,855178.73,,9,1,20431 -crc,board,5,ok,3,3,845,4.51,1835723.58,,8,0,20431 -crc,board,6,ok,3,3,845,2.61,686337.1,,8,0,20431 -crc,board,7,ok,3,3,845,3.61,1872743.18,,8,0,20431 -crc,board,8,ok,3,3,845,3.59,867969.11,,9,0,20431 -crc,board,9,ok,3,3,845,3.79,915513.62,,8,0,20431 -crc,board,10,ok,3,3,845,1.88,113531.06,,8,0,20431 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +crc,board,1,ok,3,0,987,2.06,113405.13,74977.67,7,0,,8,0,20431 +crc,board,2,ok,3,0,987,3.1,539578.24,501150.12,7,0,,8,0,20431 +crc,board,3,ok,3,0,987,3.98,137652.99,99225.17,7,0,,8,0,20431 +crc,board,4,ok,3,0,987,3.97,1452341.16,1413912.61,7,1,,9,1,20431 +crc,board,5,ok,3,0,987,4.41,1834693.5,1796265.66,7,0,,8,0,20431 +crc,board,6,ok,3,0,987,2.5,699110.15,660683.67,7,0,,8,0,20431 +crc,board,7,ok,3,0,987,3.62,2025234.4,1986807.3,7,0,,8,0,20431 +crc,board,8,ok,3,0,987,3.51,867803.82,829376.35,7,0,,9,0,20431 +crc,board,9,ok,3,0,987,3.61,914861.39,876435.7,7,0,,8,0,20431 +crc,board,10,ok,3,0,987,1.87,113500.11,75074.88,7,0,,8,0,20431 diff --git a/results/intermittent/cuckoo_filter/milp.csv b/results/intermittent/cuckoo_filter/milp.csv index 2402186e..8e2bde09 100644 --- a/results/intermittent/cuckoo_filter/milp.csv +++ b/results/intermittent/cuckoo_filter/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -cuckoo_filter,board,1,ok,3,38,828,2.27,164986.93,,12,0,4048 -cuckoo_filter,board,2,ok,3,38,828,3.3,639749.52,,14,0,4048 -cuckoo_filter,board,3,ok,3,38,828,4.21,244571.0,,17,0,4048 -cuckoo_filter,board,4,ok,3,38,828,6.01,3430952.98,,17,0,4048 -cuckoo_filter,board,5,ok,3,38,828,4.5,1900154.62,,12,0,4048 -cuckoo_filter,board,6,ok,3,38,828,2.96,1054424.83,,14,0,4048 -cuckoo_filter,board,7,ok,3,38,828,3.86,2080546.5,,15,0,4048 -cuckoo_filter,board,8,ok,3,38,828,3.55,940184.74,,17,0,4048 -cuckoo_filter,board,9,ok,3,38,828,6.19,3349472.68,,15,1,4048 -cuckoo_filter,board,10,ok,3,38,828,1.97,164909.96,,12,0,4048 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +cuckoo_filter,board,1,ok,3,35,659,2.3,175871.02,130232.53,12,0,,13,0,4048 +cuckoo_filter,board,2,ok,3,35,659,3.22,651645.92,606004.55,13,0,,14,0,4048 +cuckoo_filter,board,3,ok,3,35,659,4.2,233521.49,187876.87,15,0,,16,0,4048 +cuckoo_filter,board,4,ok,3,35,659,5.99,3429475.34,3383831.78,15,0,,16,0,4048 +cuckoo_filter,board,5,ok,3,35,659,4.49,1911507.86,1865868.87,12,0,,13,0,4048 +cuckoo_filter,board,6,ok,3,35,659,2.89,1054973.55,1009331.47,12,0,,13,0,4048 +cuckoo_filter,board,7,ok,3,35,659,3.71,2080723.68,2035081.99,14,0,,15,0,4048 +cuckoo_filter,board,8,ok,3,35,659,3.51,925074.14,879429.21,16,0,,18,0,4048 +cuckoo_filter,board,9,ok,3,35,659,6.16,3354285.83,3308645.73,13,1,,15,1,4048 +cuckoo_filter,board,10,ok,3,35,659,1.89,175866.43,130227.0,12,0,,13,0,4048 diff --git a/results/intermittent/cuckoo_filter/rockclimb.csv b/results/intermittent/cuckoo_filter/rockclimb.csv index 14730cc3..ee199971 100644 --- a/results/intermittent/cuckoo_filter/rockclimb.csv +++ b/results/intermittent/cuckoo_filter/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -cuckoo_filter,board,1,ok,5,5,0,12.31,10106894.21,,132,4,4048 -cuckoo_filter,board,2,ok,5,5,0,15.09,12403138.97,,178,3,4048 -cuckoo_filter,board,3,ok,5,5,0,13.27,9267665.95,,303,2,4048 -cuckoo_filter,board,4,ok,5,5,0,50.56,47971045.51,,230,0,4048 -cuckoo_filter,board,5,ok,5,5,0,36.78,34165087.2,,171,11,4048 -cuckoo_filter,board,6,ok,5,5,0,16.91,14964111.73,,159,3,4048 -cuckoo_filter,board,7,ok,5,5,0,28.18,26407880.03,,162,0,4048 -cuckoo_filter,board,8,ok,5,5,0,40.53,37828073.02,,246,24,4048 -cuckoo_filter,board,9,ok,5,5,0,38.7,35909694.01,,154,0,4048 -cuckoo_filter,board,10,ok,5,5,0,33.42,31635918.52,,153,24,4048 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +cuckoo_filter,board,1,ok,5,1,0,12.17,10119200.86,9701992.55,125,4,,130,4,4048 +cuckoo_filter,board,2,ok,5,1,0,14.62,12179726.0,11762428.23,166,3,,170,3,4048 +cuckoo_filter,board,3,ok,5,1,0,13.11,9210890.21,8793288.97,294,2,,297,2,4048 +cuckoo_filter,board,4,ok,5,1,0,50.41,47944847.34,47527450.06,233,0,,234,0,4048 +cuckoo_filter,board,5,ok,5,1,0,36.69,34149712.01,33732403.82,158,11,,170,11,4048 +cuckoo_filter,board,6,ok,5,1,0,15.81,14088378.17,13671158.71,160,3,,164,3,4048 +cuckoo_filter,board,7,ok,5,1,0,28.04,26377563.16,25960331.21,170,0,,171,0,4048 +cuckoo_filter,board,8,ok,5,1,0,40.41,37802743.35,37385353.92,222,24,,248,24,4048 +cuckoo_filter,board,9,ok,5,1,0,38.69,35894165.84,35476963.31,154,0,,155,0,4048 +cuckoo_filter,board,10,ok,5,1,0,33.32,31590616.25,31173416.48,134,24,,159,24,4048 diff --git a/results/intermittent/cuckoo_filter/schematic.csv b/results/intermittent/cuckoo_filter/schematic.csv index 73f5bca7..e139f816 100644 --- a/results/intermittent/cuckoo_filter/schematic.csv +++ b/results/intermittent/cuckoo_filter/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -cuckoo_filter,board,1,ok,6,110,798,9.91,7737519.74,,115,4,4048 -cuckoo_filter,board,2,ok,6,110,798,11.3,8639427.5,,124,2,4048 -cuckoo_filter,board,3,ok,6,110,798,9.3,5270791.09,,174,1,4048 -cuckoo_filter,board,4,ok,6,110,798,37.47,34867799.99,,141,2,4048 -cuckoo_filter,board,5,ok,6,110,798,29.23,26634224.39,,133,8,4048 -cuckoo_filter,board,6,ok,6,110,798,13.31,11423236.82,,128,2,4048 -cuckoo_filter,board,7,ok,6,110,798,21.3,19469648.87,,127,0,4048 -cuckoo_filter,board,8,ok,6,110,798,28.17,25495710.53,,158,16,4048 -cuckoo_filter,board,9,ok,6,110,798,31.31,28391520.02,,123,4,4048 -cuckoo_filter,board,10,ok,6,110,798,29.41,27578555.03,,135,21,4048 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +cuckoo_filter,board,1,ok,6,14,932,9.83,7750648.87,7465194.54,112,4,,117,4,4048 +cuckoo_filter,board,2,ok,6,14,932,11.11,8558954.78,8273475.71,122,2,,125,2,4048 +cuckoo_filter,board,3,ok,6,14,932,9.18,5267849.64,4982297.04,173,1,,175,1,4048 +cuckoo_filter,board,4,ok,6,14,932,34.78,32276585.97,31991090.71,138,0,,139,0,4048 +cuckoo_filter,board,5,ok,6,14,932,27.4,24893892.25,24608399.65,123,8,,132,8,4048 +cuckoo_filter,board,6,ok,6,14,932,13.29,11406108.09,11120647.67,125,2,,128,2,4048 +cuckoo_filter,board,7,ok,6,14,932,22.04,20432877.08,20147407.39,125,0,,126,0,4048 +cuckoo_filter,board,8,ok,6,14,932,28.03,25511378.06,25225857.99,140,16,,158,16,4048 +cuckoo_filter,board,9,ok,6,14,932,31.19,28377798.85,28092332.39,122,3,,126,3,4048 +cuckoo_filter,board,10,ok,6,14,932,25.58,23832122.55,23546660.3,115,18,,134,18,4048 diff --git a/results/intermittent/cuckoo_filter/schematicO3.csv b/results/intermittent/cuckoo_filter/schematicO3.csv index 83fa3805..969e22ca 100644 --- a/results/intermittent/cuckoo_filter/schematicO3.csv +++ b/results/intermittent/cuckoo_filter/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -cuckoo_filter,board,1,ok,5,6,604,3.0,837662.52,,18,1,4048 -cuckoo_filter,board,2,ok,5,6,604,3.37,754834.35,,20,0,4048 -cuckoo_filter,board,3,ok,5,6,604,4.35,355529.32,,26,0,4048 -cuckoo_filter,board,4,ok,5,6,604,8.52,5897819.52,,27,2,4048 -cuckoo_filter,board,5,ok,5,6,604,5.8,3186596.5,,22,1,4048 -cuckoo_filter,board,6,ok,5,6,604,3.11,1157265.59,,21,0,4048 -cuckoo_filter,board,7,ok,5,6,604,5.27,3477038.18,,21,0,4048 -cuckoo_filter,board,8,ok,5,6,604,5.09,2396186.26,,24,1,4048 -cuckoo_filter,board,9,ok,5,6,604,6.21,3423902.22,,20,0,4048 -cuckoo_filter,board,10,ok,5,6,604,5.79,3982881.6,,22,3,4048 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +cuckoo_filter,board,1,ok,5,2,870,2.82,840272.29,782621.45,16,1,,18,1,4048 +cuckoo_filter,board,2,ok,5,2,870,3.25,740074.68,682417.91,21,0,,22,0,4048 +cuckoo_filter,board,3,ok,5,2,870,4.28,355445.28,297783.84,25,0,,26,0,4048 +cuckoo_filter,board,4,ok,5,2,870,8.5,6011707.12,5954046.61,22,1,,24,1,4048 +cuckoo_filter,board,5,ok,5,2,870,5.71,3196422.83,3138763.32,21,1,,23,1,4048 +cuckoo_filter,board,6,ok,5,2,870,3.0,1135462.26,1077810.31,18,0,,19,0,4048 +cuckoo_filter,board,7,ok,5,2,870,5.21,3485738.4,3428082.09,21,0,,22,0,4048 +cuckoo_filter,board,8,ok,5,2,870,5.01,2395531.47,2337868.51,22,1,,25,1,4048 +cuckoo_filter,board,9,ok,5,2,870,6.2,3428663.78,3371012.52,19,0,,20,0,4048 +cuckoo_filter,board,10,ok,5,2,870,5.73,3968274.66,3910620.9,18,3,,22,3,4048 diff --git a/results/intermittent/dijkstra/milp.csv b/results/intermittent/dijkstra/milp.csv index 7666a1ba..f6f09105 100644 --- a/results/intermittent/dijkstra/milp.csv +++ b/results/intermittent/dijkstra/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -dijkstra,board,1,ok,3,80,860,2.31,114521.93,,9,0,3788 -dijkstra,board,2,ok,3,80,860,3.22,553899.22,,10,0,3788 -dijkstra,board,3,ok,3,80,860,4.12,149153.1,,11,0,3788 -dijkstra,board,4,ok,3,80,860,4.03,1456519.35,,10,1,3788 -dijkstra,board,5,ok,3,80,860,4.45,1848389.6,,10,0,3788 -dijkstra,board,6,ok,3,80,860,2.61,701548.23,,9,0,3788 -dijkstra,board,7,ok,3,80,860,3.82,2016812.87,,10,0,3788 -dijkstra,board,8,ok,3,80,860,3.53,868440.06,,11,0,3788 -dijkstra,board,9,ok,3,80,860,3.82,933312.57,,9,0,3788 -dijkstra,board,10,ok,3,80,860,1.92,114854.4,,9,0,3788 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +dijkstra,board,1,ok,3,59,815,2.19,114672.44,86796.19,8,0,,9,0,3788 +dijkstra,board,2,ok,3,59,815,3.09,542096.64,514216.1,9,0,,10,0,3788 +dijkstra,board,3,ok,3,59,815,3.99,138142.39,110264.4,9,0,,10,0,3788 +dijkstra,board,4,ok,3,59,815,3.99,1456178.14,1428300.32,8,0,,9,0,3788 +dijkstra,board,5,ok,3,59,815,4.39,1851410.77,1823532.15,9,0,,10,0,3788 +dijkstra,board,6,ok,3,59,815,2.58,702616.5,674739.12,8,0,,9,0,3788 +dijkstra,board,7,ok,3,59,815,3.69,2022602.99,1994723.38,9,0,,10,0,3788 +dijkstra,board,8,ok,3,59,815,3.49,869866.18,841983.05,10,0,,12,0,3788 +dijkstra,board,9,ok,3,59,815,3.69,907190.61,879311.49,8,0,,9,0,3788 +dijkstra,board,10,ok,3,59,815,1.89,114677.81,86800.55,8,0,,9,0,3788 diff --git a/results/intermittent/dijkstra/rockclimb.csv b/results/intermittent/dijkstra/rockclimb.csv index 3c56bbc7..34073f93 100644 --- a/results/intermittent/dijkstra/rockclimb.csv +++ b/results/intermittent/dijkstra/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -dijkstra,board,1,ok,4,3,0,42.71,40485027.06,,506,16,3788 -dijkstra,board,2,ok,4,3,0,55.31,52612247.45,,727,13,3788 -dijkstra,board,3,ok,4,3,0,48.69,44727340.18,,1208,11,3788 -dijkstra,board,4,ok,4,3,0,202.55,199933655.57,,946,0,3788 -dijkstra,board,5,ok,4,3,0,142.13,139541465.82,,696,45,3788 -dijkstra,board,6,ok,4,3,0,63.39,61454282.08,,652,12,3788 -dijkstra,board,7,ok,4,3,0,108.18,106455288.37,,665,0,3788 -dijkstra,board,8,ok,4,3,0,160.57,157862186.89,,990,102,3788 -dijkstra,board,9,ok,4,3,0,153.69,150854751.8,,612,0,3788 -dijkstra,board,10,ok,4,3,0,135.87,134106748.89,,623,102,3788 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +dijkstra,board,1,ok,4,1,0,42.59,40522202.24,38740547.32,495,16,,512,16,3788 +dijkstra,board,2,ok,4,1,0,53.89,51341898.67,49560138.49,662,13,,676,13,3788 +dijkstra,board,3,ok,4,1,0,48.62,44705160.7,42922713.82,1198,11,,1210,11,3788 +dijkstra,board,4,ok,4,1,0,191.99,189477727.43,187695713.16,930,0,,931,0,3788 +dijkstra,board,5,ok,4,1,0,140.77,138276730.25,136496366.13,654,44,,699,44,3788 +dijkstra,board,6,ok,4,1,0,60.29,58439879.22,56660152.17,634,11,,646,11,3788 +dijkstra,board,7,ok,4,1,0,105.71,103977288.22,102197659.99,639,0,,640,0,3788 +dijkstra,board,8,ok,4,1,0,160.49,157861116.94,156081941.68,888,102,,992,102,3788 +dijkstra,board,9,ok,4,1,0,153.48,150831192.82,149052716.9,619,0,,620,0,3788 +dijkstra,board,10,ok,4,1,0,132.0,130224833.59,128446695.01,532,99,,632,99,3788 diff --git a/results/intermittent/dijkstra/schematic.csv b/results/intermittent/dijkstra/schematic.csv index 8ebff8aa..1b960f26 100644 --- a/results/intermittent/dijkstra/schematic.csv +++ b/results/intermittent/dijkstra/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -dijkstra,board,1,ok,2,30,898,5.55,3359053.88,,53,1,3788 -dijkstra,board,2,ok,2,30,898,7.11,4464300.59,,67,1,3788 -dijkstra,board,3,ok,2,30,898,5.4,1393102.81,,98,0,3788 -dijkstra,board,4,ok,2,30,898,19.09,16530644.58,,72,0,3788 -dijkstra,board,5,ok,2,30,898,15.09,12419432.29,,66,4,3788 -dijkstra,board,6,ok,2,30,898,7.69,5793464.84,,59,1,3788 -dijkstra,board,7,ok,2,30,898,11.78,9984875.18,,62,0,3788 -dijkstra,board,8,ok,2,30,898,14.31,11613517.11,,86,7,3788 -dijkstra,board,9,ok,2,30,898,16.18,13367138.13,,60,0,3788 -dijkstra,board,10,ok,2,30,898,13.71,11884450.43,,63,9,3788 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +dijkstra,board,1,ok,2,6,1130,4.79,2743308.28,2627510.65,50,1,,52,1,3788 +dijkstra,board,2,ok,2,6,1130,6.89,4339693.62,4223865.43,58,1,,60,1,3788 +dijkstra,board,3,ok,2,6,1130,5.31,1380999.42,1265122.25,96,0,,97,0,3788 +dijkstra,board,4,ok,2,6,1130,19.01,16484110.2,16368265.97,74,0,,75,0,3788 +dijkstra,board,5,ok,2,6,1130,14.89,12411494.81,12295660.48,61,4,,66,4,3788 +dijkstra,board,6,ok,2,6,1130,6.98,5181736.67,5065919.58,60,1,,62,1,3788 +dijkstra,board,7,ok,2,6,1130,10.8,9166414.31,9050596.44,60,0,,61,0,3788 +dijkstra,board,8,ok,2,6,1130,14.21,11603642.26,11487792.32,76,7,,85,7,3788 +dijkstra,board,9,ok,2,6,1130,16.11,13353344.35,13237535.45,60,0,,61,0,3788 +dijkstra,board,10,ok,2,6,1130,13.51,11874394.02,11758589.55,55,9,,65,9,3788 diff --git a/results/intermittent/dijkstra/schematicO3.csv b/results/intermittent/dijkstra/schematicO3.csv index 882f73fb..0624acac 100644 --- a/results/intermittent/dijkstra/schematicO3.csv +++ b/results/intermittent/dijkstra/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -dijkstra,board,1,ok,2,6,762,2.27,127350.98,,10,0,3788 -dijkstra,board,2,ok,2,6,762,3.24,567140.66,,11,0,3788 -dijkstra,board,3,ok,2,6,762,4.19,183765.91,,14,0,3788 -dijkstra,board,4,ok,2,6,762,5.17,2623257.28,,12,0,3788 -dijkstra,board,5,ok,2,6,762,4.47,1872368.39,,12,0,3788 -dijkstra,board,6,ok,2,6,762,2.77,881052.58,,12,0,3788 -dijkstra,board,7,ok,2,6,762,3.83,2053596.08,,13,0,3788 -dijkstra,board,8,ok,2,6,762,3.63,891238.7,,14,0,3788 -dijkstra,board,9,ok,2,6,762,3.78,942710.75,,11,0,3788 -dijkstra,board,10,ok,2,6,762,1.93,116623.14,,9,0,3788 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +dijkstra,board,1,ok,2,2,2927,2.19,127240.53,97446.33,9,0,,10,0,3788 +dijkstra,board,2,ok,2,2,2927,3.09,566246.15,536451.96,10,0,,11,0,3788 +dijkstra,board,3,ok,2,2,2927,4.1,183760.46,153963.74,13,0,,14,0,3788 +dijkstra,board,4,ok,2,2,2927,5.09,2618957.99,2589160.92,11,0,,12,0,3788 +dijkstra,board,5,ok,2,2,2927,4.39,1869326.25,1839530.27,11,0,,12,0,3788 +dijkstra,board,6,ok,2,2,2927,2.69,879765.2,849970.48,11,0,,12,0,3788 +dijkstra,board,7,ok,2,2,2927,3.79,2053820.69,2024022.59,12,0,,13,0,3788 +dijkstra,board,8,ok,2,2,2927,3.38,890259.66,860462.13,12,0,,14,0,3788 +dijkstra,board,9,ok,2,2,2927,3.69,931251.36,901459.42,9,0,,10,0,3788 +dijkstra,board,10,ok,2,2,2927,1.81,116279.62,86489.09,8,0,,9,0,3788 diff --git a/results/intermittent/poly1305/milp.csv b/results/intermittent/poly1305/milp.csv index ea6ee778..ec479c63 100644 --- a/results/intermittent/poly1305/milp.csv +++ b/results/intermittent/poly1305/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,2,43,846,12.31,10186419.47,,132,4,68 -poly1305,board,2,ok,2,43,846,12.39,9698613.58,,131,2,68 -poly1305,board,3,ok,2,43,846,9.11,5156484.78,,129,1,68 -poly1305,board,4,ok,2,43,846,37.5,34911556.37,,135,7,68 -poly1305,board,5,ok,2,43,846,32.39,29744006.32,,137,9,68 -poly1305,board,6,ok,2,43,846,13.91,12035795.43,,130,2,68 -poly1305,board,7,ok,2,43,846,24.68,22958834.04,,128,0,68 -poly1305,board,8,ok,2,43,846,31.29,28632237.9,,148,18,68 -poly1305,board,9,ok,2,43,846,38.71,35851737.93,,137,8,68 -poly1305,board,10,ok,2,43,846,37.29,35479686.01,,155,27,68 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +poly1305,board,1,ok,2,27,1829,12.3,10185522.5,9691945.98,127,4,,132,4,68 +poly1305,board,2,ok,2,27,1829,12.21,9704329.28,9210732.93,128,2,,131,2,68 +poly1305,board,3,ok,2,27,1829,9.09,5158572.24,4664948.59,127,1,,129,1,68 +poly1305,board,4,ok,2,27,1829,39.17,36678855.67,36185245.19,127,5,,133,5,68 +poly1305,board,5,ok,2,27,1829,32.38,29774359.11,29280767.41,128,9,,138,9,68 +poly1305,board,6,ok,2,27,1829,13.78,11922830.53,11429242.57,127,3,,131,3,68 +poly1305,board,7,ok,2,27,1829,24.69,22962988.22,22469397.29,127,0,,128,0,68 +poly1305,board,8,ok,2,27,1829,31.2,28597603.49,28104006.68,128,18,,148,18,68 +poly1305,board,9,ok,2,27,1829,36.09,33339672.33,32846074.15,128,10,,139,10,68 +poly1305,board,10,ok,2,27,1829,33.38,31671427.12,31177854.23,127,24,,152,24,68 diff --git a/results/intermittent/poly1305/rockclimb.csv b/results/intermittent/poly1305/rockclimb.csv index c8ea3028..3ef27783 100644 --- a/results/intermittent/poly1305/rockclimb.csv +++ b/results/intermittent/poly1305/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,4,62,0,25.09,22901012.68,,318,9,68 -poly1305,board,2,ok,4,62,0,30.98,28325072.78,,422,7,68 -poly1305,board,3,ok,4,62,0,28.37,24436347.62,,662,6,68 -poly1305,board,4,ok,4,62,0,116.11,113494025.93,,522,0,68 -poly1305,board,5,ok,4,62,0,81.97,79379089.82,,405,25,68 -poly1305,board,6,ok,4,62,0,36.6,34717649.3,,387,7,68 -poly1305,board,7,ok,4,62,0,62.59,60789844.59,,395,0,68 -poly1305,board,8,ok,4,62,0,88.21,85563767.52,,560,55,68 -poly1305,board,9,ok,4,62,0,88.72,85904459.62,,367,0,68 -poly1305,board,10,ok,4,62,0,80.69,78850926.62,,385,60,68 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +poly1305,board,1,ok,4,5,0,25.58,23532335.06,22746348.91,312,9,,322,9,68 +poly1305,board,2,ok,4,5,0,30.6,27996715.05,27210578.99,399,7,,407,7,68 +poly1305,board,3,ok,4,5,0,28.17,24230100.76,23443576.48,644,6,,651,6,68 +poly1305,board,4,ok,4,5,0,118.62,116068284.53,115281980.76,517,0,,518,0,68 +poly1305,board,5,ok,4,5,0,81.89,79376036.5,78589878.42,381,25,,407,25,68 +poly1305,board,6,ok,4,5,0,34.47,32610174.65,31824062.98,376,6,,383,6,68 +poly1305,board,7,ok,4,5,0,61.71,60110341.36,59324252.29,384,0,,385,0,68 +poly1305,board,8,ok,4,5,0,88.1,85522662.27,84736258.39,507,55,,564,55,68 +poly1305,board,9,ok,4,5,0,86.21,83403334.19,82617315.39,361,0,,362,0,68 +poly1305,board,10,ok,4,5,0,76.79,75011310.64,74225274.7,328,57,,386,57,68 diff --git a/results/intermittent/poly1305/schematic.csv b/results/intermittent/poly1305/schematic.csv index b06e6e3e..ec6ea654 100644 --- a/results/intermittent/poly1305/schematic.csv +++ b/results/intermittent/poly1305/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,4,37,685,22.41,20240938.56,,273,8,68 -poly1305,board,2,ok,4,37,685,23.1,20504808.92,,285,5,68 -poly1305,board,3,ok,4,37,685,17.02,13019410.24,,329,3,68 -poly1305,board,4,ok,4,37,685,76.79,74160240.72,,311,4,68 -poly1305,board,5,ok,4,37,685,61.62,58980981.61,,293,19,68 -poly1305,board,6,ok,4,37,685,28.43,26513788.96,,278,6,68 -poly1305,board,7,ok,4,37,685,45.4,43629838.82,,271,0,68 -poly1305,board,8,ok,4,37,685,59.0,56332233.93,,319,36,68 -poly1305,board,9,ok,4,37,685,71.22,68338231.91,,300,18,68 -poly1305,board,10,ok,4,37,685,65.02,63144228.77,,308,48,68 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +poly1305,board,1,ok,4,5,773,22.21,20228395.28,19538872.67,260,8,,269,8,68 +poly1305,board,2,ok,4,5,773,22.9,20345723.31,19656161.52,275,5,,281,5,68 +poly1305,board,3,ok,4,5,773,16.91,13011525.95,12321853.67,331,3,,335,3,68 +poly1305,board,4,ok,4,5,773,71.4,68901889.17,68212277.06,296,1,,298,1,68 +poly1305,board,5,ok,4,5,773,63.31,60779195.02,60089606.19,271,19,,291,19,68 +poly1305,board,6,ok,4,5,773,28.67,26862479.85,26172939.58,279,7,,287,7,68 +poly1305,board,7,ok,4,5,773,45.58,43825711.54,43136162.81,275,0,,276,0,68 +poly1305,board,8,ok,4,5,773,60.4,57766472.42,57076861.62,277,37,,316,37,68 +poly1305,board,9,ok,4,5,773,71.12,68360575.75,67670995.74,280,20,,301,20,68 +poly1305,board,10,ok,4,5,773,64.83,63054810.33,62365275.85,258,48,,307,48,68 diff --git a/results/intermittent/poly1305/schematicO3.csv b/results/intermittent/poly1305/schematicO3.csv index e91174ef..affe6ca6 100644 --- a/results/intermittent/poly1305/schematicO3.csv +++ b/results/intermittent/poly1305/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,1,3,628,15.69,13505235.79,,185,5,68 -poly1305,board,2,ok,1,3,628,16.49,13874007.01,,190,3,68 -poly1305,board,3,ok,1,3,628,13.28,9232583.0,,243,2,68 -poly1305,board,4,ok,1,3,628,55.79,53231407.51,,197,0,68 -poly1305,board,5,ok,1,3,628,47.91,45258373.25,,215,14,68 -poly1305,board,6,ok,1,3,628,22.01,20093085.16,,204,5,68 -poly1305,board,7,ok,1,3,628,38.5,36675544.9,,215,0,68 -poly1305,board,8,ok,1,3,628,49.65,47012715.18,,251,30,68 -poly1305,board,9,ok,1,3,628,51.2,48373550.92,,198,7,68 -poly1305,board,10,ok,1,3,628,45.41,43537404.84,,215,33,68 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +poly1305,board,1,ok,1,1,816,15.59,13504204.79,12952900.15,179,5,,185,5,68 +poly1305,board,2,ok,1,1,816,16.2,13844204.01,13292874.61,187,3,,191,3,68 +poly1305,board,3,ok,1,1,816,13.07,9215343.01,8663916.14,238,2,,241,2,68 +poly1305,board,4,ok,1,1,816,53.1,50594541.07,50043200.82,188,0,,189,0,68 +poly1305,board,5,ok,1,1,816,46.01,43454015.59,42902638.26,199,14,,214,14,68 +poly1305,board,6,ok,1,1,816,21.92,20099002.63,19547656.33,201,5,,207,5,68 +poly1305,board,7,ok,1,1,816,34.69,32952166.26,32400833.43,190,0,,191,0,68 +poly1305,board,8,ok,1,1,816,46.51,43960866.03,43409458.28,214,28,,244,28,68 +poly1305,board,9,ok,1,1,816,51.09,48355517.26,47804185.29,195,7,,203,7,68 +poly1305,board,10,ok,1,1,816,45.21,43482013.03,42930674.25,182,33,,216,33,68 diff --git a/results/intermittent/qsort/milp.csv b/results/intermittent/qsort/milp.csv index 0f8f4341..f325ea1e 100644 --- a/results/intermittent/qsort/milp.csv +++ b/results/intermittent/qsort/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -qsort,board,1,ok,3,26,692,2.33,139078.2,,11,0,9987 -qsort,board,2,ok,3,26,692,3.23,615138.9,,13,0,9987 -qsort,board,3,ok,3,26,692,4.13,151393.6,,11,0,9987 -qsort,board,4,ok,3,26,692,5.98,3386574.07,,13,0,9987 -qsort,board,5,ok,3,26,692,4.49,1862109.66,,12,0,9987 -qsort,board,6,ok,3,26,692,2.6,723980.46,,12,0,9987 -qsort,board,7,ok,3,26,692,3.93,2045983.92,,13,0,9987 -qsort,board,8,ok,3,26,692,3.58,906885.24,,15,0,9987 -qsort,board,9,ok,3,26,692,3.79,945500.94,,11,0,9987 -qsort,board,10,ok,3,26,692,1.99,128090.11,,10,0,9987 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +qsort,board,1,ok,3,28,726,2.27,138794.36,108730.8,10,0,,11,0,9987 +qsort,board,2,ok,3,28,726,3.08,567495.81,537432.02,10,0,,11,0,9987 +qsort,board,3,ok,3,28,726,4.01,162310.43,132243.33,11,0,,12,0,9987 +qsort,board,4,ok,3,28,726,5.9,3400645.54,3370576.64,13,0,,14,0,9987 +qsort,board,5,ok,3,28,726,4.31,1883312.17,1853248.31,11,0,,12,0,9987 +qsort,board,6,ok,3,28,726,2.59,722374.35,692309.29,11,0,,12,0,9987 +qsort,board,7,ok,3,28,726,3.77,2045106.4,2015041.83,11,0,,12,0,9987 +qsort,board,8,ok,3,28,726,3.48,890827.11,860757.27,14,0,,16,0,9987 +qsort,board,9,ok,3,28,726,3.69,943839.17,913775.21,10,0,,11,0,9987 +qsort,board,10,ok,3,28,726,1.88,127885.79,97825.5,9,0,,10,0,9987 diff --git a/results/intermittent/qsort/rockclimb.csv b/results/intermittent/qsort/rockclimb.csv index 0cb8bac7..0e5b4599 100644 --- a/results/intermittent/qsort/rockclimb.csv +++ b/results/intermittent/qsort/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -qsort,board,1,ok,5,5,0,9.9,7718952.35,,106,3,9987 -qsort,board,2,ok,5,5,0,12.11,9500086.57,,154,2,9987 -qsort,board,3,ok,5,5,0,12.51,8517686.52,,250,2,9987 -qsort,board,4,ok,5,5,0,45.3,42719466.5,,206,0,9987 -qsort,board,5,ok,5,5,0,30.59,27966328.1,,143,9,9987 -qsort,board,6,ok,5,5,0,13.42,11495256.59,,133,2,9987 -qsort,board,7,ok,5,5,0,24.29,22510934.86,,136,0,9987 -qsort,board,8,ok,5,5,0,32.63,30083872.14,,199,19,9987 -qsort,board,9,ok,5,5,0,33.73,30861840.85,,130,0,9987 -qsort,board,10,ok,5,5,0,29.43,27607477.15,,130,21,9987 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +qsort,board,1,ok,5,1,0,9.79,7710185.72,7356144.71,100,3,,104,3,9987 +qsort,board,2,ok,5,1,0,11.29,8733448.49,8379350.02,133,2,,136,2,9987 +qsort,board,3,ok,5,1,0,12.21,8301897.73,7947597.19,233,2,,236,2,9987 +qsort,board,4,ok,5,1,0,42.67,40144376.43,39790154.78,204,0,,205,0,9987 +qsort,board,5,ok,5,1,0,30.49,27963252.52,27609172.35,128,9,,138,9,9987 +qsort,board,6,ok,5,1,0,13.2,11457908.36,11103771.23,132,2,,135,2,9987 +qsort,board,7,ok,5,1,0,22.5,20888846.25,20534771.59,132,0,,133,0,9987 +qsort,board,8,ok,5,1,0,32.7,30074318.54,29720150.66,178,19,,199,19,9987 +qsort,board,9,ok,5,1,0,33.6,30842162.72,30488056.45,131,0,,132,0,9987 +qsort,board,10,ok,5,1,0,25.58,23838904.63,23484825.58,108,18,,127,18,9987 diff --git a/results/intermittent/qsort/schematic.csv b/results/intermittent/qsort/schematic.csv index 943b96b0..529599f8 100644 --- a/results/intermittent/qsort/schematic.csv +++ b/results/intermittent/qsort/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -qsort,board,1,ok,2,6,1028,2.42,219506.29,,17,0,9987 -qsort,board,2,ok,2,6,1028,3.39,729836.36,,21,0,9987 -qsort,board,3,ok,2,6,1028,4.4,363841.01,,30,0,9987 -qsort,board,4,ok,2,6,1028,8.6,6027893.4,,31,0,9987 -qsort,board,5,ok,2,6,1028,5.83,3203136.42,,24,1,9987 -qsort,board,6,ok,2,6,1028,3.09,1142949.32,,23,0,9987 -qsort,board,7,ok,2,6,1028,5.3,3488166.86,,23,0,9987 -qsort,board,8,ok,2,6,1028,5.13,2406261.07,,27,1,9987 -qsort,board,9,ok,2,6,1028,6.29,3414143.9,,19,0,9987 -qsort,board,10,ok,2,6,1028,5.76,3966556.7,,22,3,9987 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +qsort,board,1,ok,2,2,920,2.27,219496.23,174488.43,16,0,,17,0,9987 +qsort,board,2,ok,2,2,920,3.22,730715.33,685703.15,19,0,,20,0,9987 +qsort,board,3,ok,2,2,920,4.3,341197.84,296170.83,27,0,,28,0,9987 +qsort,board,4,ok,2,2,920,8.49,6027990.73,5982962.18,31,0,,32,0,9987 +qsort,board,5,ok,2,2,920,5.69,3177525.79,3132506.24,21,1,,23,1,9987 +qsort,board,6,ok,2,2,920,2.91,1131826.13,1086808.61,21,0,,22,0,9987 +qsort,board,7,ok,2,2,920,5.18,3486078.85,3441060.46,23,0,,24,0,9987 +qsort,board,8,ok,2,2,920,5.0,2414724.51,2369697.16,24,1,,27,1,9987 +qsort,board,9,ok,2,2,920,6.19,3411114.44,3366100.62,19,0,,20,0,9987 +qsort,board,10,ok,2,2,920,5.67,3953895.86,3908883.73,18,3,,22,3,9987 diff --git a/results/intermittent/qsort/schematicO3.csv b/results/intermittent/qsort/schematicO3.csv index 5242d46f..b77a8221 100644 --- a/results/intermittent/qsort/schematicO3.csv +++ b/results/intermittent/qsort/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -qsort,board,1,ok,1,4,840,2.32,193562.09,,15,0,9987 -qsort,board,2,ok,1,4,840,3.42,715616.44,,21,0,9987 -qsort,board,3,ok,1,4,840,4.34,304856.45,,25,0,9987 -qsort,board,4,ok,1,4,840,6.65,4090664.05,,26,0,9987 -qsort,board,5,ok,1,4,840,5.81,3164987.22,,21,1,9987 -qsort,board,6,ok,1,4,840,2.98,1104272.28,,22,0,9987 -qsort,board,7,ok,1,4,840,4.83,3065633.83,,20,0,9987 -qsort,board,8,ok,1,4,840,5.08,2378367.02,,26,1,9987 -qsort,board,9,ok,1,4,840,6.23,3396676.62,,19,0,9987 -qsort,board,10,ok,1,4,840,2.02,193884.03,,15,0,9987 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +qsort,board,1,ok,1,2,822,2.27,193559.09,152452.82,14,0,,15,0,9987 +qsort,board,2,ok,1,2,822,3.29,704043.02,662928.5,18,0,,19,0,9987 +qsort,board,3,ok,1,2,822,4.19,304765.35,263642.02,24,0,,25,0,9987 +qsort,board,4,ok,1,2,822,6.59,4079416.85,4038294.4,22,0,,23,0,9987 +qsort,board,5,ok,1,2,822,5.7,3167734.07,3126611.37,20,1,,22,1,9987 +qsort,board,6,ok,1,2,822,2.91,1116791.15,1075670.85,20,0,,21,0,9987 +qsort,board,7,ok,1,2,822,4.77,3060650.1,3019533.25,19,0,,20,0,9987 +qsort,board,8,ok,1,2,822,4.88,2380466.66,2339340.4,22,1,,25,1,9987 +qsort,board,9,ok,1,2,822,6.1,3381808.97,3340692.1,17,0,,18,0,9987 +qsort,board,10,ok,1,2,822,1.97,193971.82,152859.43,14,0,,15,0,9987 diff --git a/results/intermittent/report.md b/results/intermittent/report.md index b77d9b86..b4079496 100644 --- a/results/intermittent/report.md +++ b/results/intermittent/report.md @@ -8,28 +8,28 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | algo | runs | complete | correct (of complete) | incomplete | mean waits | mean rec | mean t (s) | |---|---|---|---|---|---|---|---| -| milp | 130 | 130 | 130 | 0 | 23.6 | 0.9 | 3.16 | -| rockclimb | 130 | 130 | 130 | 0 | 315.7 | 12.1 | 44.41 | -| schematic | 130 | 130 | 130 | 0 | 126.0 | 5.2 | 17.88 | -| schematicO3 | 130 | 130 | 130 | 0 | 38.3 | 1.3 | 5.16 | +| milp | 130 | 130 | 130 | 0 | 23.9 | 0.9 | 3.13 | +| rockclimb | 130 | 130 | 130 | 0 | 312.2 | 11.9 | 43.57 | +| schematic | 130 | 130 | 130 | 0 | 125.2 | 5.1 | 17.58 | +| schematicO3 | 130 | 130 | 130 | 0 | 37.9 | 1.3 | 5.04 | ## Per benchmark: complete / correct / total waits / total rec / mean t (s) | benchmark (baseline result) | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes (107) | 10/10 / 10/10 / 264 / 13 / 3.69 | 10/10 / 10/10 / 2667 / 101 / 37.11 | 10/10 / 10/10 / 5922 / 268 / 89.23 | 10/10 / 10/10 / 687 / 23 / 9.10 | -| crc (20431) | 10/10 / 10/10 / 72 / 1 / 0.78 | 10/10 / 10/10 / 952 / 34 / 12.95 | 10/10 / 10/10 / 1863 / 68 / 25.19 | 10/10 / 10/10 / 82 / 1 / 0.79 | -| rsa (32) | 10/10 / 10/10 / 170 / 4 / 1.77 | 10/10 / 10/10 / 6141 / 239 / 87.95 | 10/10 / 10/10 / 620 / 18 / 7.63 | 10/10 / 10/10 / 274 / 7 / 3.39 | -| dijkstra (3788) | 10/10 / 10/10 / 98 / 1 / 0.88 | 10/10 / 10/10 / 7625 / 301 / 108.80 | 10/10 / 10/10 / 686 / 23 / 9.08 | 10/10 / 10/10 / 118 / 0 / 1.03 | -| qsort (9987) | 10/10 / 10/10 / 121 / 0 / 1.09 | 10/10 / 10/10 / 1587 / 58 / 21.90 | 10/10 / 10/10 / 237 / 5 / 2.50 | 10/10 / 10/10 / 210 / 2 / 1.86 | -| activity_recognition (64) | 10/10 / 10/10 / 129 / 0 / 1.30 | 10/10 / 10/10 / 726 / 26 / 9.67 | 10/10 / 10/10 / 582 / 18 / 7.28 | 10/10 / 10/10 / 174 / 2 / 1.77 | -| bitcount (14121) | 10/10 / 10/10 / 91 / 0 / 0.84 | 10/10 / 10/10 / 4178 / 159 / 59.04 | 10/10 / 10/10 / 444 / 12 / 5.45 | 10/10 / 10/10 / 103 / 0 / 0.99 | -| chacha20 (79) | 10/10 / 10/10 / 116 / 2 / 1.35 | 10/10 / 10/10 / 635 / 19 / 8.08 | 10/10 / 10/10 / 360 / 16 / 4.90 | 10/10 / 10/10 / 255 / 8 / 3.39 | -| sensor_fusion (613) | 10/10 / 10/10 / 113 / 0 / 1.00 | 10/10 / 10/10 / 126 / 0 / 1.12 | 10/10 / 10/10 / 166 / 1 / 1.62 | 10/10 / 10/10 / 168 / 2 / 1.75 | -| poly1305 (68) | 10/10 / 10/10 / 1362 / 78 / 22.47 | 10/10 / 10/10 / 4423 / 169 / 61.44 | 10/10 / 10/10 / 2967 / 147 / 44.49 | 10/10 / 10/10 / 2113 / 99 / 33.08 | -| cuckoo_filter (4048) | 10/10 / 10/10 / 145 / 1 / 1.40 | 10/10 / 10/10 / 1888 / 71 / 26.07 | 10/10 / 10/10 / 1358 / 60 / 19.55 | 10/10 / 10/10 / 221 / 8 / 2.55 | -| sha256 (131) | 10/10 / 10/10 / 186 / 11 / 2.67 | 10/10 / 10/10 / 1093 / 35 / 13.93 | 10/10 / 10/10 / 471 / 19 / 6.19 | 10/10 / 10/10 / 348 / 16 / 4.86 | -| stringsearch (20) | 10/10 / 10/10 / 197 / 2 / 1.85 | 10/10 / 10/10 / 9005 / 355 / 129.31 | 10/10 / 10/10 / 700 / 27 / 9.38 | 10/10 / 10/10 / 231 / 5 / 2.45 | +| aes (107) | 10/10 / 10/10 / 264 / 13 / 3.67 | 10/10 / 10/10 / 2643 / 97 / 35.60 | 10/10 / 10/10 / 5859 / 258 / 87.20 | 10/10 / 10/10 / 681 / 23 / 8.83 | +| crc (20431) | 10/10 / 10/10 / 72 / 1 / 0.59 | 10/10 / 10/10 / 951 / 34 / 12.95 | 10/10 / 10/10 / 1850 / 67 / 24.69 | 10/10 / 10/10 / 82 / 1 / 0.87 | +| rsa (32) | 10/10 / 10/10 / 220 / 7 / 2.45 | 10/10 / 10/10 / 5999 / 238 / 85.25 | 10/10 / 10/10 / 616 / 18 / 7.63 | 10/10 / 10/10 / 273 / 7 / 3.47 | +| dijkstra (3788) | 10/10 / 10/10 / 97 / 0 / 0.87 | 10/10 / 10/10 / 7558 / 296 / 106.57 | 10/10 / 10/10 / 684 / 23 / 8.85 | 10/10 / 10/10 / 117 / 0 / 1.02 | +| qsort (9987) | 10/10 / 10/10 / 121 / 0 / 1.09 | 10/10 / 10/10 / 1545 / 55 / 21.00 | 10/10 / 10/10 / 235 / 5 / 2.49 | 10/10 / 10/10 / 203 / 2 / 1.86 | +| activity_recognition (64) | 10/10 / 10/10 / 129 / 0 / 1.29 | 10/10 / 10/10 / 718 / 26 / 9.86 | 10/10 / 10/10 / 580 / 17 / 7.28 | 10/10 / 10/10 / 172 / 3 / 1.77 | +| bitcount (14121) | 10/10 / 10/10 / 90 / 0 / 0.81 | 10/10 / 10/10 / 4164 / 160 / 59.32 | 10/10 / 10/10 / 447 / 12 / 5.44 | 10/10 / 10/10 / 104 / 0 / 1.00 | +| chacha20 (79) | 10/10 / 10/10 / 115 / 2 / 1.30 | 10/10 / 10/10 / 626 / 18 / 7.64 | 10/10 / 10/10 / 356 / 15 / 4.89 | 10/10 / 10/10 / 252 / 8 / 3.38 | +| sensor_fusion (613) | 10/10 / 10/10 / 108 / 0 / 0.99 | 10/10 / 10/10 / 125 / 0 / 1.12 | 10/10 / 10/10 / 167 / 1 / 1.62 | 10/10 / 10/10 / 165 / 1 / 1.51 | +| poly1305 (68) | 10/10 / 10/10 / 1361 / 76 / 22.00 | 10/10 / 10/10 / 4385 / 165 / 60.79 | 10/10 / 10/10 / 2961 / 148 / 44.31 | 10/10 / 10/10 / 2081 / 97 / 31.95 | +| cuckoo_filter (4048) | 10/10 / 10/10 / 146 / 1 / 1.40 | 10/10 / 10/10 / 1898 / 71 / 25.94 | 10/10 / 10/10 / 1360 / 54 / 18.83 | 10/10 / 10/10 / 221 / 7 / 2.56 | +| sha256 (131) | 10/10 / 10/10 / 184 / 9 / 2.45 | 10/10 / 10/10 / 1073 / 35 / 13.64 | 10/10 / 10/10 / 464 / 18 / 6.21 | 10/10 / 10/10 / 348 / 15 / 4.85 | +| stringsearch (20) | 10/10 / 10/10 / 194 / 2 / 1.79 | 10/10 / 10/10 / 8905 / 346 / 126.74 | 10/10 / 10/10 / 691 / 23 / 9.09 | 10/10 / 10/10 / 232 / 5 / 2.45 | ## Per trace: waits by benchmark x algorithm (`inc` = incomplete) @@ -37,181 +37,181 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 26 | 181 | 460 | 56 | -| crc | 7 | 65 | 135 | 8 | -| rsa | 16 | 413 | 49 | 20 | -| dijkstra | 9 | 506 | 53 | 10 | -| qsort | 11 | 106 | 17 | 15 | -| activity_recognition | 11 | 49 | 45 | 14 | -| bitcount | 8 | 280 | 33 | 9 | +| aes | 26 | 179 | 459 | 56 | +| crc | 7 | 65 | 134 | 8 | +| rsa | 16 | 407 | 49 | 20 | +| dijkstra | 9 | 512 | 52 | 10 | +| qsort | 11 | 104 | 17 | 15 | +| activity_recognition | 11 | 49 | 44 | 14 | +| bitcount | 8 | 280 | 32 | 9 | | chacha20 | 11 | 46 | 34 | 22 | -| sensor_fusion | 9 | 10 | 14 | 12 | -| poly1305 | 132 | 318 | 273 | 185 | -| cuckoo_filter | 12 | 132 | 115 | 18 | -| sha256 | 18 | 74 | 37 | 35 | -| stringsearch | 15 | 601 | 57 | 17 | +| sensor_fusion | 8 | 10 | 14 | 12 | +| poly1305 | 132 | 322 | 269 | 185 | +| cuckoo_filter | 13 | 130 | 117 | 18 | +| sha256 | 18 | 74 | 38 | 35 | +| stringsearch | 14 | 594 | 55 | 16 | ### trace 2 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 25 | 246 | 562 | 63 | -| crc | 7 | 85 | 178 | 8 | -| rsa | 15 | 551 | 61 | 24 | -| dijkstra | 10 | 727 | 67 | 11 | -| qsort | 13 | 154 | 21 | 21 | -| activity_recognition | 13 | 69 | 57 | 16 | -| bitcount | 10 | 393 | 39 | 11 | -| chacha20 | 12 | 60 | 34 | 24 | +| aes | 25 | 248 | 554 | 62 | +| crc | 7 | 85 | 177 | 8 | +| rsa | 19 | 546 | 59 | 24 | +| dijkstra | 10 | 676 | 60 | 11 | +| qsort | 11 | 136 | 20 | 19 | +| activity_recognition | 13 | 66 | 55 | 16 | +| bitcount | 8 | 381 | 40 | 11 | +| chacha20 | 12 | 61 | 34 | 24 | | sensor_fusion | 12 | 12 | 16 | 16 | -| poly1305 | 131 | 422 | 285 | 190 | -| cuckoo_filter | 14 | 178 | 124 | 20 | -| sha256 | 18 | 104 | 48 | 33 | -| stringsearch | 18 | 813 | 66 | 22 | +| poly1305 | 131 | 407 | 281 | 191 | +| cuckoo_filter | 14 | 170 | 125 | 22 | +| sha256 | 18 | 99 | 45 | 33 | +| stringsearch | 19 | 804 | 68 | 21 | ### trace 3 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 25 | 417 | 786 | 93 | -| crc | 7 | 152 | 282 | 8 | -| rsa | 19 | 982 | 88 | 38 | -| dijkstra | 11 | 1208 | 98 | 14 | -| qsort | 11 | 250 | 30 | 25 | -| activity_recognition | 12 | 113 | 87 | 21 | -| bitcount | 7 | 664 | 64 | 9 | -| chacha20 | 11 | 98 | 37 | 28 | -| sensor_fusion | 13 | 14 | 20 | 21 | -| poly1305 | 129 | 662 | 329 | 243 | -| cuckoo_filter | 17 | 303 | 174 | 26 | -| sha256 | 17 | 178 | 63 | 33 | -| stringsearch | 24 | 1434 | 94 | 28 | +| aes | 25 | 409 | 768 | 92 | +| crc | 7 | 145 | 275 | 8 | +| rsa | 29 | 929 | 87 | 40 | +| dijkstra | 10 | 1210 | 97 | 14 | +| qsort | 12 | 236 | 28 | 25 | +| activity_recognition | 13 | 110 | 87 | 21 | +| bitcount | 7 | 663 | 63 | 9 | +| chacha20 | 11 | 96 | 37 | 28 | +| sensor_fusion | 13 | 14 | 20 | 20 | +| poly1305 | 129 | 651 | 335 | 241 | +| cuckoo_filter | 16 | 297 | 175 | 26 | +| sha256 | 18 | 172 | 61 | 33 | +| stringsearch | 24 | 1393 | 94 | 28 | ### trace 4 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 28 | 336 | 625 | 70 | -| crc | 8 | 118 | 213 | 9 | -| rsa | 19 | 781 | 67 | 32 | -| dijkstra | 10 | 946 | 72 | 12 | -| qsort | 13 | 206 | 31 | 26 | -| activity_recognition | 12 | 85 | 61 | 17 | -| bitcount | 9 | 538 | 50 | 10 | -| chacha20 | 12 | 71 | 36 | 25 | -| sensor_fusion | 11 | 14 | 17 | 20 | -| poly1305 | 135 | 522 | 311 | 197 | -| cuckoo_filter | 17 | 230 | 141 | 27 | -| sha256 | 19 | 135 | 48 | 34 | -| stringsearch | 22 | 1158 | 77 | 29 | +| aes | 27 | 330 | 615 | 69 | +| crc | 8 | 118 | 209 | 9 | +| rsa | 29 | 747 | 66 | 33 | +| dijkstra | 9 | 931 | 75 | 12 | +| qsort | 14 | 205 | 32 | 23 | +| activity_recognition | 12 | 90 | 64 | 18 | +| bitcount | 8 | 532 | 53 | 10 | +| chacha20 | 12 | 72 | 35 | 25 | +| sensor_fusion | 11 | 14 | 18 | 22 | +| poly1305 | 133 | 518 | 298 | 189 | +| cuckoo_filter | 16 | 234 | 139 | 24 | +| sha256 | 19 | 130 | 49 | 35 | +| stringsearch | 21 | 1170 | 71 | 30 | ### trace 5 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 27 | 235 | 602 | 68 | -| crc | 7 | 87 | 177 | 8 | -| rsa | 18 | 560 | 60 | 27 | -| dijkstra | 10 | 696 | 66 | 12 | -| qsort | 12 | 143 | 24 | 21 | -| activity_recognition | 13 | 67 | 55 | 19 | -| bitcount | 9 | 373 | 43 | 10 | -| chacha20 | 11 | 57 | 37 | 26 | -| sensor_fusion | 11 | 13 | 16 | 16 | -| poly1305 | 137 | 405 | 293 | 215 | -| cuckoo_filter | 12 | 171 | 133 | 22 | -| sha256 | 18 | 95 | 50 | 35 | -| stringsearch | 20 | 816 | 70 | 23 | +| aes | 27 | 237 | 585 | 64 | +| crc | 7 | 88 | 177 | 8 | +| rsa | 23 | 537 | 61 | 26 | +| dijkstra | 10 | 699 | 66 | 12 | +| qsort | 12 | 138 | 23 | 22 | +| activity_recognition | 14 | 64 | 54 | 18 | +| bitcount | 9 | 388 | 43 | 11 | +| chacha20 | 11 | 57 | 36 | 27 | +| sensor_fusion | 11 | 12 | 17 | 16 | +| poly1305 | 138 | 407 | 291 | 214 | +| cuckoo_filter | 13 | 170 | 132 | 23 | +| sha256 | 18 | 98 | 46 | 35 | +| stringsearch | 20 | 789 | 67 | 22 | ### trace 6 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 25 | 233 | 553 | 64 | -| crc | 7 | 81 | 161 | 8 | -| rsa | 15 | 525 | 54 | 23 | -| dijkstra | 9 | 652 | 59 | 12 | -| qsort | 12 | 133 | 23 | 22 | -| activity_recognition | 14 | 67 | 50 | 19 | -| bitcount | 10 | 352 | 38 | 11 | -| chacha20 | 11 | 54 | 33 | 24 | -| sensor_fusion | 12 | 14 | 16 | 17 | -| poly1305 | 130 | 387 | 278 | 204 | -| cuckoo_filter | 14 | 159 | 128 | 21 | -| sha256 | 17 | 93 | 39 | 33 | -| stringsearch | 20 | 758 | 64 | 22 | +| aes | 25 | 228 | 542 | 67 | +| crc | 7 | 83 | 162 | 8 | +| rsa | 17 | 526 | 54 | 23 | +| dijkstra | 9 | 646 | 62 | 12 | +| qsort | 12 | 135 | 22 | 21 | +| activity_recognition | 13 | 64 | 51 | 18 | +| bitcount | 10 | 352 | 39 | 12 | +| chacha20 | 11 | 55 | 33 | 23 | +| sensor_fusion | 11 | 14 | 17 | 18 | +| poly1305 | 131 | 383 | 287 | 207 | +| cuckoo_filter | 13 | 164 | 128 | 19 | +| sha256 | 17 | 91 | 39 | 33 | +| stringsearch | 19 | 758 | 66 | 22 | ### trace 7 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 25 | 236 | 534 | 63 | -| crc | 7 | 85 | 170 | 8 | -| rsa | 16 | 542 | 58 | 26 | -| dijkstra | 10 | 665 | 62 | 13 | -| qsort | 13 | 136 | 23 | 20 | -| activity_recognition | 14 | 64 | 53 | 18 | -| bitcount | 9 | 366 | 42 | 11 | -| chacha20 | 11 | 58 | 35 | 24 | -| sensor_fusion | 12 | 13 | 18 | 18 | -| poly1305 | 128 | 395 | 271 | 215 | -| cuckoo_filter | 15 | 162 | 127 | 21 | -| sha256 | 17 | 93 | 42 | 33 | -| stringsearch | 21 | 809 | 62 | 20 | +| aes | 25 | 229 | 536 | 62 | +| crc | 7 | 86 | 166 | 8 | +| rsa | 20 | 514 | 57 | 24 | +| dijkstra | 10 | 640 | 61 | 13 | +| qsort | 12 | 133 | 24 | 20 | +| activity_recognition | 13 | 62 | 51 | 17 | +| bitcount | 9 | 354 | 41 | 10 | +| chacha20 | 11 | 55 | 34 | 23 | +| sensor_fusion | 11 | 13 | 17 | 15 | +| poly1305 | 128 | 385 | 276 | 191 | +| cuckoo_filter | 15 | 171 | 126 | 22 | +| sha256 | 17 | 93 | 45 | 33 | +| stringsearch | 20 | 791 | 61 | 23 | ### trace 8 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 29 | 339 | 726 | 84 | -| crc | 8 | 124 | 232 | 9 | -| rsa | 19 | 797 | 75 | 34 | -| dijkstra | 11 | 990 | 86 | 14 | -| qsort | 15 | 199 | 27 | 26 | -| activity_recognition | 17 | 94 | 74 | 22 | -| bitcount | 12 | 541 | 56 | 14 | -| chacha20 | 13 | 81 | 37 | 31 | -| sensor_fusion | 15 | 16 | 19 | 21 | -| poly1305 | 148 | 560 | 319 | 251 | -| cuckoo_filter | 17 | 246 | 158 | 24 | -| sha256 | 23 | 140 | 54 | 37 | -| stringsearch | 24 | 1176 | 78 | 28 | +| aes | 29 | 342 | 725 | 81 | +| crc | 8 | 124 | 230 | 9 | +| rsa | 26 | 797 | 76 | 32 | +| dijkstra | 12 | 992 | 85 | 14 | +| qsort | 16 | 199 | 27 | 25 | +| activity_recognition | 17 | 92 | 73 | 21 | +| bitcount | 14 | 541 | 55 | 14 | +| chacha20 | 13 | 75 | 37 | 31 | +| sensor_fusion | 14 | 16 | 19 | 19 | +| poly1305 | 148 | 564 | 316 | 244 | +| cuckoo_filter | 18 | 248 | 158 | 25 | +| sha256 | 20 | 138 | 56 | 37 | +| stringsearch | 25 | 1153 | 81 | 27 | ### trace 9 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 26 | 217 | 528 | 60 | -| crc | 7 | 78 | 154 | 8 | -| rsa | 18 | 491 | 53 | 25 | -| dijkstra | 9 | 612 | 60 | 11 | -| qsort | 11 | 130 | 19 | 19 | -| activity_recognition | 12 | 60 | 50 | 15 | -| bitcount | 9 | 333 | 38 | 9 | -| chacha20 | 13 | 58 | 38 | 25 | -| sensor_fusion | 9 | 10 | 16 | 15 | -| poly1305 | 137 | 367 | 300 | 198 | -| cuckoo_filter | 15 | 154 | 123 | 20 | -| sha256 | 19 | 93 | 46 | 36 | -| stringsearch | 18 | 709 | 64 | 20 | +| aes | 27 | 221 | 526 | 62 | +| crc | 7 | 80 | 155 | 8 | +| rsa | 20 | 485 | 51 | 26 | +| dijkstra | 9 | 620 | 61 | 10 | +| qsort | 11 | 132 | 20 | 18 | +| activity_recognition | 12 | 60 | 52 | 16 | +| bitcount | 9 | 327 | 40 | 9 | +| chacha20 | 12 | 56 | 37 | 24 | +| sensor_fusion | 9 | 10 | 15 | 15 | +| poly1305 | 139 | 362 | 301 | 203 | +| cuckoo_filter | 15 | 155 | 126 | 20 | +| sha256 | 19 | 91 | 41 | 35 | +| stringsearch | 18 | 716 | 63 | 21 | ### trace 10 | benchmark | milp | rockclimb | schematic | schematicO3 | |---|---|---|---|---| -| aes | 28 | 227 | 546 | 66 | -| crc | 7 | 77 | 161 | 8 | -| rsa | 15 | 499 | 55 | 25 | -| dijkstra | 9 | 623 | 63 | 9 | -| qsort | 10 | 130 | 22 | 15 | -| activity_recognition | 11 | 58 | 50 | 13 | -| bitcount | 8 | 338 | 41 | 9 | -| chacha20 | 11 | 52 | 39 | 26 | -| sensor_fusion | 9 | 10 | 14 | 12 | -| poly1305 | 155 | 385 | 308 | 215 | -| cuckoo_filter | 12 | 153 | 135 | 22 | -| sha256 | 20 | 88 | 44 | 39 | -| stringsearch | 15 | 731 | 68 | 22 | +| aes | 28 | 220 | 549 | 66 | +| crc | 7 | 77 | 165 | 8 | +| rsa | 21 | 511 | 56 | 25 | +| dijkstra | 9 | 632 | 65 | 9 | +| qsort | 10 | 127 | 22 | 15 | +| activity_recognition | 11 | 61 | 49 | 13 | +| bitcount | 8 | 346 | 41 | 9 | +| chacha20 | 11 | 53 | 39 | 25 | +| sensor_fusion | 8 | 10 | 14 | 12 | +| poly1305 | 152 | 386 | 307 | 216 | +| cuckoo_filter | 13 | 159 | 134 | 22 | +| sha256 | 20 | 87 | 44 | 39 | +| stringsearch | 14 | 737 | 65 | 22 | ## Per benchmark x algorithm x trace @@ -219,116 +219,116 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=26 rec=1 t=0.97s | ok w=25 rec=0 t=0.89s | ok w=25 rec=0 t=0.56s | ok w=28 rec=3 t=6.09s | ok w=27 rec=2 t=6.22s | ok w=25 rec=0 t=1.24s | ok w=25 rec=0 t=5.51s | ok w=29 rec=3 t=5.46s | ok w=26 rec=1 t=5.88s | ok w=28 rec=3 t=4.10s | -| rockclimb | ok w=181 rec=5 t=13.47s | ok w=246 rec=4 t=16.50s | ok w=417 rec=4 t=15.80s | ok w=336 rec=0 t=68.91s | ok w=235 rec=15 t=48.38s | ok w=233 rec=4 t=21.29s | ok w=236 rec=0 t=36.84s | ok w=339 rec=33 t=51.75s | ok w=217 rec=0 t=50.91s | ok w=227 rec=36 t=47.29s | -| schematic | ok w=460 rec=14 t=35.36s | ok w=562 rec=11 t=43.74s | ok w=786 rec=8 t=32.59s | ok w=625 rec=0 t=152.78s | ok w=602 rec=39 t=122.74s | ok w=553 rec=10 t=52.71s | ok w=534 rec=0 t=88.86s | ok w=726 rec=81 t=125.66s | ok w=528 rec=18 t=123.41s | ok w=546 rec=87 t=114.44s | -| schematicO3 | ok w=56 rec=1 t=3.40s | ok w=63 rec=1 t=4.46s | ok w=93 rec=0 t=1.40s | ok w=70 rec=0 t=16.50s | ok w=68 rec=4 t=12.45s | ok w=64 rec=1 t=5.83s | ok w=63 rec=0 t=10.00s | ok w=84 rec=7 t=11.62s | ok w=60 rec=0 t=13.40s | ok w=66 rec=9 t=11.91s | +| milp | ok w=26 rec=1 t=0.96s | ok w=25 rec=0 t=0.89s | ok w=25 rec=0 t=0.56s | ok w=27 rec=2 t=6.09s | ok w=27 rec=2 t=6.20s | ok w=25 rec=0 t=1.25s | ok w=25 rec=0 t=5.33s | ok w=29 rec=3 t=5.43s | ok w=27 rec=2 t=5.87s | ok w=28 rec=3 t=4.08s | +| rockclimb | ok w=179 rec=5 t=13.44s | ok w=248 rec=4 t=16.38s | ok w=409 rec=3 t=13.21s | ok w=330 rec=0 t=63.69s | ok w=237 rec=15 t=46.58s | ok w=228 rec=4 t=20.18s | ok w=229 rec=0 t=36.43s | ok w=342 rec=33 t=51.73s | ok w=221 rec=0 t=50.86s | ok w=220 rec=33 t=43.50s | +| schematic | ok w=459 rec=14 t=35.29s | ok w=554 rec=10 t=40.87s | ok w=768 rec=8 t=32.15s | ok w=615 rec=0 t=146.72s | ok w=585 rec=38 t=117.82s | ok w=542 rec=11 t=51.11s | ok w=536 rec=0 t=88.63s | ok w=725 rec=81 t=125.57s | ok w=526 rec=12 t=123.37s | ok w=549 rec=84 t=110.47s | +| schematicO3 | ok w=56 rec=1 t=3.40s | ok w=62 rec=1 t=4.45s | ok w=92 rec=0 t=1.37s | ok w=69 rec=0 t=14.55s | ok w=64 rec=4 t=12.40s | ok w=67 rec=1 t=5.20s | ok w=62 rec=0 t=10.00s | ok w=81 rec=7 t=11.62s | ok w=62 rec=0 t=13.40s | ok w=66 rec=9 t=11.90s | ### crc (baseline result 20431) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=7 rec=0 t=0.10s | ok w=7 rec=0 t=0.54s | ok w=7 rec=0 t=0.12s | ok w=8 rec=1 t=0.84s | ok w=7 rec=0 t=1.84s | ok w=7 rec=0 t=0.67s | ok w=7 rec=0 t=1.87s | ok w=8 rec=0 t=0.85s | ok w=7 rec=0 t=0.89s | ok w=7 rec=0 t=0.10s | -| rockclimb | ok w=65 rec=2 t=5.08s | ok w=85 rec=1 t=4.79s | ok w=152 rec=1 t=4.63s | ok w=118 rec=0 t=24.37s | ok w=87 rec=5 t=17.37s | ok w=81 rec=1 t=6.33s | ok w=85 rec=0 t=13.53s | ok w=124 rec=12 t=19.25s | ok w=78 rec=0 t=18.38s | ok w=77 rec=12 t=15.82s | -| schematic | ok w=135 rec=3 t=8.59s | ok w=178 rec=3 t=12.18s | ok w=282 rec=2 t=9.06s | ok w=213 rec=0 t=45.31s | ok w=177 rec=11 t=34.14s | ok w=161 rec=3 t=14.09s | ok w=170 rec=0 t=26.37s | ok w=232 rec=22 t=34.72s | ok w=154 rec=0 t=35.85s | ok w=161 rec=24 t=31.61s | -| schematicO3 | ok w=8 rec=0 t=0.11s | ok w=8 rec=0 t=0.54s | ok w=8 rec=0 t=0.14s | ok w=9 rec=1 t=0.86s | ok w=8 rec=0 t=1.84s | ok w=8 rec=0 t=0.69s | ok w=8 rec=0 t=1.87s | ok w=9 rec=0 t=0.87s | ok w=8 rec=0 t=0.92s | ok w=8 rec=0 t=0.11s | +| milp | ok w=7 rec=0 t=0.10s | ok w=7 rec=0 t=0.42s | ok w=7 rec=0 t=0.12s | ok w=8 rec=1 t=0.84s | ok w=7 rec=0 t=0.09s | ok w=7 rec=0 t=0.67s | ok w=7 rec=0 t=1.86s | ok w=8 rec=0 t=0.85s | ok w=7 rec=0 t=0.90s | ok w=7 rec=0 t=0.10s | +| rockclimb | ok w=65 rec=2 t=5.05s | ok w=85 rec=1 t=4.80s | ok w=145 rec=1 t=4.58s | ok w=118 rec=0 t=22.42s | ok w=88 rec=5 t=17.35s | ok w=83 rec=1 t=6.33s | ok w=86 rec=0 t=15.54s | ok w=124 rec=12 t=19.25s | ok w=80 rec=0 t=18.34s | ok w=77 rec=12 t=15.80s | +| schematic | ok w=134 rec=3 t=8.57s | ok w=177 rec=3 t=12.18s | ok w=275 rec=2 t=8.98s | ok w=209 rec=0 t=42.75s | ok w=177 rec=11 t=34.10s | ok w=162 rec=2 t=12.02s | ok w=166 rec=0 t=26.21s | ok w=230 rec=22 t=34.70s | ok w=155 rec=0 t=35.84s | ok w=165 rec=24 t=31.59s | +| schematicO3 | ok w=8 rec=0 t=0.11s | ok w=8 rec=0 t=0.54s | ok w=8 rec=0 t=0.14s | ok w=9 rec=1 t=1.45s | ok w=8 rec=0 t=1.83s | ok w=8 rec=0 t=0.70s | ok w=8 rec=0 t=2.03s | ok w=9 rec=0 t=0.87s | ok w=8 rec=0 t=0.91s | ok w=8 rec=0 t=0.11s | ### rsa (baseline result 32) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=16 rec=0 t=0.21s | ok w=15 rec=0 t=0.66s | ok w=19 rec=0 t=0.26s | ok w=19 rec=1 t=3.44s | ok w=18 rec=1 t=3.11s | ok w=15 rec=0 t=1.09s | ok w=16 rec=0 t=3.02s | ok w=19 rec=1 t=2.32s | ok w=18 rec=1 t=3.38s | ok w=15 rec=0 t=0.20s | -| rockclimb | ok w=413 rec=13 t=32.88s | ok w=551 rec=10 t=39.96s | ok w=982 rec=9 t=36.54s | ok w=781 rec=0 t=168.53s | ok w=560 rec=36 t=113.46s | ok w=525 rec=9 t=48.05s | ok w=542 rec=0 t=86.99s | ok w=797 rec=81 t=125.65s | ok w=491 rec=0 t=120.85s | ok w=499 rec=81 t=106.56s | -| schematic | ok w=49 rec=1 t=2.70s | ok w=61 rec=1 t=4.35s | ok w=88 rec=0 t=1.31s | ok w=67 rec=0 t=13.94s | ok w=60 rec=3 t=11.17s | ok w=54 rec=1 t=4.69s | ok w=58 rec=0 t=9.04s | ok w=75 rec=6 t=10.15s | ok w=53 rec=0 t=10.92s | ok w=55 rec=6 t=8.08s | -| schematicO3 | ok w=20 rec=0 t=0.86s | ok w=24 rec=0 t=0.76s | ok w=38 rec=0 t=0.55s | ok w=32 rec=0 t=6.07s | ok w=27 rec=1 t=4.95s | ok w=23 rec=0 t=1.17s | ok w=26 rec=0 t=4.44s | ok w=34 rec=3 t=5.39s | ok w=25 rec=0 t=5.74s | ok w=25 rec=3 t=4.01s | +| milp | ok w=16 rec=0 t=0.22s | ok w=19 rec=0 t=0.74s | ok w=29 rec=0 t=0.36s | ok w=29 rec=1 t=6.01s | ok w=23 rec=1 t=3.20s | ok w=17 rec=0 t=1.11s | ok w=20 rec=0 t=3.09s | ok w=26 rec=1 t=2.39s | ok w=20 rec=1 t=3.40s | ok w=21 rec=3 t=3.97s | +| rockclimb | ok w=407 rec=13 t=32.80s | ok w=546 rec=10 t=39.82s | ok w=929 rec=9 t=35.76s | ok w=747 rec=0 t=150.14s | ok w=537 rec=35 t=110.39s | ok w=526 rec=9 t=47.58s | ok w=514 rec=0 t=83.07s | ok w=797 rec=81 t=125.61s | ok w=485 rec=0 t=120.84s | ok w=511 rec=81 t=106.49s | +| schematic | ok w=49 rec=1 t=2.70s | ok w=59 rec=1 t=4.30s | ok w=87 rec=0 t=1.30s | ok w=66 rec=0 t=13.93s | ok w=61 rec=3 t=11.18s | ok w=54 rec=1 t=4.69s | ok w=57 rec=0 t=9.02s | ok w=76 rec=6 t=10.15s | ok w=51 rec=0 t=10.92s | ok w=56 rec=6 t=8.08s | +| schematicO3 | ok w=20 rec=0 t=0.86s | ok w=24 rec=0 t=0.77s | ok w=40 rec=0 t=0.59s | ok w=33 rec=0 t=6.06s | ok w=26 rec=1 t=4.96s | ok w=23 rec=0 t=1.17s | ok w=24 rec=0 t=5.08s | ok w=32 rec=3 t=5.40s | ok w=26 rec=0 t=5.83s | ok w=25 rec=3 t=4.01s | ### dijkstra (baseline result 3788) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=9 rec=0 t=0.11s | ok w=10 rec=0 t=0.55s | ok w=11 rec=0 t=0.15s | ok w=10 rec=1 t=1.46s | ok w=10 rec=0 t=1.85s | ok w=9 rec=0 t=0.70s | ok w=10 rec=0 t=2.02s | ok w=11 rec=0 t=0.87s | ok w=9 rec=0 t=0.93s | ok w=9 rec=0 t=0.11s | -| rockclimb | ok w=506 rec=16 t=40.49s | ok w=727 rec=13 t=52.61s | ok w=1208 rec=11 t=44.73s | ok w=946 rec=0 t=199.93s | ok w=696 rec=45 t=139.54s | ok w=652 rec=12 t=61.45s | ok w=665 rec=0 t=106.46s | ok w=990 rec=102 t=157.86s | ok w=612 rec=0 t=150.85s | ok w=623 rec=102 t=134.11s | -| schematic | ok w=53 rec=1 t=3.36s | ok w=67 rec=1 t=4.46s | ok w=98 rec=0 t=1.39s | ok w=72 rec=0 t=16.53s | ok w=66 rec=4 t=12.42s | ok w=59 rec=1 t=5.79s | ok w=62 rec=0 t=9.98s | ok w=86 rec=7 t=11.61s | ok w=60 rec=0 t=13.37s | ok w=63 rec=9 t=11.88s | -| schematicO3 | ok w=10 rec=0 t=0.13s | ok w=11 rec=0 t=0.57s | ok w=14 rec=0 t=0.18s | ok w=12 rec=0 t=2.62s | ok w=12 rec=0 t=1.87s | ok w=12 rec=0 t=0.88s | ok w=13 rec=0 t=2.05s | ok w=14 rec=0 t=0.89s | ok w=11 rec=0 t=0.94s | ok w=9 rec=0 t=0.12s | +| milp | ok w=9 rec=0 t=0.11s | ok w=10 rec=0 t=0.54s | ok w=10 rec=0 t=0.14s | ok w=9 rec=0 t=1.46s | ok w=10 rec=0 t=1.85s | ok w=9 rec=0 t=0.70s | ok w=10 rec=0 t=2.02s | ok w=12 rec=0 t=0.87s | ok w=9 rec=0 t=0.91s | ok w=9 rec=0 t=0.11s | +| rockclimb | ok w=512 rec=16 t=40.52s | ok w=676 rec=13 t=51.34s | ok w=1210 rec=11 t=44.71s | ok w=931 rec=0 t=189.48s | ok w=699 rec=44 t=138.28s | ok w=646 rec=11 t=58.44s | ok w=640 rec=0 t=103.98s | ok w=992 rec=102 t=157.86s | ok w=620 rec=0 t=150.83s | ok w=632 rec=99 t=130.22s | +| schematic | ok w=52 rec=1 t=2.74s | ok w=60 rec=1 t=4.34s | ok w=97 rec=0 t=1.38s | ok w=75 rec=0 t=16.48s | ok w=66 rec=4 t=12.41s | ok w=62 rec=1 t=5.18s | ok w=61 rec=0 t=9.17s | ok w=85 rec=7 t=11.60s | ok w=61 rec=0 t=13.35s | ok w=65 rec=9 t=11.87s | +| schematicO3 | ok w=10 rec=0 t=0.13s | ok w=11 rec=0 t=0.57s | ok w=14 rec=0 t=0.18s | ok w=12 rec=0 t=2.62s | ok w=12 rec=0 t=1.87s | ok w=12 rec=0 t=0.88s | ok w=13 rec=0 t=2.05s | ok w=14 rec=0 t=0.89s | ok w=10 rec=0 t=0.93s | ok w=9 rec=0 t=0.12s | ### qsort (baseline result 9987) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=11 rec=0 t=0.14s | ok w=13 rec=0 t=0.62s | ok w=11 rec=0 t=0.15s | ok w=13 rec=0 t=3.39s | ok w=12 rec=0 t=1.86s | ok w=12 rec=0 t=0.72s | ok w=13 rec=0 t=2.05s | ok w=15 rec=0 t=0.91s | ok w=11 rec=0 t=0.95s | ok w=10 rec=0 t=0.13s | -| rockclimb | ok w=106 rec=3 t=7.72s | ok w=154 rec=2 t=9.50s | ok w=250 rec=2 t=8.52s | ok w=206 rec=0 t=42.72s | ok w=143 rec=9 t=27.97s | ok w=133 rec=2 t=11.50s | ok w=136 rec=0 t=22.51s | ok w=199 rec=19 t=30.08s | ok w=130 rec=0 t=30.86s | ok w=130 rec=21 t=27.61s | -| schematic | ok w=17 rec=0 t=0.22s | ok w=21 rec=0 t=0.73s | ok w=30 rec=0 t=0.36s | ok w=31 rec=0 t=6.03s | ok w=24 rec=1 t=3.20s | ok w=23 rec=0 t=1.14s | ok w=23 rec=0 t=3.49s | ok w=27 rec=1 t=2.41s | ok w=19 rec=0 t=3.41s | ok w=22 rec=3 t=3.97s | -| schematicO3 | ok w=15 rec=0 t=0.19s | ok w=21 rec=0 t=0.72s | ok w=25 rec=0 t=0.30s | ok w=26 rec=0 t=4.09s | ok w=21 rec=1 t=3.16s | ok w=22 rec=0 t=1.10s | ok w=20 rec=0 t=3.07s | ok w=26 rec=1 t=2.38s | ok w=19 rec=0 t=3.40s | ok w=15 rec=0 t=0.19s | +| milp | ok w=11 rec=0 t=0.14s | ok w=11 rec=0 t=0.57s | ok w=12 rec=0 t=0.16s | ok w=14 rec=0 t=3.40s | ok w=12 rec=0 t=1.88s | ok w=12 rec=0 t=0.72s | ok w=12 rec=0 t=2.05s | ok w=16 rec=0 t=0.89s | ok w=11 rec=0 t=0.94s | ok w=10 rec=0 t=0.13s | +| rockclimb | ok w=104 rec=3 t=7.71s | ok w=136 rec=2 t=8.73s | ok w=236 rec=2 t=8.30s | ok w=205 rec=0 t=40.14s | ok w=138 rec=9 t=27.96s | ok w=135 rec=2 t=11.46s | ok w=133 rec=0 t=20.89s | ok w=199 rec=19 t=30.07s | ok w=132 rec=0 t=30.84s | ok w=127 rec=18 t=23.84s | +| schematic | ok w=17 rec=0 t=0.22s | ok w=20 rec=0 t=0.73s | ok w=28 rec=0 t=0.34s | ok w=32 rec=0 t=6.03s | ok w=23 rec=1 t=3.18s | ok w=22 rec=0 t=1.13s | ok w=24 rec=0 t=3.49s | ok w=27 rec=1 t=2.41s | ok w=20 rec=0 t=3.41s | ok w=22 rec=3 t=3.95s | +| schematicO3 | ok w=15 rec=0 t=0.19s | ok w=19 rec=0 t=0.70s | ok w=25 rec=0 t=0.30s | ok w=23 rec=0 t=4.08s | ok w=22 rec=1 t=3.17s | ok w=21 rec=0 t=1.12s | ok w=20 rec=0 t=3.06s | ok w=25 rec=1 t=2.38s | ok w=18 rec=0 t=3.38s | ok w=15 rec=0 t=0.19s | ### activity_recognition (baseline result 64) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=11 rec=0 t=0.14s | ok w=13 rec=0 t=0.62s | ok w=12 rec=0 t=0.17s | ok w=12 rec=0 t=3.39s | ok w=13 rec=0 t=1.89s | ok w=14 rec=0 t=1.05s | ok w=14 rec=0 t=2.07s | ok w=17 rec=0 t=0.92s | ok w=12 rec=0 t=2.62s | ok w=11 rec=0 t=0.14s | -| rockclimb | ok w=49 rec=1 t=3.36s | ok w=69 rec=1 t=4.49s | ok w=113 rec=1 t=4.06s | ok w=85 rec=0 t=16.57s | ok w=67 rec=4 t=12.48s | ok w=67 rec=1 t=5.84s | ok w=64 rec=0 t=10.03s | ok w=94 rec=9 t=14.62s | ok w=60 rec=0 t=13.39s | ok w=58 rec=9 t=11.86s | -| schematic | ok w=45 rec=1 t=2.65s | ok w=57 rec=1 t=3.92s | ok w=87 rec=0 t=1.28s | ok w=61 rec=0 t=13.89s | ok w=55 rec=3 t=9.39s | ok w=50 rec=1 t=3.79s | ok w=53 rec=0 t=8.82s | ok w=74 rec=6 t=10.12s | ok w=50 rec=0 t=10.89s | ok w=50 rec=6 t=8.03s | -| schematicO3 | ok w=14 rec=0 t=0.18s | ok w=16 rec=0 t=0.64s | ok w=21 rec=0 t=0.26s | ok w=17 rec=0 t=3.45s | ok w=19 rec=1 t=3.13s | ok w=19 rec=0 t=1.09s | ok w=18 rec=0 t=3.05s | ok w=22 rec=1 t=2.33s | ok w=15 rec=0 t=3.36s | ok w=13 rec=0 t=0.17s | +| milp | ok w=11 rec=0 t=0.14s | ok w=13 rec=0 t=0.62s | ok w=13 rec=0 t=0.18s | ok w=12 rec=0 t=3.27s | ok w=14 rec=0 t=1.90s | ok w=13 rec=0 t=1.03s | ok w=13 rec=0 t=2.06s | ok w=17 rec=0 t=0.92s | ok w=12 rec=0 t=2.63s | ok w=11 rec=0 t=0.14s | +| rockclimb | ok w=49 rec=1 t=2.74s | ok w=66 rec=1 t=4.48s | ok w=110 rec=1 t=4.06s | ok w=90 rec=0 t=19.13s | ok w=64 rec=4 t=12.46s | ok w=64 rec=1 t=5.83s | ok w=62 rec=0 t=10.03s | ok w=92 rec=9 t=14.62s | ok w=60 rec=0 t=13.38s | ok w=61 rec=9 t=11.86s | +| schematic | ok w=44 rec=1 t=2.65s | ok w=55 rec=0 t=2.09s | ok w=87 rec=0 t=1.28s | ok w=64 rec=0 t=13.90s | ok w=54 rec=3 t=11.14s | ok w=51 rec=1 t=3.78s | ok w=51 rec=0 t=8.98s | ok w=73 rec=6 t=10.12s | ok w=52 rec=0 t=10.88s | ok w=49 rec=6 t=8.03s | +| schematicO3 | ok w=14 rec=0 t=0.18s | ok w=16 rec=0 t=0.65s | ok w=21 rec=0 t=0.26s | ok w=18 rec=0 t=3.45s | ok w=18 rec=1 t=3.13s | ok w=18 rec=0 t=1.10s | ok w=17 rec=0 t=3.04s | ok w=21 rec=1 t=2.34s | ok w=16 rec=1 t=3.36s | ok w=13 rec=0 t=0.17s | ### bitcount (baseline result 14121) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=8 rec=0 t=0.11s | ok w=10 rec=0 t=0.54s | ok w=7 rec=0 t=0.12s | ok w=9 rec=0 t=1.46s | ok w=9 rec=0 t=1.84s | ok w=10 rec=0 t=0.70s | ok w=9 rec=0 t=1.88s | ok w=12 rec=0 t=0.87s | ok w=9 rec=0 t=0.81s | ok w=8 rec=0 t=0.11s | -| rockclimb | ok w=280 rec=8 t=21.18s | ok w=393 rec=7 t=27.85s | ok w=664 rec=6 t=24.50s | ok w=538 rec=0 t=113.46s | ok w=373 rec=24 t=76.29s | ok w=352 rec=6 t=32.20s | ok w=366 rec=0 t=58.76s | ok w=541 rec=54 t=84.08s | ok w=333 rec=0 t=80.93s | ok w=338 rec=54 t=71.11s | -| schematic | ok w=33 rec=0 t=1.02s | ok w=39 rec=0 t=1.67s | ok w=64 rec=0 t=1.05s | ok w=50 rec=0 t=11.27s | ok w=43 rec=2 t=8.06s | ok w=38 rec=0 t=1.63s | ok w=42 rec=0 t=6.52s | ok w=56 rec=4 t=7.00s | ok w=38 rec=0 t=8.37s | ok w=41 rec=6 t=7.91s | -| schematicO3 | ok w=9 rec=0 t=0.12s | ok w=11 rec=0 t=0.54s | ok w=9 rec=0 t=0.14s | ok w=10 rec=0 t=2.62s | ok w=10 rec=0 t=1.85s | ok w=11 rec=0 t=0.71s | ok w=11 rec=0 t=2.03s | ok w=14 rec=0 t=0.89s | ok w=9 rec=0 t=0.92s | ok w=9 rec=0 t=0.12s | +| milp | ok w=8 rec=0 t=0.11s | ok w=8 rec=0 t=0.55s | ok w=7 rec=0 t=0.12s | ok w=8 rec=0 t=0.85s | ok w=9 rec=0 t=1.84s | ok w=10 rec=0 t=0.70s | ok w=9 rec=0 t=2.01s | ok w=14 rec=0 t=0.88s | ok w=9 rec=0 t=0.92s | ok w=8 rec=0 t=0.11s | +| rockclimb | ok w=280 rec=9 t=22.70s | ok w=381 rec=7 t=27.97s | ok w=663 rec=6 t=24.45s | ok w=532 rec=0 t=116.11s | ok w=388 rec=24 t=76.25s | ok w=352 rec=6 t=32.19s | ok w=354 rec=0 t=57.55s | ok w=541 rec=54 t=84.08s | ok w=327 rec=0 t=80.89s | ok w=346 rec=54 t=71.04s | +| schematic | ok w=32 rec=0 t=1.02s | ok w=40 rec=0 t=1.69s | ok w=63 rec=0 t=1.01s | ok w=53 rec=0 t=11.25s | ok w=43 rec=2 t=8.06s | ok w=39 rec=0 t=1.60s | ok w=41 rec=0 t=6.52s | ok w=55 rec=4 t=6.99s | ok w=40 rec=0 t=8.37s | ok w=41 rec=6 t=7.89s | +| schematicO3 | ok w=9 rec=0 t=0.12s | ok w=11 rec=0 t=0.57s | ok w=9 rec=0 t=0.14s | ok w=10 rec=0 t=2.62s | ok w=11 rec=0 t=1.88s | ok w=12 rec=0 t=0.72s | ok w=10 rec=0 t=2.02s | ok w=14 rec=0 t=0.89s | ok w=9 rec=0 t=0.92s | ok w=9 rec=0 t=0.12s | ### chacha20 (baseline result 79) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=11 rec=0 t=0.16s | ok w=12 rec=0 t=0.62s | ok w=11 rec=0 t=0.21s | ok w=12 rec=1 t=3.27s | ok w=11 rec=0 t=1.89s | ok w=11 rec=0 t=1.04s | ok w=11 rec=0 t=2.05s | ok w=13 rec=0 t=0.91s | ok w=13 rec=1 t=3.21s | ok w=11 rec=0 t=0.16s | -| rockclimb | ok w=46 rec=1 t=2.70s | ok w=60 rec=1 t=4.31s | ok w=98 rec=0 t=1.40s | ok w=71 rec=0 t=14.55s | ok w=57 rec=3 t=11.17s | ok w=54 rec=1 t=4.69s | ok w=58 rec=0 t=9.03s | ok w=81 rec=7 t=11.56s | ok w=58 rec=0 t=13.33s | ok w=52 rec=6 t=8.06s | -| schematic | ok w=34 rec=1 t=2.52s | ok w=34 rec=0 t=1.66s | ok w=37 rec=0 t=0.76s | ok w=36 rec=1 t=8.66s | ok w=37 rec=2 t=6.28s | ok w=33 rec=0 t=1.62s | ok w=35 rec=0 t=5.69s | ok w=37 rec=3 t=5.53s | ok w=38 rec=3 t=8.35s | ok w=39 rec=6 t=7.91s | -| schematicO3 | ok w=22 rec=0 t=0.89s | ok w=24 rec=0 t=0.81s | ok w=28 rec=0 t=0.37s | ok w=25 rec=0 t=6.04s | ok w=26 rec=1 t=4.97s | ok w=24 rec=0 t=1.18s | ok w=24 rec=0 t=4.43s | ok w=31 rec=3 t=5.38s | ok w=25 rec=1 t=5.83s | ok w=26 rec=3 t=4.02s | +| milp | ok w=11 rec=0 t=0.16s | ok w=12 rec=0 t=0.62s | ok w=11 rec=0 t=0.21s | ok w=12 rec=1 t=3.39s | ok w=11 rec=0 t=1.90s | ok w=11 rec=0 t=1.04s | ok w=11 rec=0 t=2.08s | ok w=13 rec=0 t=0.91s | ok w=12 rec=1 t=2.50s | ok w=11 rec=0 t=0.16s | +| rockclimb | ok w=46 rec=1 t=2.69s | ok w=61 rec=1 t=4.31s | ok w=96 rec=0 t=1.39s | ok w=72 rec=0 t=13.94s | ok w=57 rec=3 t=11.18s | ok w=55 rec=1 t=4.67s | ok w=55 rec=0 t=9.03s | ok w=75 rec=6 t=10.17s | ok w=56 rec=0 t=10.94s | ok w=53 rec=6 t=8.06s | +| schematic | ok w=34 rec=1 t=2.52s | ok w=34 rec=0 t=1.67s | ok w=37 rec=0 t=0.77s | ok w=35 rec=1 t=8.65s | ok w=36 rec=2 t=6.27s | ok w=33 rec=0 t=1.61s | ok w=34 rec=0 t=5.67s | ok w=37 rec=3 t=5.52s | ok w=37 rec=2 t=8.33s | ok w=39 rec=6 t=7.88s | +| schematicO3 | ok w=22 rec=0 t=0.89s | ok w=24 rec=0 t=0.78s | ok w=28 rec=0 t=0.37s | ok w=25 rec=0 t=6.04s | ok w=27 rec=1 t=4.97s | ok w=23 rec=0 t=1.18s | ok w=23 rec=0 t=5.08s | ok w=31 rec=3 t=5.38s | ok w=24 rec=1 t=5.12s | ok w=25 rec=3 t=4.01s | ### sensor_fusion (baseline result 613) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=9 rec=0 t=0.11s | ok w=12 rec=0 t=0.55s | ok w=13 rec=0 t=0.17s | ok w=11 rec=0 t=2.62s | ok w=11 rec=0 t=1.86s | ok w=12 rec=0 t=0.72s | ok w=12 rec=0 t=2.03s | ok w=15 rec=0 t=0.89s | ok w=9 rec=0 t=0.92s | ok w=9 rec=0 t=0.11s | -| rockclimb | ok w=10 rec=0 t=0.13s | ok w=12 rec=0 t=0.57s | ok w=14 rec=0 t=0.18s | ok w=14 rec=0 t=3.40s | ok w=13 rec=0 t=1.88s | ok w=14 rec=0 t=1.04s | ok w=13 rec=0 t=2.06s | ok w=16 rec=0 t=0.90s | ok w=10 rec=0 t=0.93s | ok w=10 rec=0 t=0.13s | -| schematic | ok w=14 rec=0 t=0.18s | ok w=16 rec=0 t=0.65s | ok w=20 rec=0 t=0.25s | ok w=17 rec=0 t=3.43s | ok w=16 rec=1 t=3.11s | ok w=16 rec=0 t=1.08s | ok w=18 rec=0 t=3.03s | ok w=19 rec=0 t=0.94s | ok w=16 rec=0 t=3.36s | ok w=14 rec=0 t=0.18s | -| schematicO3 | ok w=12 rec=0 t=0.15s | ok w=16 rec=0 t=0.63s | ok w=21 rec=0 t=0.25s | ok w=20 rec=0 t=3.43s | ok w=16 rec=1 t=3.10s | ok w=17 rec=0 t=1.07s | ok w=18 rec=0 t=3.04s | ok w=21 rec=1 t=2.33s | ok w=15 rec=0 t=3.35s | ok w=12 rec=0 t=0.15s | +| milp | ok w=8 rec=0 t=0.10s | ok w=12 rec=0 t=0.55s | ok w=13 rec=0 t=0.17s | ok w=11 rec=0 t=2.62s | ok w=11 rec=0 t=1.85s | ok w=11 rec=0 t=0.71s | ok w=11 rec=0 t=2.02s | ok w=14 rec=0 t=0.88s | ok w=9 rec=0 t=0.92s | ok w=8 rec=0 t=0.10s | +| rockclimb | ok w=10 rec=0 t=0.13s | ok w=12 rec=0 t=0.57s | ok w=14 rec=0 t=0.18s | ok w=14 rec=0 t=3.40s | ok w=12 rec=0 t=1.87s | ok w=14 rec=0 t=1.04s | ok w=13 rec=0 t=2.05s | ok w=16 rec=0 t=0.90s | ok w=10 rec=0 t=0.93s | ok w=10 rec=0 t=0.13s | +| schematic | ok w=14 rec=0 t=0.18s | ok w=16 rec=0 t=0.64s | ok w=20 rec=0 t=0.25s | ok w=18 rec=0 t=3.44s | ok w=17 rec=1 t=3.11s | ok w=17 rec=0 t=1.08s | ok w=17 rec=0 t=3.03s | ok w=19 rec=0 t=0.93s | ok w=15 rec=0 t=3.36s | ok w=14 rec=0 t=0.18s | +| schematicO3 | ok w=12 rec=0 t=0.15s | ok w=16 rec=0 t=0.64s | ok w=20 rec=0 t=0.24s | ok w=22 rec=0 t=3.44s | ok w=16 rec=1 t=3.10s | ok w=18 rec=0 t=1.06s | ok w=15 rec=0 t=2.07s | ok w=19 rec=0 t=0.93s | ok w=15 rec=0 t=3.35s | ok w=12 rec=0 t=0.15s | ### poly1305 (baseline result 68) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=132 rec=4 t=10.19s | ok w=131 rec=2 t=9.70s | ok w=129 rec=1 t=5.16s | ok w=135 rec=7 t=34.91s | ok w=137 rec=9 t=29.74s | ok w=130 rec=2 t=12.04s | ok w=128 rec=0 t=22.96s | ok w=148 rec=18 t=28.63s | ok w=137 rec=8 t=35.85s | ok w=155 rec=27 t=35.48s | -| rockclimb | ok w=318 rec=9 t=22.90s | ok w=422 rec=7 t=28.33s | ok w=662 rec=6 t=24.44s | ok w=522 rec=0 t=113.49s | ok w=405 rec=25 t=79.38s | ok w=387 rec=7 t=34.72s | ok w=395 rec=0 t=60.79s | ok w=560 rec=55 t=85.56s | ok w=367 rec=0 t=85.90s | ok w=385 rec=60 t=78.85s | -| schematic | ok w=273 rec=8 t=20.24s | ok w=285 rec=5 t=20.50s | ok w=329 rec=3 t=13.02s | ok w=311 rec=4 t=74.16s | ok w=293 rec=19 t=58.98s | ok w=278 rec=6 t=26.51s | ok w=271 rec=0 t=43.63s | ok w=319 rec=36 t=56.33s | ok w=300 rec=18 t=68.34s | ok w=308 rec=48 t=63.14s | -| schematicO3 | ok w=185 rec=5 t=13.51s | ok w=190 rec=3 t=13.87s | ok w=243 rec=2 t=9.23s | ok w=197 rec=0 t=53.23s | ok w=215 rec=14 t=45.26s | ok w=204 rec=5 t=20.09s | ok w=215 rec=0 t=36.68s | ok w=251 rec=30 t=47.01s | ok w=198 rec=7 t=48.37s | ok w=215 rec=33 t=43.54s | +| milp | ok w=132 rec=4 t=10.19s | ok w=131 rec=2 t=9.70s | ok w=129 rec=1 t=5.16s | ok w=133 rec=5 t=36.68s | ok w=138 rec=9 t=29.77s | ok w=131 rec=3 t=11.92s | ok w=128 rec=0 t=22.96s | ok w=148 rec=18 t=28.60s | ok w=139 rec=10 t=33.34s | ok w=152 rec=24 t=31.67s | +| rockclimb | ok w=322 rec=9 t=23.53s | ok w=407 rec=7 t=28.00s | ok w=651 rec=6 t=24.23s | ok w=518 rec=0 t=116.07s | ok w=407 rec=25 t=79.38s | ok w=383 rec=6 t=32.61s | ok w=385 rec=0 t=60.11s | ok w=564 rec=55 t=85.52s | ok w=362 rec=0 t=83.40s | ok w=386 rec=57 t=75.01s | +| schematic | ok w=269 rec=8 t=20.23s | ok w=281 rec=5 t=20.35s | ok w=335 rec=3 t=13.01s | ok w=298 rec=1 t=68.90s | ok w=291 rec=19 t=60.78s | ok w=287 rec=7 t=26.86s | ok w=276 rec=0 t=43.83s | ok w=316 rec=37 t=57.77s | ok w=301 rec=20 t=68.36s | ok w=307 rec=48 t=63.05s | +| schematicO3 | ok w=185 rec=5 t=13.50s | ok w=191 rec=3 t=13.84s | ok w=241 rec=2 t=9.22s | ok w=189 rec=0 t=50.59s | ok w=214 rec=14 t=43.45s | ok w=207 rec=5 t=20.10s | ok w=191 rec=0 t=32.95s | ok w=244 rec=28 t=43.96s | ok w=203 rec=7 t=48.36s | ok w=216 rec=33 t=43.48s | ### cuckoo_filter (baseline result 4048) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=12 rec=0 t=0.16s | ok w=14 rec=0 t=0.64s | ok w=17 rec=0 t=0.24s | ok w=17 rec=0 t=3.43s | ok w=12 rec=0 t=1.90s | ok w=14 rec=0 t=1.05s | ok w=15 rec=0 t=2.08s | ok w=17 rec=0 t=0.94s | ok w=15 rec=1 t=3.35s | ok w=12 rec=0 t=0.16s | -| rockclimb | ok w=132 rec=4 t=10.11s | ok w=178 rec=3 t=12.40s | ok w=303 rec=2 t=9.27s | ok w=230 rec=0 t=47.97s | ok w=171 rec=11 t=34.17s | ok w=159 rec=3 t=14.96s | ok w=162 rec=0 t=26.41s | ok w=246 rec=24 t=37.83s | ok w=154 rec=0 t=35.91s | ok w=153 rec=24 t=31.64s | -| schematic | ok w=115 rec=4 t=7.74s | ok w=124 rec=2 t=8.64s | ok w=174 rec=1 t=5.27s | ok w=141 rec=2 t=34.87s | ok w=133 rec=8 t=26.63s | ok w=128 rec=2 t=11.42s | ok w=127 rec=0 t=19.47s | ok w=158 rec=16 t=25.50s | ok w=123 rec=4 t=28.39s | ok w=135 rec=21 t=27.58s | -| schematicO3 | ok w=18 rec=1 t=0.84s | ok w=20 rec=0 t=0.75s | ok w=26 rec=0 t=0.36s | ok w=27 rec=2 t=5.90s | ok w=22 rec=1 t=3.19s | ok w=21 rec=0 t=1.16s | ok w=21 rec=0 t=3.48s | ok w=24 rec=1 t=2.40s | ok w=20 rec=0 t=3.42s | ok w=22 rec=3 t=3.98s | +| milp | ok w=13 rec=0 t=0.18s | ok w=14 rec=0 t=0.65s | ok w=16 rec=0 t=0.23s | ok w=16 rec=0 t=3.43s | ok w=13 rec=0 t=1.91s | ok w=13 rec=0 t=1.05s | ok w=15 rec=0 t=2.08s | ok w=18 rec=0 t=0.93s | ok w=15 rec=1 t=3.35s | ok w=13 rec=0 t=0.18s | +| rockclimb | ok w=130 rec=4 t=10.12s | ok w=170 rec=3 t=12.18s | ok w=297 rec=2 t=9.21s | ok w=234 rec=0 t=47.94s | ok w=170 rec=11 t=34.15s | ok w=164 rec=3 t=14.09s | ok w=171 rec=0 t=26.38s | ok w=248 rec=24 t=37.80s | ok w=155 rec=0 t=35.89s | ok w=159 rec=24 t=31.59s | +| schematic | ok w=117 rec=4 t=7.75s | ok w=125 rec=2 t=8.56s | ok w=175 rec=1 t=5.27s | ok w=139 rec=0 t=32.28s | ok w=132 rec=8 t=24.89s | ok w=128 rec=2 t=11.41s | ok w=126 rec=0 t=20.43s | ok w=158 rec=16 t=25.51s | ok w=126 rec=3 t=28.38s | ok w=134 rec=18 t=23.83s | +| schematicO3 | ok w=18 rec=1 t=0.84s | ok w=22 rec=0 t=0.74s | ok w=26 rec=0 t=0.36s | ok w=24 rec=1 t=6.01s | ok w=23 rec=1 t=3.20s | ok w=19 rec=0 t=1.14s | ok w=22 rec=0 t=3.49s | ok w=25 rec=1 t=2.40s | ok w=20 rec=0 t=3.43s | ok w=22 rec=3 t=3.97s | ### sha256 (baseline result 131) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=18 rec=1 t=0.88s | ok w=18 rec=0 t=0.75s | ok w=17 rec=0 t=0.33s | ok w=19 rec=2 t=5.24s | ok w=18 rec=1 t=3.18s | ok w=17 rec=0 t=1.14s | ok w=17 rec=0 t=3.08s | ok w=23 rec=3 t=4.63s | ok w=19 rec=1 t=3.43s | ok w=20 rec=3 t=3.99s | -| rockclimb | ok w=74 rec=2 t=5.14s | ok w=104 rec=1 t=5.77s | ok w=178 rec=1 t=5.01s | ok w=135 rec=0 t=27.00s | ok w=95 rec=6 t=18.65s | ok w=93 rec=1 t=6.75s | ok w=93 rec=0 t=14.86s | ok w=140 rec=12 t=19.38s | ok w=93 rec=0 t=20.85s | ok w=88 rec=12 t=15.91s | -| schematic | ok w=37 rec=1 t=2.60s | ok w=48 rec=0 t=2.07s | ok w=63 rec=0 t=1.12s | ok w=48 rec=0 t=11.31s | ok w=50 rec=3 t=9.32s | ok w=39 rec=0 t=1.68s | ok w=42 rec=0 t=6.57s | ok w=54 rec=6 t=9.28s | ok w=46 rec=3 t=10.00s | ok w=44 rec=6 t=7.98s | -| schematicO3 | ok w=35 rec=2 t=2.54s | ok w=33 rec=0 t=1.62s | ok w=33 rec=0 t=0.67s | ok w=34 rec=1 t=8.66s | ok w=35 rec=2 t=6.27s | ok w=33 rec=0 t=1.61s | ok w=33 rec=0 t=5.52s | ok w=37 rec=3 t=5.51s | ok w=36 rec=2 t=8.33s | ok w=39 rec=6 t=7.91s | +| milp | ok w=18 rec=1 t=0.87s | ok w=18 rec=0 t=0.75s | ok w=18 rec=0 t=0.34s | ok w=19 rec=2 t=5.24s | ok w=18 rec=1 t=3.19s | ok w=17 rec=0 t=1.14s | ok w=17 rec=0 t=3.09s | ok w=20 rec=1 t=2.41s | ok w=19 rec=1 t=3.44s | ok w=20 rec=3 t=3.99s | +| rockclimb | ok w=74 rec=2 t=5.14s | ok w=99 rec=1 t=5.60s | ok w=172 rec=1 t=4.96s | ok w=130 rec=0 t=24.43s | ok w=98 rec=6 t=18.64s | ok w=91 rec=1 t=6.61s | ok w=93 rec=0 t=14.87s | ok w=138 rec=12 t=19.38s | ok w=91 rec=0 t=20.83s | ok w=87 rec=12 t=15.90s | +| schematic | ok w=38 rec=1 t=2.59s | ok w=45 rec=0 t=1.92s | ok w=61 rec=0 t=1.08s | ok w=49 rec=1 t=11.29s | ok w=46 rec=3 t=9.30s | ok w=39 rec=0 t=1.68s | ok w=45 rec=0 t=8.57s | ok w=56 rec=6 t=9.28s | ok w=41 rec=1 t=8.42s | ok w=44 rec=6 t=7.97s | +| schematicO3 | ok w=35 rec=1 t=2.53s | ok w=33 rec=0 t=1.65s | ok w=33 rec=0 t=0.66s | ok w=35 rec=2 t=8.64s | ok w=35 rec=2 t=6.26s | ok w=33 rec=0 t=1.63s | ok w=33 rec=0 t=5.54s | ok w=37 rec=3 t=5.52s | ok w=35 rec=1 t=8.23s | ok w=39 rec=6 t=7.90s | ### stringsearch (baseline result 20) | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=15 rec=0 t=0.19s | ok w=18 rec=0 t=0.70s | ok w=24 rec=0 t=0.30s | ok w=22 rec=0 t=4.09s | ok w=20 rec=1 t=3.16s | ok w=20 rec=0 t=1.11s | ok w=21 rec=0 t=3.05s | ok w=24 rec=1 t=2.36s | ok w=18 rec=0 t=3.39s | ok w=15 rec=0 t=0.20s | -| rockclimb | ok w=601 rec=19 t=48.00s | ok w=813 rec=15 t=59.36s | ok w=1434 rec=14 t=55.40s | ok w=1158 rec=0 t=243.03s | ok w=816 rec=53 t=164.33s | ok w=758 rec=14 t=72.89s | ok w=809 rec=0 t=130.82s | ok w=1176 rec=120 t=185.62s | ok w=709 rec=0 t=175.88s | ok w=731 rec=120 t=157.75s | -| schematic | ok w=57 rec=1 t=3.41s | ok w=66 rec=1 t=4.55s | ok w=94 rec=1 t=3.94s | ok w=77 rec=0 t=16.55s | ok w=70 rec=4 t=12.48s | ok w=64 rec=1 t=5.85s | ok w=62 rec=0 t=10.05s | ok w=78 rec=7 t=11.62s | ok w=64 rec=3 t=13.40s | ok w=68 rec=9 t=11.94s | -| schematicO3 | ok w=17 rec=0 t=0.22s | ok w=22 rec=0 t=0.73s | ok w=28 rec=0 t=0.35s | ok w=29 rec=0 t=6.04s | ok w=23 rec=1 t=3.18s | ok w=22 rec=0 t=1.14s | ok w=20 rec=0 t=3.07s | ok w=28 rec=1 t=2.40s | ok w=20 rec=0 t=3.42s | ok w=22 rec=3 t=3.96s | +| milp | ok w=14 rec=0 t=0.18s | ok w=19 rec=0 t=0.69s | ok w=24 rec=0 t=0.30s | ok w=21 rec=0 t=3.47s | ok w=20 rec=1 t=3.14s | ok w=19 rec=0 t=1.10s | ok w=20 rec=0 t=3.06s | ok w=25 rec=1 t=2.36s | ok w=18 rec=0 t=3.39s | ok w=14 rec=0 t=0.18s | +| rockclimb | ok w=594 rec=19 t=47.92s | ok w=804 rec=14 t=56.57s | ok w=1393 rec=13 t=52.44s | ok w=1170 rec=0 t=241.87s | ok w=789 rec=52 t=163.03s | ok w=758 rec=13 t=68.56s | ok w=791 rec=0 t=127.35s | ok w=1153 rec=118 t=182.56s | ok w=716 rec=0 t=173.35s | ok w=737 rec=117 t=153.78s | +| schematic | ok w=55 rec=1 t=3.40s | ok w=68 rec=1 t=4.48s | ok w=94 rec=0 t=1.40s | ok w=71 rec=0 t=16.37s | ok w=67 rec=4 t=12.48s | ok w=66 rec=1 t=5.83s | ok w=61 rec=0 t=10.04s | ok w=81 rec=7 t=11.63s | ok w=63 rec=0 t=13.40s | ok w=65 rec=9 t=11.91s | +| schematicO3 | ok w=16 rec=0 t=0.21s | ok w=21 rec=0 t=0.72s | ok w=28 rec=0 t=0.34s | ok w=30 rec=0 t=6.02s | ok w=22 rec=1 t=3.18s | ok w=22 rec=0 t=1.12s | ok w=23 rec=0 t=3.08s | ok w=27 rec=1 t=2.40s | ok w=21 rec=0 t=3.41s | ok w=22 rec=3 t=3.95s | diff --git a/results/intermittent/rsa/milp.csv b/results/intermittent/rsa/milp.csv index a6356c65..c34e930b 100644 --- a/results/intermittent/rsa/milp.csv +++ b/results/intermittent/rsa/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -rsa,board,1,ok,7,271,808,2.42,210498.26,,16,0,32 -rsa,board,2,ok,7,271,808,3.32,664434.87,,15,0,32 -rsa,board,3,ok,7,271,808,4.23,255906.87,,19,0,32 -rsa,board,4,ok,7,271,808,5.98,3444064.42,,19,1,32 -rsa,board,5,ok,7,271,808,5.71,3114008.01,,18,1,32 -rsa,board,6,ok,7,271,808,3.03,1093094.99,,15,0,32 -rsa,board,7,ok,7,271,808,4.83,3019820.21,,16,0,32 -rsa,board,8,ok,7,271,808,5.02,2324654.2,,19,1,32 -rsa,board,9,ok,7,271,808,6.21,3378467.03,,18,1,32 -rsa,board,10,ok,7,271,808,2.03,199428.76,,15,0,32 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +rsa,board,1,ok,15,1594,876,2.29,217291.72,162812.03,15,0,,16,0,32 +rsa,board,2,ok,15,1594,876,3.27,739746.81,685258.85,18,0,,19,0,32 +rsa,board,3,ok,15,1594,876,4.3,361668.46,307164.67,28,0,,29,0,32 +rsa,board,4,ok,15,1594,876,8.47,6014132.74,5959630.98,27,1,,29,1,32 +rsa,board,5,ok,15,1594,876,5.79,3202153.66,3147657.19,21,1,,23,1,32 +rsa,board,6,ok,15,1594,876,2.99,1108780.38,1054294.56,16,0,,17,0,32 +rsa,board,7,ok,15,1594,876,4.77,3091552.96,3037066.03,19,0,,20,0,32 +rsa,board,8,ok,15,1594,876,5.06,2391774.79,2337277.06,23,1,,26,1,32 +rsa,board,9,ok,15,1594,876,6.1,3402073.8,3347586.67,18,1,,20,1,32 +rsa,board,10,ok,15,1594,876,5.63,3968593.94,3914109.07,17,3,,21,3,32 diff --git a/results/intermittent/rsa/rockclimb.csv b/results/intermittent/rsa/rockclimb.csv index 17244c3c..092e16f9 100644 --- a/results/intermittent/rsa/rockclimb.csv +++ b/results/intermittent/rsa/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -rsa,board,1,ok,32,21,0,35.02,32875332.27,,413,13,32 -rsa,board,2,ok,32,21,0,42.61,39962127.06,,551,10,32 -rsa,board,3,ok,32,21,0,40.48,36536985.15,,982,9,32 -rsa,board,4,ok,32,21,0,171.11,168526883.79,,781,0,32 -rsa,board,5,ok,32,21,0,116.03,113458172.23,,560,36,32 -rsa,board,6,ok,32,21,0,50.01,48045556.63,,525,9,32 -rsa,board,7,ok,32,21,0,88.8,86994424.79,,542,0,32 -rsa,board,8,ok,32,21,0,128.43,125652376.39,,797,81,32 -rsa,board,9,ok,32,21,0,123.72,120847432.2,,491,0,32 -rsa,board,10,ok,32,21,0,108.38,106555044.94,,499,81,32 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +rsa,board,1,ok,32,2,0,34.89,32801709.91,31378816.76,393,13,,407,13,32 +rsa,board,2,ok,32,2,0,42.39,39819717.13,38396331.06,535,10,,546,10,32 +rsa,board,3,ok,32,2,0,39.67,35764049.3,34339788.49,919,9,,929,9,32 +rsa,board,4,ok,32,2,0,152.57,150142808.91,148719312.31,746,0,,747,0,32 +rsa,board,5,ok,32,2,0,112.95,110388949.25,108965564.88,501,35,,537,35,32 +rsa,board,6,ok,32,2,0,49.39,47584454.8,46161137.2,516,9,,526,9,32 +rsa,board,7,ok,32,2,0,84.69,83069277.91,81645790.13,513,0,,514,0,32 +rsa,board,8,ok,32,2,0,128.19,125613063.4,124188635.08,714,81,,797,81,32 +rsa,board,9,ok,32,2,0,123.61,120835660.05,119411091.61,484,0,,485,0,32 +rsa,board,10,ok,32,2,0,108.2,106493992.1,105068845.41,429,81,,511,81,32 diff --git a/results/intermittent/rsa/schematic.csv b/results/intermittent/rsa/schematic.csv index 3b88d647..3bb5271e 100644 --- a/results/intermittent/rsa/schematic.csv +++ b/results/intermittent/rsa/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -rsa,board,1,ok,12,500,690,4.9,2703546.0,,49,1,32 -rsa,board,2,ok,12,500,690,7.0,4350276.65,,61,1,32 -rsa,board,3,ok,12,500,690,5.32,1311508.88,,88,0,32 -rsa,board,4,ok,12,500,690,16.53,13940427.53,,67,0,32 -rsa,board,5,ok,12,500,690,13.82,11166504.15,,60,3,32 -rsa,board,6,ok,12,500,690,6.61,4691686.35,,54,1,32 -rsa,board,7,ok,12,500,690,10.81,9038056.03,,58,0,32 -rsa,board,8,ok,12,500,690,12.81,10150141.79,,75,6,32 -rsa,board,9,ok,12,500,690,13.69,10918551.31,,53,0,32 -rsa,board,10,ok,12,500,690,9.73,8078017.65,,55,6,32 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +rsa,board,1,ok,12,64,842,4.79,2704271.65,2595809.58,47,1,,49,1,32 +rsa,board,2,ok,12,64,842,6.79,4302521.96,4194042.94,57,1,,59,1,32 +rsa,board,3,ok,12,64,842,5.19,1302274.91,1193752.5,86,0,,87,0,32 +rsa,board,4,ok,12,64,842,16.47,13933482.05,13824988.4,65,0,,66,0,32 +rsa,board,5,ok,12,64,842,13.69,11178451.45,11069962.61,57,3,,61,3,32 +rsa,board,6,ok,12,64,842,6.49,4691775.07,4583291.3,52,1,,54,1,32 +rsa,board,7,ok,12,64,842,10.49,9016108.92,8907626.79,56,0,,57,0,32 +rsa,board,8,ok,12,64,842,12.69,10149091.25,10040577.6,68,6,,76,6,32 +rsa,board,9,ok,12,64,842,13.6,10921595.94,10813118.57,50,0,,51,0,32 +rsa,board,10,ok,12,64,842,9.69,8079009.5,7970531.65,49,6,,56,6,32 diff --git a/results/intermittent/rsa/schematicO3.csv b/results/intermittent/rsa/schematicO3.csv index 623563a3..8602c190 100644 --- a/results/intermittent/rsa/schematicO3.csv +++ b/results/intermittent/rsa/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -rsa,board,1,ok,9,785,684,3.09,862397.01,,20,0,32 -rsa,board,2,ok,9,785,684,3.39,760972.89,,24,0,32 -rsa,board,3,ok,9,785,684,4.53,548890.33,,38,0,32 -rsa,board,4,ok,9,785,684,8.61,6066181.21,,32,0,32 -rsa,board,5,ok,9,785,684,7.61,4954537.5,,27,1,32 -rsa,board,6,ok,9,785,684,3.13,1165361.81,,23,0,32 -rsa,board,7,ok,9,785,684,6.23,4438864.77,,26,0,32 -rsa,board,8,ok,9,785,684,8.06,5385852.31,,34,3,32 -rsa,board,9,ok,9,785,684,8.71,5736636.32,,25,0,32 -rsa,board,10,ok,9,785,684,5.81,4006591.62,,25,3,32 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +rsa,board,1,ok,14,19,701,2.99,863489.9,806160.8,19,0,,20,0,32 +rsa,board,2,ok,14,19,701,3.21,774975.36,717641.07,23,0,,24,0,32 +rsa,board,3,ok,14,19,701,4.49,585611.54,528249.44,39,0,,40,0,32 +rsa,board,4,ok,14,19,701,8.6,6062966.43,6005613.65,32,0,,33,0,32 +rsa,board,5,ok,14,19,701,7.47,4958958.71,4901620.14,24,1,,26,1,32 +rsa,board,6,ok,14,19,701,2.91,1168617.85,1111278.98,22,0,,23,0,32 +rsa,board,7,ok,14,19,701,6.59,5081790.92,5024454.72,23,0,,24,0,32 +rsa,board,8,ok,14,19,701,8.0,5403669.73,5346316.47,27,3,,32,3,32 +rsa,board,9,ok,14,19,701,8.49,5827968.63,5770622.03,25,0,,26,0,32 +rsa,board,10,ok,14,19,701,5.71,4007792.97,3950453.4,21,3,,25,3,32 diff --git a/results/intermittent/sensor_fusion/milp.csv b/results/intermittent/sensor_fusion/milp.csv index 81822175..7c83631d 100644 --- a/results/intermittent/sensor_fusion/milp.csv +++ b/results/intermittent/sensor_fusion/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sensor_fusion,board,1,ok,2,69,585,2.3,114564.04,,9,0,613 -sensor_fusion,board,2,ok,2,69,585,3.05,552331.4,,12,0,613 -sensor_fusion,board,3,ok,2,69,585,4.2,171245.69,,13,0,613 -sensor_fusion,board,4,ok,2,69,585,5.23,2615522.05,,11,0,613 -sensor_fusion,board,5,ok,2,69,585,4.51,1859225.77,,11,0,613 -sensor_fusion,board,6,ok,2,69,585,2.6,722572.41,,12,0,613 -sensor_fusion,board,7,ok,2,69,585,3.81,2030862.4,,12,0,613 -sensor_fusion,board,8,ok,2,69,585,3.63,889443.18,,15,0,613 -sensor_fusion,board,9,ok,2,69,585,3.73,918960.35,,9,0,613 -sensor_fusion,board,10,ok,2,69,585,1.92,114340.17,,9,0,613 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sensor_fusion,board,1,ok,2,37,849,2.1,103439.59,76028.6,7,0,,8,0,613 +sensor_fusion,board,2,ok,2,37,849,3.01,552177.73,524760.38,11,0,,12,0,613 +sensor_fusion,board,3,ok,2,37,849,4.1,171189.59,143770.64,12,0,,13,0,613 +sensor_fusion,board,4,ok,2,37,849,5.09,2615234.87,2587818.7,10,0,,11,0,613 +sensor_fusion,board,5,ok,2,37,849,4.4,1847903.26,1820485.86,10,0,,11,0,613 +sensor_fusion,board,6,ok,2,37,849,2.49,709850.96,682436.07,10,0,,11,0,613 +sensor_fusion,board,7,ok,2,37,849,3.68,2019660.29,1992244.11,10,0,,11,0,613 +sensor_fusion,board,8,ok,2,37,849,3.43,878010.23,850590.99,12,0,,14,0,613 +sensor_fusion,board,9,ok,2,37,849,3.65,919544.75,892131.64,8,0,,9,0,613 +sensor_fusion,board,10,ok,2,37,849,1.81,103532.6,76122.46,7,0,,8,0,613 diff --git a/results/intermittent/sensor_fusion/rockclimb.csv b/results/intermittent/sensor_fusion/rockclimb.csv index 0a40ba31..aaadd36a 100644 --- a/results/intermittent/sensor_fusion/rockclimb.csv +++ b/results/intermittent/sensor_fusion/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sensor_fusion,board,1,ok,2,69,0,2.28,127467.42,,10,0,613 -sensor_fusion,board,2,ok,2,69,0,3.21,566820.92,,12,0,613 -sensor_fusion,board,3,ok,2,69,0,4.23,184134.33,,14,0,613 -sensor_fusion,board,4,ok,2,69,0,6.01,3395580.47,,14,0,613 -sensor_fusion,board,5,ok,2,69,0,4.52,1883464.89,,13,0,613 -sensor_fusion,board,6,ok,2,69,0,2.94,1041305.46,,14,0,613 -sensor_fusion,board,7,ok,2,69,0,3.84,2056038.09,,13,0,613 -sensor_fusion,board,8,ok,2,69,0,3.62,901977.49,,16,0,613 -sensor_fusion,board,9,ok,2,69,0,3.82,932469.11,,10,0,613 -sensor_fusion,board,10,ok,2,69,0,1.92,127447.3,,10,0,613 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sensor_fusion,board,1,ok,2,7,0,2.22,127524.45,97777.52,9,0,,10,0,613 +sensor_fusion,board,2,ok,2,7,0,3.09,566489.86,536738.37,11,0,,12,0,613 +sensor_fusion,board,3,ok,2,7,0,4.08,184038.53,154283.96,13,0,,14,0,613 +sensor_fusion,board,4,ok,2,7,0,5.89,3403947.6,3374194.56,13,0,,14,0,613 +sensor_fusion,board,5,ok,2,7,0,4.39,1871997.4,1842248.35,11,0,,12,0,613 +sensor_fusion,board,6,ok,2,7,0,2.82,1039764.35,1010012.51,13,0,,14,0,613 +sensor_fusion,board,7,ok,2,7,0,3.72,2054502.5,2024752.61,12,0,,13,0,613 +sensor_fusion,board,8,ok,2,7,0,3.48,901055.78,871301.75,14,0,,16,0,613 +sensor_fusion,board,9,ok,2,7,0,3.71,931368.57,901620.89,9,0,,10,0,613 +sensor_fusion,board,10,ok,2,7,0,1.81,127488.8,97743.11,9,0,,10,0,613 diff --git a/results/intermittent/sensor_fusion/schematic.csv b/results/intermittent/sensor_fusion/schematic.csv index c1ca9f50..51b71f2c 100644 --- a/results/intermittent/sensor_fusion/schematic.csv +++ b/results/intermittent/sensor_fusion/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sensor_fusion,board,1,ok,1,22173,760,2.34,176386.51,,14,0,613 -sensor_fusion,board,2,ok,1,22173,760,3.34,652272.61,,16,0,613 -sensor_fusion,board,3,ok,1,22173,760,4.23,254457.81,,20,0,613 -sensor_fusion,board,4,ok,1,22173,760,5.98,3434854.11,,17,0,613 -sensor_fusion,board,5,ok,1,22173,760,5.73,3109926.65,,16,1,613 -sensor_fusion,board,6,ok,1,22173,760,3.01,1080409.21,,16,0,613 -sensor_fusion,board,7,ok,1,22173,760,4.8,3031753.66,,18,0,613 -sensor_fusion,board,8,ok,1,22173,760,3.74,939884.6,,19,0,613 -sensor_fusion,board,9,ok,1,22173,760,6.21,3355166.36,,16,0,613 -sensor_fusion,board,10,ok,1,22173,760,2.02,176467.78,,14,0,613 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sensor_fusion,board,1,ok,1,3728,869,2.2,176326.45,141861.83,13,0,,14,0,613 +sensor_fusion,board,2,ok,1,3728,869,3.1,639969.15,605497.43,15,0,,16,0,613 +sensor_fusion,board,3,ok,1,3728,869,4.19,254693.56,220218.78,19,0,,20,0,613 +sensor_fusion,board,4,ok,1,3728,869,5.99,3443412.14,3408937.31,17,0,,18,0,613 +sensor_fusion,board,5,ok,1,3728,869,5.7,3111912.7,3077439.2,15,1,,17,1,613 +sensor_fusion,board,6,ok,1,3728,869,2.88,1078500.76,1044029.11,16,0,,17,0,613 +sensor_fusion,board,7,ok,1,3728,869,4.79,3031594.51,2997123.25,16,0,,17,0,613 +sensor_fusion,board,8,ok,1,3728,869,3.6,926589.97,892116.06,17,0,,19,0,613 +sensor_fusion,board,9,ok,1,3728,869,6.1,3357630.26,3323161.32,14,0,,15,0,613 +sensor_fusion,board,10,ok,1,3728,869,1.97,176407.13,141942.0,13,0,,14,0,613 diff --git a/results/intermittent/sensor_fusion/schematicO3.csv b/results/intermittent/sensor_fusion/schematicO3.csv index 73d1d571..7f3430bf 100644 --- a/results/intermittent/sensor_fusion/schematicO3.csv +++ b/results/intermittent/sensor_fusion/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sensor_fusion,board,1,ok,1,3582,840,2.34,153298.23,,12,0,613 -sensor_fusion,board,2,ok,1,3582,840,3.33,628647.45,,16,0,613 -sensor_fusion,board,3,ok,1,3582,840,4.23,253096.61,,21,0,613 -sensor_fusion,board,4,ok,1,3582,840,6.01,3430775.68,,20,0,613 -sensor_fusion,board,5,ok,1,3582,840,5.73,3096611.64,,16,1,613 -sensor_fusion,board,6,ok,1,3582,840,3.03,1066284.14,,17,0,613 -sensor_fusion,board,7,ok,1,3582,840,4.83,3035501.56,,18,0,613 -sensor_fusion,board,8,ok,1,3582,840,5.01,2327302.0,,21,1,613 -sensor_fusion,board,9,ok,1,3582,840,6.24,3349523.74,,15,0,613 -sensor_fusion,board,10,ok,1,3582,840,1.94,153170.72,,12,0,613 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sensor_fusion,board,1,ok,1,497,891,2.29,153135.29,119997.89,11,0,,12,0,613 +sensor_fusion,board,2,ok,1,497,891,3.2,639922.2,606780.73,15,0,,16,0,613 +sensor_fusion,board,3,ok,1,497,891,4.18,241906.19,208758.38,19,0,,20,0,613 +sensor_fusion,board,4,ok,1,497,891,5.97,3436592.85,3403438.86,21,0,,22,0,613 +sensor_fusion,board,5,ok,1,497,891,5.61,3100701.58,3067554.81,14,1,,16,1,613 +sensor_fusion,board,6,ok,1,497,891,2.88,1064060.54,1030913.17,17,0,,18,0,613 +sensor_fusion,board,7,ok,1,497,891,3.79,2070533.0,2037389.71,14,0,,15,0,613 +sensor_fusion,board,8,ok,1,497,891,3.58,927987.6,894840.14,17,0,,19,0,613 +sensor_fusion,board,9,ok,1,497,891,6.08,3346582.54,3313442.26,14,0,,15,0,613 +sensor_fusion,board,10,ok,1,497,891,1.7,152986.94,119850.22,11,0,,12,0,613 diff --git a/results/intermittent/sha256/milp.csv b/results/intermittent/sha256/milp.csv index 98ced664..44c2b345 100644 --- a/results/intermittent/sha256/milp.csv +++ b/results/intermittent/sha256/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,8,323,737,3.13,876279.01,,18,1,131 -sha256,board,2,ok,8,323,737,3.39,747026.58,,18,0,131 -sha256,board,3,ok,8,323,737,4.32,332403.86,,17,0,131 -sha256,board,4,ok,8,323,737,7.81,5244015.04,,19,2,131 -sha256,board,5,ok,8,323,737,5.79,3182369.09,,18,1,131 -sha256,board,6,ok,8,323,737,3.04,1136742.69,,17,0,131 -sha256,board,7,ok,8,323,737,4.85,3079997.31,,17,0,131 -sha256,board,8,ok,8,323,737,7.33,4634016.38,,23,3,131 -sha256,board,9,ok,8,323,737,6.33,3426458.79,,19,1,131 -sha256,board,10,ok,8,323,737,5.83,3994344.1,,20,3,131 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sha256,board,1,ok,8,258,859,2.99,872692.95,773372.19,16,1,,18,1,131 +sha256,board,2,ok,8,258,859,3.3,746531.66,647203.93,17,0,,18,0,131 +sha256,board,3,ok,8,258,859,4.24,343609.96,244282.74,17,0,,18,0,131 +sha256,board,4,ok,8,258,859,7.7,5237944.71,5138618.63,16,2,,19,2,131 +sha256,board,5,ok,8,258,859,5.7,3185576.5,3086253.34,16,1,,18,1,131 +sha256,board,6,ok,8,258,859,3.0,1135516.34,1036190.25,16,0,,17,0,131 +sha256,board,7,ok,8,258,859,4.78,3093229.95,2993908.11,16,0,,17,0,131 +sha256,board,8,ok,8,258,859,5.02,2411920.61,2312595.77,17,1,,20,1,131 +sha256,board,9,ok,8,258,859,6.19,3438962.32,3339635.91,17,1,,19,1,131 +sha256,board,10,ok,8,258,859,5.7,3993632.56,3894308.92,16,3,,20,3,131 diff --git a/results/intermittent/sha256/rockclimb.csv b/results/intermittent/sha256/rockclimb.csv index db00abbc..c7370ec4 100644 --- a/results/intermittent/sha256/rockclimb.csv +++ b/results/intermittent/sha256/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,11,94,0,7.31,5136423.52,,74,2,131 -sha256,board,2,ok,11,94,0,8.43,5771234.55,,104,1,131 -sha256,board,3,ok,11,94,0,8.98,5006336.95,,178,1,131 -sha256,board,4,ok,11,94,0,29.63,26997006.39,,135,0,131 -sha256,board,5,ok,11,94,0,21.33,18654501.48,,95,6,131 -sha256,board,6,ok,11,94,0,8.64,6752439.31,,93,1,131 -sha256,board,7,ok,11,94,0,16.64,14861155.94,,93,0,131 -sha256,board,8,ok,11,94,0,22.11,19377513.78,,140,12,131 -sha256,board,9,ok,11,94,0,23.72,20848491.04,,93,0,131 -sha256,board,10,ok,11,94,0,17.75,15912625.79,,88,12,131 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sha256,board,1,ok,11,8,0,7.22,5137376.57,4933454.62,71,2,,74,2,131 +sha256,board,2,ok,11,8,0,8.14,5598049.91,5394087.42,97,1,,99,1,131 +sha256,board,3,ok,11,8,0,8.9,4962880.96,4758793.77,170,1,,172,1,131 +sha256,board,4,ok,11,8,0,26.92,24433894.22,24229894.12,129,0,,130,0,131 +sha256,board,5,ok,11,8,0,21.2,18639535.11,18435558.92,91,6,,98,6,131 +sha256,board,6,ok,11,8,0,8.41,6614513.14,6410557.03,89,1,,91,1,131 +sha256,board,7,ok,11,8,0,16.63,14866982.92,14663027.36,92,0,,93,0,131 +sha256,board,8,ok,11,8,0,22.01,19379136.53,19175102.42,124,12,,138,12,131 +sha256,board,9,ok,11,8,0,23.54,20831192.41,20627229.82,90,0,,91,0,131 +sha256,board,10,ok,11,8,0,17.61,15897152.83,15693213.53,74,12,,87,12,131 diff --git a/results/intermittent/sha256/schematic.csv b/results/intermittent/sha256/schematic.csv index 90a9ccf3..f45191ca 100644 --- a/results/intermittent/sha256/schematic.csv +++ b/results/intermittent/sha256/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,7,34,643,4.83,2604244.94,,37,1,131 -sha256,board,2,ok,7,34,643,4.72,2067794.82,,48,0,131 -sha256,board,3,ok,7,34,643,5.14,1118009.57,,63,0,131 -sha256,board,4,ok,7,34,643,13.9,11308089.01,,48,0,131 -sha256,board,5,ok,7,34,643,11.92,9323563.96,,50,3,131 -sha256,board,6,ok,7,34,643,3.6,1683798.95,,39,0,131 -sha256,board,7,ok,7,34,643,8.42,6570507.31,,42,0,131 -sha256,board,8,ok,7,34,643,12.02,9280025.09,,54,6,131 -sha256,board,9,ok,7,34,643,12.82,10001641.13,,46,3,131 -sha256,board,10,ok,7,34,643,9.79,7979794.56,,44,6,131 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sha256,board,1,ok,7,4,813,4.67,2591380.8,2470999.84,36,1,,38,1,131 +sha256,board,2,ok,7,4,813,4.41,1919376.92,1798982.98,44,0,,45,0,131 +sha256,board,3,ok,7,4,813,4.98,1081572.08,961152.75,60,0,,61,0,131 +sha256,board,4,ok,7,4,813,13.73,11287201.05,11166797.55,47,1,,49,1,131 +sha256,board,5,ok,7,4,813,11.82,9299736.14,9179338.59,42,3,,46,3,131 +sha256,board,6,ok,7,4,813,3.51,1682344.67,1561951.92,38,0,,39,0,131 +sha256,board,7,ok,7,4,813,10.31,8572265.81,8451872.44,44,0,,45,0,131 +sha256,board,8,ok,7,4,813,11.93,9280862.76,9160452.13,48,6,,56,6,131 +sha256,board,9,ok,7,4,813,11.22,8422957.74,8302569.37,39,1,,41,1,131 +sha256,board,10,ok,7,4,813,9.73,7966946.58,7846555.89,37,6,,44,6,131 diff --git a/results/intermittent/sha256/schematicO3.csv b/results/intermittent/sha256/schematicO3.csv index 22b54a04..ed1c1bf9 100644 --- a/results/intermittent/sha256/schematicO3.csv +++ b/results/intermittent/sha256/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,6,7,582,4.73,2535113.08,,35,2,131 -sha256,board,2,ok,6,7,582,4.3,1623959.18,,33,0,131 -sha256,board,3,ok,6,7,582,4.71,670852.83,,33,0,131 -sha256,board,4,ok,6,7,582,11.25,8659595.61,,34,1,131 -sha256,board,5,ok,6,7,582,8.92,6272654.61,,35,2,131 -sha256,board,6,ok,6,7,582,3.54,1613865.92,,33,0,131 -sha256,board,7,ok,6,7,582,7.32,5518165.93,,33,0,131 -sha256,board,8,ok,6,7,582,8.22,5507920.67,,37,3,131 -sha256,board,9,ok,6,7,582,11.21,8334938.04,,36,2,131 -sha256,board,10,ok,6,7,582,9.71,7911447.79,,39,6,131 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +sha256,board,1,ok,6,2,1008,4.69,2533685.53,2431750.36,33,1,,35,1,131 +sha256,board,2,ok,6,2,1008,4.22,1647106.81,1545173.7,32,0,,33,0,131 +sha256,board,3,ok,6,2,1008,4.6,657337.08,555405.61,32,0,,33,0,131 +sha256,board,4,ok,6,2,1008,11.19,8636676.93,8534735.6,32,2,,35,2,131 +sha256,board,5,ok,6,2,1008,8.71,6258860.66,6156923.79,32,2,,35,2,131 +sha256,board,6,ok,6,2,1008,3.4,1625429.1,1523500.72,32,0,,33,0,131 +sha256,board,7,ok,6,2,1008,7.28,5540701.11,5438769.75,32,0,,33,0,131 +sha256,board,8,ok,6,2,1008,8.2,5523271.75,5421332.62,32,3,,37,3,131 +sha256,board,9,ok,6,2,1008,11.0,8225261.47,8123322.34,33,1,,35,1,131 +sha256,board,10,ok,6,2,1008,9.59,7895315.85,7793382.43,32,6,,39,6,131 diff --git a/results/intermittent/stringsearch/milp.csv b/results/intermittent/stringsearch/milp.csv index a8cba727..938c4584 100644 --- a/results/intermittent/stringsearch/milp.csv +++ b/results/intermittent/stringsearch/milp.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -stringsearch,board,1,ok,4,306,715,2.43,194759.23,,15,0,20 -stringsearch,board,2,ok,4,306,715,3.31,695735.22,,18,0,20 -stringsearch,board,3,ok,4,306,715,4.34,295742.07,,24,0,20 -stringsearch,board,4,ok,4,306,715,6.71,4089260.09,,22,0,20 -stringsearch,board,5,ok,4,306,715,5.81,3162240.55,,20,1,20 -stringsearch,board,6,ok,4,306,715,3.04,1108963.16,,20,0,20 -stringsearch,board,7,ok,4,306,715,4.94,3053188.25,,21,0,20 -stringsearch,board,8,ok,4,306,715,5.13,2363282.67,,24,1,20 -stringsearch,board,9,ok,4,306,715,6.19,3390160.17,,18,0,20 -stringsearch,board,10,ok,4,306,715,2.02,195216.63,,15,0,20 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +stringsearch,board,1,ok,4,296,767,2.3,183881.2,141362.92,13,0,,14,0,20 +stringsearch,board,2,ok,4,296,767,3.22,693636.08,651107.68,18,0,,19,0,20 +stringsearch,board,3,ok,4,296,767,4.19,295217.57,252680.6,23,0,,24,0,20 +stringsearch,board,4,ok,4,296,767,6.0,3472219.53,3429687.77,20,0,,21,0,20 +stringsearch,board,5,ok,4,296,767,5.72,3139409.11,3096884.21,18,1,,20,1,20 +stringsearch,board,6,ok,4,296,767,2.82,1096235.46,1053706.35,18,0,,19,0,20 +stringsearch,board,7,ok,4,296,767,4.8,3061818.13,3019288.66,19,0,,20,0,20 +stringsearch,board,8,ok,4,296,767,5.0,2363430.01,2320897.17,22,1,,25,1,20 +stringsearch,board,9,ok,4,296,767,6.2,3387243.48,3344717.44,17,0,,18,0,20 +stringsearch,board,10,ok,4,296,767,1.81,184238.98,141717.8,13,0,,14,0,20 diff --git a/results/intermittent/stringsearch/rockclimb.csv b/results/intermittent/stringsearch/rockclimb.csv index 9cf6dd91..52d49b78 100644 --- a/results/intermittent/stringsearch/rockclimb.csv +++ b/results/intermittent/stringsearch/rockclimb.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -stringsearch,board,1,ok,8,4,0,50.13,47998548.83,,601,19,20 -stringsearch,board,2,ok,8,4,0,62.01,59362345.9,,813,15,20 -stringsearch,board,3,ok,8,4,0,59.45,55404698.41,,1434,14,20 -stringsearch,board,4,ok,8,4,0,246.27,243025999.82,,1158,0,20 -stringsearch,board,5,ok,8,4,0,167.01,164327886.31,,816,53,20 -stringsearch,board,6,ok,8,4,0,74.83,72892097.81,,758,14,20 -stringsearch,board,7,ok,8,4,0,132.68,130823242.03,,809,0,20 -stringsearch,board,8,ok,8,4,0,188.29,185616815.06,,1176,120,20 -stringsearch,board,9,ok,8,4,0,178.69,175880379.17,,709,0,20 -stringsearch,board,10,ok,8,4,0,159.58,157748111.11,,731,120,20 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +stringsearch,board,1,ok,8,1,0,50.0,47924201.07,45836536.18,574,19,,594,19,20 +stringsearch,board,2,ok,8,1,0,59.19,56569666.05,54481752.88,789,14,,804,14,20 +stringsearch,board,3,ok,8,1,0,56.31,52435042.68,50345930.46,1379,13,,1393,13,20 +stringsearch,board,4,ok,8,1,0,244.34,241866192.61,239777961.42,1169,0,,1170,0,20 +stringsearch,board,5,ok,8,1,0,165.59,163031933.4,160943914.88,736,52,,789,52,20 +stringsearch,board,6,ok,8,1,0,70.32,68560787.6,66472796.35,744,13,,758,13,20 +stringsearch,board,7,ok,8,1,0,129.09,127348351.3,125260385.87,790,0,,791,0,20 +stringsearch,board,8,ok,8,1,0,185.11,182557319.69,180468729.53,1033,118,,1153,118,20 +stringsearch,board,9,ok,8,1,0,176.02,173348771.35,171261080.52,715,0,,716,0,20 +stringsearch,board,10,ok,8,1,0,155.49,153778501.15,151690880.72,619,117,,737,117,20 diff --git a/results/intermittent/stringsearch/schematic.csv b/results/intermittent/stringsearch/schematic.csv index 5d09894d..a65eff80 100644 --- a/results/intermittent/stringsearch/schematic.csv +++ b/results/intermittent/stringsearch/schematic.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -stringsearch,board,1,ok,7,17,693,5.59,3413471.0,,57,1,20 -stringsearch,board,2,ok,7,17,693,7.19,4547859.46,,66,1,20 -stringsearch,board,3,ok,7,17,693,7.91,3941585.89,,94,1,20 -stringsearch,board,4,ok,7,17,693,19.11,16554115.85,,77,0,20 -stringsearch,board,5,ok,7,17,693,15.12,12482795.37,,70,4,20 -stringsearch,board,6,ok,7,17,693,7.81,5848506.2,,64,1,20 -stringsearch,board,7,ok,7,17,693,11.82,10048013.76,,62,0,20 -stringsearch,board,8,ok,7,17,693,14.31,11616181.48,,78,7,20 -stringsearch,board,9,ok,7,17,693,16.32,13400526.7,,64,3,20 -stringsearch,board,10,ok,7,17,693,13.75,11944230.32,,68,9,20 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +stringsearch,board,1,ok,7,4,824,5.39,3404422.96,3259539.93,53,1,,55,1,20 +stringsearch,board,2,ok,7,4,824,7.02,4480834.97,4335919.12,66,1,,68,1,20 +stringsearch,board,3,ok,7,4,824,5.32,1399846.67,1254895.38,93,0,,94,0,20 +stringsearch,board,4,ok,7,4,824,18.89,16368040.71,16223139.06,70,0,,71,0,20 +stringsearch,board,5,ok,7,4,824,14.99,12479000.56,12334093.01,62,4,,67,4,20 +stringsearch,board,6,ok,7,4,824,7.69,5833727.52,5688825.69,64,1,,66,1,20 +stringsearch,board,7,ok,7,4,824,11.79,10043258.66,9898360.38,60,0,,61,0,20 +stringsearch,board,8,ok,7,4,824,14.3,11631230.21,11486295.85,72,7,,81,7,20 +stringsearch,board,9,ok,7,4,824,16.21,13399769.29,13254878.94,62,0,,63,0,20 +stringsearch,board,10,ok,7,4,824,13.63,11905455.22,11760565.73,55,9,,65,9,20 diff --git a/results/intermittent/stringsearch/schematicO3.csv b/results/intermittent/stringsearch/schematicO3.csv index fe96f208..1e50363e 100644 --- a/results/intermittent/stringsearch/schematicO3.csv +++ b/results/intermittent/stringsearch/schematicO3.csv @@ -1,11 +1,11 @@ -benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -stringsearch,board,1,ok,4,15,625,2.45,222773.22,,17,0,20 -stringsearch,board,2,ok,4,15,625,3.42,733615.56,,22,0,20 -stringsearch,board,3,ok,4,15,625,4.34,345233.83,,28,0,20 -stringsearch,board,4,ok,4,15,625,8.62,6040145.38,,29,0,20 -stringsearch,board,5,ok,4,15,625,5.82,3180331.42,,23,1,20 -stringsearch,board,6,ok,4,15,625,3.03,1136803.26,,22,0,20 -stringsearch,board,7,ok,4,15,625,4.94,3073280.12,,20,0,20 -stringsearch,board,8,ok,4,15,625,5.13,2403477.66,,28,1,20 -stringsearch,board,9,ok,4,15,625,6.23,3419318.33,,20,0,20 -stringsearch,board,10,ok,4,15,625,5.84,3963444.54,,22,3,20 +benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result +stringsearch,board,1,ok,4,2,740,2.29,211682.59,163505.27,15,0,,16,0,20 +stringsearch,board,2,ok,4,2,740,3.29,721721.24,673536.68,20,0,,21,0,20 +stringsearch,board,3,ok,4,2,740,4.3,344957.95,296765.23,27,0,,28,0,20 +stringsearch,board,4,ok,4,2,740,8.43,6021580.84,5973384.87,29,0,,30,0,20 +stringsearch,board,5,ok,4,2,740,5.72,3178768.47,3130578.48,20,1,,22,1,20 +stringsearch,board,6,ok,4,2,740,3.0,1122694.36,1074510.98,21,0,,22,0,20 +stringsearch,board,7,ok,4,2,740,4.81,3078202.11,3030016.38,22,0,,23,0,20 +stringsearch,board,8,ok,4,2,740,5.0,2404727.76,2356535.9,24,1,,27,1,20 +stringsearch,board,9,ok,4,2,740,6.2,3413269.35,3365084.56,20,0,,21,0,20 +stringsearch,board,10,ok,4,2,740,5.59,3953868.33,3905684.06,18,3,,22,3,20 diff --git a/results/intermittent/summary.csv b/results/intermittent/summary.csv index f6683b6a..5da3c1d6 100644 --- a/results/intermittent/summary.csv +++ b/results/intermittent/summary.csv @@ -1,521 +1,521 @@ -benchmark,algorithm,trace,status,complete,correct,result,expected_result,runtime_wait_count,runtime_recovery_boots,execution_time_us,replay_seconds,region_boundaries -aes,milp,1,ok,yes,yes,107,107,26,1,965024.04,3.14,4 -aes,milp,2,ok,yes,yes,107,107,25,0,892999.21,3.46,4 -aes,milp,3,ok,yes,yes,107,107,25,0,562577.45,4.62,4 -aes,milp,4,ok,yes,yes,107,107,28,3,6090705.01,8.69,4 -aes,milp,5,ok,yes,yes,107,107,27,2,6217378.17,8.79,4 -aes,milp,6,ok,yes,yes,107,107,25,0,1235151.42,3.2,4 -aes,milp,7,ok,yes,yes,107,107,25,0,5509520.23,7.27,4 -aes,milp,8,ok,yes,yes,107,107,29,3,5456901.95,8.18,4 -aes,milp,9,ok,yes,yes,107,107,26,1,5882944.0,8.65,4 -aes,milp,10,ok,yes,yes,107,107,28,3,4095920.08,5.86,4 -aes,rockclimb,1,ok,yes,yes,107,107,181,5,13470531.57,15.59,15 -aes,rockclimb,2,ok,yes,yes,107,107,246,4,16497833.66,19.06,15 -aes,rockclimb,3,ok,yes,yes,107,107,417,4,15803638.67,19.82,15 -aes,rockclimb,4,ok,yes,yes,107,107,336,0,68906452.56,71.44,15 -aes,rockclimb,5,ok,yes,yes,107,107,235,15,48384250.21,50.99,15 -aes,rockclimb,6,ok,yes,yes,107,107,233,4,21294974.44,23.12,15 -aes,rockclimb,7,ok,yes,yes,107,107,236,0,36835081.09,38.61,15 -aes,rockclimb,8,ok,yes,yes,107,107,339,33,51746657.66,54.38,15 -aes,rockclimb,9,ok,yes,yes,107,107,217,0,50911240.38,53.75,15 -aes,rockclimb,10,ok,yes,yes,107,107,227,36,47291745.52,49.01,15 -aes,schematic,1,ok,yes,yes,107,107,460,14,35360844.09,37.5,11 -aes,schematic,2,ok,yes,yes,107,107,562,11,43740536.27,46.39,11 -aes,schematic,3,ok,yes,yes,107,107,786,8,32585052.77,36.61,11 -aes,schematic,4,ok,yes,yes,107,107,625,0,152781925.51,155.39,11 -aes,schematic,5,ok,yes,yes,107,107,602,39,122742896.75,125.33,11 -aes,schematic,6,ok,yes,yes,107,107,553,10,52707876.73,54.58,11 -aes,schematic,7,ok,yes,yes,107,107,534,0,88856881.6,90.61,11 -aes,schematic,8,ok,yes,yes,107,107,726,81,125656322.91,128.29,11 -aes,schematic,9,ok,yes,yes,107,107,528,18,123406444.5,126.29,11 -aes,schematic,10,ok,yes,yes,107,107,546,87,114439162.81,116.2,11 -aes,schematicO3,1,ok,yes,yes,107,107,56,1,3396499.19,5.57,2 -aes,schematicO3,2,ok,yes,yes,107,107,63,1,4464141.26,7.1,2 -aes,schematicO3,3,ok,yes,yes,107,107,93,0,1395899.12,5.36,2 -aes,schematicO3,4,ok,yes,yes,107,107,70,0,16504376.22,19.1,2 -aes,schematicO3,5,ok,yes,yes,107,107,68,4,12449088.09,15.06,2 -aes,schematicO3,6,ok,yes,yes,107,107,64,1,5834818.73,7.74,2 -aes,schematicO3,7,ok,yes,yes,107,107,63,0,9998973.47,11.78,2 -aes,schematicO3,8,ok,yes,yes,107,107,84,7,11615057.82,14.26,2 -aes,schematicO3,9,ok,yes,yes,107,107,60,0,13403125.79,16.26,2 -aes,schematicO3,10,ok,yes,yes,107,107,66,9,11914989.7,13.69,2 -crc,milp,1,ok,yes,yes,20431,20431,7,0,95136.23,2.18,3 -crc,milp,2,ok,yes,yes,20431,20431,7,0,535811.95,3.2,3 -crc,milp,3,ok,yes,yes,20431,20431,7,0,119586.36,3.9,3 -crc,milp,4,ok,yes,yes,20431,20431,8,1,839428.1,3.39,3 -crc,milp,5,ok,yes,yes,20431,20431,7,0,1842730.53,4.5,3 -crc,milp,6,ok,yes,yes,20431,20431,7,0,669080.02,2.56,3 -crc,milp,7,ok,yes,yes,20431,20431,7,0,1868235.97,3.6,3 -crc,milp,8,ok,yes,yes,20431,20431,8,0,849897.97,3.5,3 -crc,milp,9,ok,yes,yes,20431,20431,7,0,886919.06,3.7,3 -crc,milp,10,ok,yes,yes,20431,20431,7,0,95281.54,1.87,3 -crc,rockclimb,1,ok,yes,yes,20431,20431,65,2,5082226.15,7.18,8 -crc,rockclimb,2,ok,yes,yes,20431,20431,85,1,4788899.94,7.39,8 -crc,rockclimb,3,ok,yes,yes,20431,20431,152,1,4626745.64,8.61,8 -crc,rockclimb,4,ok,yes,yes,20431,20431,118,0,24374391.92,26.91,8 -crc,rockclimb,5,ok,yes,yes,20431,20431,87,5,17373029.29,19.97,8 -crc,rockclimb,6,ok,yes,yes,20431,20431,81,1,6330561.45,8.19,8 -crc,rockclimb,7,ok,yes,yes,20431,20431,85,0,13526218.96,15.33,8 -crc,rockclimb,8,ok,yes,yes,20431,20431,124,12,19248577.93,21.87,8 -crc,rockclimb,9,ok,yes,yes,20431,20431,78,0,18377062.42,21.21,8 -crc,rockclimb,10,ok,yes,yes,20431,20431,77,12,15817079.81,17.58,8 -crc,schematic,1,ok,yes,yes,20431,20431,135,3,8586257.42,10.69,3 -crc,schematic,2,ok,yes,yes,20431,20431,178,3,12178598.64,14.81,3 -crc,schematic,3,ok,yes,yes,20431,20431,282,2,9056689.11,13.11,3 -crc,schematic,4,ok,yes,yes,20431,20431,213,0,45306634.59,47.87,3 -crc,schematic,5,ok,yes,yes,20431,20431,177,11,34139466.28,36.8,3 -crc,schematic,6,ok,yes,yes,20431,20431,161,3,14091786.59,16.01,3 -crc,schematic,7,ok,yes,yes,20431,20431,170,0,26374084.54,28.18,3 -crc,schematic,8,ok,yes,yes,20431,20431,232,22,34720122.59,37.4,3 -crc,schematic,9,ok,yes,yes,20431,20431,154,0,35851240.84,38.69,3 -crc,schematic,10,ok,yes,yes,20431,20431,161,24,31614971.77,33.38,3 -crc,schematicO3,1,ok,yes,yes,20431,20431,8,0,113487.66,2.29,3 -crc,schematicO3,2,ok,yes,yes,20431,20431,8,0,540701.58,3.18,3 -crc,schematicO3,3,ok,yes,yes,20431,20431,8,0,137706.55,4.11,3 -crc,schematicO3,4,ok,yes,yes,20431,20431,9,1,855178.73,3.48,3 -crc,schematicO3,5,ok,yes,yes,20431,20431,8,0,1835723.58,4.51,3 -crc,schematicO3,6,ok,yes,yes,20431,20431,8,0,686337.1,2.61,3 -crc,schematicO3,7,ok,yes,yes,20431,20431,8,0,1872743.18,3.61,3 -crc,schematicO3,8,ok,yes,yes,20431,20431,9,0,867969.11,3.59,3 -crc,schematicO3,9,ok,yes,yes,20431,20431,8,0,915513.62,3.79,3 -crc,schematicO3,10,ok,yes,yes,20431,20431,8,0,113531.06,1.88,3 -rsa,milp,1,ok,yes,yes,32,32,16,0,210498.26,2.42,7 -rsa,milp,2,ok,yes,yes,32,32,15,0,664434.87,3.32,7 -rsa,milp,3,ok,yes,yes,32,32,19,0,255906.87,4.23,7 -rsa,milp,4,ok,yes,yes,32,32,19,1,3444064.42,5.98,7 -rsa,milp,5,ok,yes,yes,32,32,18,1,3114008.01,5.71,7 -rsa,milp,6,ok,yes,yes,32,32,15,0,1093094.99,3.03,7 -rsa,milp,7,ok,yes,yes,32,32,16,0,3019820.21,4.83,7 -rsa,milp,8,ok,yes,yes,32,32,19,1,2324654.2,5.02,7 -rsa,milp,9,ok,yes,yes,32,32,18,1,3378467.03,6.21,7 -rsa,milp,10,ok,yes,yes,32,32,15,0,199428.76,2.03,7 -rsa,rockclimb,1,ok,yes,yes,32,32,413,13,32875332.27,35.02,32 -rsa,rockclimb,2,ok,yes,yes,32,32,551,10,39962127.06,42.61,32 -rsa,rockclimb,3,ok,yes,yes,32,32,982,9,36536985.15,40.48,32 -rsa,rockclimb,4,ok,yes,yes,32,32,781,0,168526883.79,171.11,32 -rsa,rockclimb,5,ok,yes,yes,32,32,560,36,113458172.23,116.03,32 -rsa,rockclimb,6,ok,yes,yes,32,32,525,9,48045556.63,50.01,32 -rsa,rockclimb,7,ok,yes,yes,32,32,542,0,86994424.79,88.8,32 -rsa,rockclimb,8,ok,yes,yes,32,32,797,81,125652376.39,128.43,32 -rsa,rockclimb,9,ok,yes,yes,32,32,491,0,120847432.2,123.72,32 -rsa,rockclimb,10,ok,yes,yes,32,32,499,81,106555044.94,108.38,32 -rsa,schematic,1,ok,yes,yes,32,32,49,1,2703546.0,4.9,12 -rsa,schematic,2,ok,yes,yes,32,32,61,1,4350276.65,7.0,12 -rsa,schematic,3,ok,yes,yes,32,32,88,0,1311508.88,5.32,12 -rsa,schematic,4,ok,yes,yes,32,32,67,0,13940427.53,16.53,12 -rsa,schematic,5,ok,yes,yes,32,32,60,3,11166504.15,13.82,12 -rsa,schematic,6,ok,yes,yes,32,32,54,1,4691686.35,6.61,12 -rsa,schematic,7,ok,yes,yes,32,32,58,0,9038056.03,10.81,12 -rsa,schematic,8,ok,yes,yes,32,32,75,6,10150141.79,12.81,12 -rsa,schematic,9,ok,yes,yes,32,32,53,0,10918551.31,13.69,12 -rsa,schematic,10,ok,yes,yes,32,32,55,6,8078017.65,9.73,12 -rsa,schematicO3,1,ok,yes,yes,32,32,20,0,862397.01,3.09,9 -rsa,schematicO3,2,ok,yes,yes,32,32,24,0,760972.89,3.39,9 -rsa,schematicO3,3,ok,yes,yes,32,32,38,0,548890.33,4.53,9 -rsa,schematicO3,4,ok,yes,yes,32,32,32,0,6066181.21,8.61,9 -rsa,schematicO3,5,ok,yes,yes,32,32,27,1,4954537.5,7.61,9 -rsa,schematicO3,6,ok,yes,yes,32,32,23,0,1165361.81,3.13,9 -rsa,schematicO3,7,ok,yes,yes,32,32,26,0,4438864.77,6.23,9 -rsa,schematicO3,8,ok,yes,yes,32,32,34,3,5385852.31,8.06,9 -rsa,schematicO3,9,ok,yes,yes,32,32,25,0,5736636.32,8.71,9 -rsa,schematicO3,10,ok,yes,yes,32,32,25,3,4006591.62,5.81,9 -dijkstra,milp,1,ok,yes,yes,3788,3788,9,0,114521.93,2.31,3 -dijkstra,milp,2,ok,yes,yes,3788,3788,10,0,553899.22,3.22,3 -dijkstra,milp,3,ok,yes,yes,3788,3788,11,0,149153.1,4.12,3 -dijkstra,milp,4,ok,yes,yes,3788,3788,10,1,1456519.35,4.03,3 -dijkstra,milp,5,ok,yes,yes,3788,3788,10,0,1848389.6,4.45,3 -dijkstra,milp,6,ok,yes,yes,3788,3788,9,0,701548.23,2.61,3 -dijkstra,milp,7,ok,yes,yes,3788,3788,10,0,2016812.87,3.82,3 -dijkstra,milp,8,ok,yes,yes,3788,3788,11,0,868440.06,3.53,3 -dijkstra,milp,9,ok,yes,yes,3788,3788,9,0,933312.57,3.82,3 -dijkstra,milp,10,ok,yes,yes,3788,3788,9,0,114854.4,1.92,3 -dijkstra,rockclimb,1,ok,yes,yes,3788,3788,506,16,40485027.06,42.71,4 -dijkstra,rockclimb,2,ok,yes,yes,3788,3788,727,13,52612247.45,55.31,4 -dijkstra,rockclimb,3,ok,yes,yes,3788,3788,1208,11,44727340.18,48.69,4 -dijkstra,rockclimb,4,ok,yes,yes,3788,3788,946,0,199933655.57,202.55,4 -dijkstra,rockclimb,5,ok,yes,yes,3788,3788,696,45,139541465.82,142.13,4 -dijkstra,rockclimb,6,ok,yes,yes,3788,3788,652,12,61454282.08,63.39,4 -dijkstra,rockclimb,7,ok,yes,yes,3788,3788,665,0,106455288.37,108.18,4 -dijkstra,rockclimb,8,ok,yes,yes,3788,3788,990,102,157862186.89,160.57,4 -dijkstra,rockclimb,9,ok,yes,yes,3788,3788,612,0,150854751.8,153.69,4 -dijkstra,rockclimb,10,ok,yes,yes,3788,3788,623,102,134106748.89,135.87,4 -dijkstra,schematic,1,ok,yes,yes,3788,3788,53,1,3359053.88,5.55,2 -dijkstra,schematic,2,ok,yes,yes,3788,3788,67,1,4464300.59,7.11,2 -dijkstra,schematic,3,ok,yes,yes,3788,3788,98,0,1393102.81,5.4,2 -dijkstra,schematic,4,ok,yes,yes,3788,3788,72,0,16530644.58,19.09,2 -dijkstra,schematic,5,ok,yes,yes,3788,3788,66,4,12419432.29,15.09,2 -dijkstra,schematic,6,ok,yes,yes,3788,3788,59,1,5793464.84,7.69,2 -dijkstra,schematic,7,ok,yes,yes,3788,3788,62,0,9984875.18,11.78,2 -dijkstra,schematic,8,ok,yes,yes,3788,3788,86,7,11613517.11,14.31,2 -dijkstra,schematic,9,ok,yes,yes,3788,3788,60,0,13367138.13,16.18,2 -dijkstra,schematic,10,ok,yes,yes,3788,3788,63,9,11884450.43,13.71,2 -dijkstra,schematicO3,1,ok,yes,yes,3788,3788,10,0,127350.98,2.27,2 -dijkstra,schematicO3,2,ok,yes,yes,3788,3788,11,0,567140.66,3.24,2 -dijkstra,schematicO3,3,ok,yes,yes,3788,3788,14,0,183765.91,4.19,2 -dijkstra,schematicO3,4,ok,yes,yes,3788,3788,12,0,2623257.28,5.17,2 -dijkstra,schematicO3,5,ok,yes,yes,3788,3788,12,0,1872368.39,4.47,2 -dijkstra,schematicO3,6,ok,yes,yes,3788,3788,12,0,881052.58,2.77,2 -dijkstra,schematicO3,7,ok,yes,yes,3788,3788,13,0,2053596.08,3.83,2 -dijkstra,schematicO3,8,ok,yes,yes,3788,3788,14,0,891238.7,3.63,2 -dijkstra,schematicO3,9,ok,yes,yes,3788,3788,11,0,942710.75,3.78,2 -dijkstra,schematicO3,10,ok,yes,yes,3788,3788,9,0,116623.14,1.93,2 -qsort,milp,1,ok,yes,yes,9987,9987,11,0,139078.2,2.33,3 -qsort,milp,2,ok,yes,yes,9987,9987,13,0,615138.9,3.23,3 -qsort,milp,3,ok,yes,yes,9987,9987,11,0,151393.6,4.13,3 -qsort,milp,4,ok,yes,yes,9987,9987,13,0,3386574.07,5.98,3 -qsort,milp,5,ok,yes,yes,9987,9987,12,0,1862109.66,4.49,3 -qsort,milp,6,ok,yes,yes,9987,9987,12,0,723980.46,2.6,3 -qsort,milp,7,ok,yes,yes,9987,9987,13,0,2045983.92,3.93,3 -qsort,milp,8,ok,yes,yes,9987,9987,15,0,906885.24,3.58,3 -qsort,milp,9,ok,yes,yes,9987,9987,11,0,945500.94,3.79,3 -qsort,milp,10,ok,yes,yes,9987,9987,10,0,128090.11,1.99,3 -qsort,rockclimb,1,ok,yes,yes,9987,9987,106,3,7718952.35,9.9,5 -qsort,rockclimb,2,ok,yes,yes,9987,9987,154,2,9500086.57,12.11,5 -qsort,rockclimb,3,ok,yes,yes,9987,9987,250,2,8517686.52,12.51,5 -qsort,rockclimb,4,ok,yes,yes,9987,9987,206,0,42719466.5,45.3,5 -qsort,rockclimb,5,ok,yes,yes,9987,9987,143,9,27966328.1,30.59,5 -qsort,rockclimb,6,ok,yes,yes,9987,9987,133,2,11495256.59,13.42,5 -qsort,rockclimb,7,ok,yes,yes,9987,9987,136,0,22510934.86,24.29,5 -qsort,rockclimb,8,ok,yes,yes,9987,9987,199,19,30083872.14,32.63,5 -qsort,rockclimb,9,ok,yes,yes,9987,9987,130,0,30861840.85,33.73,5 -qsort,rockclimb,10,ok,yes,yes,9987,9987,130,21,27607477.15,29.43,5 -qsort,schematic,1,ok,yes,yes,9987,9987,17,0,219506.29,2.42,2 -qsort,schematic,2,ok,yes,yes,9987,9987,21,0,729836.36,3.39,2 -qsort,schematic,3,ok,yes,yes,9987,9987,30,0,363841.01,4.4,2 -qsort,schematic,4,ok,yes,yes,9987,9987,31,0,6027893.4,8.6,2 -qsort,schematic,5,ok,yes,yes,9987,9987,24,1,3203136.42,5.83,2 -qsort,schematic,6,ok,yes,yes,9987,9987,23,0,1142949.32,3.09,2 -qsort,schematic,7,ok,yes,yes,9987,9987,23,0,3488166.86,5.3,2 -qsort,schematic,8,ok,yes,yes,9987,9987,27,1,2406261.07,5.13,2 -qsort,schematic,9,ok,yes,yes,9987,9987,19,0,3414143.9,6.29,2 -qsort,schematic,10,ok,yes,yes,9987,9987,22,3,3966556.7,5.76,2 -qsort,schematicO3,1,ok,yes,yes,9987,9987,15,0,193562.09,2.32,1 -qsort,schematicO3,2,ok,yes,yes,9987,9987,21,0,715616.44,3.42,1 -qsort,schematicO3,3,ok,yes,yes,9987,9987,25,0,304856.45,4.34,1 -qsort,schematicO3,4,ok,yes,yes,9987,9987,26,0,4090664.05,6.65,1 -qsort,schematicO3,5,ok,yes,yes,9987,9987,21,1,3164987.22,5.81,1 -qsort,schematicO3,6,ok,yes,yes,9987,9987,22,0,1104272.28,2.98,1 -qsort,schematicO3,7,ok,yes,yes,9987,9987,20,0,3065633.83,4.83,1 -qsort,schematicO3,8,ok,yes,yes,9987,9987,26,1,2378367.02,5.08,1 -qsort,schematicO3,9,ok,yes,yes,9987,9987,19,0,3396676.62,6.23,1 -qsort,schematicO3,10,ok,yes,yes,9987,9987,15,0,193884.03,2.02,1 -activity_recognition,milp,1,ok,yes,yes,64,64,11,0,144446.63,2.29,4 -activity_recognition,milp,2,ok,yes,yes,64,64,13,0,619516.3,3.18,4 -activity_recognition,milp,3,ok,yes,yes,64,64,12,0,167939.47,4.15,4 -activity_recognition,milp,4,ok,yes,yes,64,64,12,0,3390377.2,5.97,4 -activity_recognition,milp,5,ok,yes,yes,64,64,13,0,1891121.82,4.47,4 -activity_recognition,milp,6,ok,yes,yes,64,64,14,0,1047546.96,2.89,4 -activity_recognition,milp,7,ok,yes,yes,64,64,14,0,2073055.26,3.87,4 -activity_recognition,milp,8,ok,yes,yes,64,64,17,0,919204.1,3.54,4 -activity_recognition,milp,9,ok,yes,yes,64,64,12,0,2619196.79,5.46,4 -activity_recognition,milp,10,ok,yes,yes,64,64,11,0,144510.19,1.88,4 -activity_recognition,rockclimb,1,ok,yes,yes,64,64,49,1,3361451.1,5.47,8 -activity_recognition,rockclimb,2,ok,yes,yes,64,64,69,1,4486138.49,7.08,8 -activity_recognition,rockclimb,3,ok,yes,yes,64,64,113,1,4058981.48,7.97,8 -activity_recognition,rockclimb,4,ok,yes,yes,64,64,85,0,16568583.2,19.17,8 -activity_recognition,rockclimb,5,ok,yes,yes,64,64,67,4,12478355.63,15.1,8 -activity_recognition,rockclimb,6,ok,yes,yes,64,64,67,1,5840294.08,7.65,8 -activity_recognition,rockclimb,7,ok,yes,yes,64,64,64,0,10032553.09,11.79,8 -activity_recognition,rockclimb,8,ok,yes,yes,64,64,94,9,14620159.3,17.24,8 -activity_recognition,rockclimb,9,ok,yes,yes,64,64,60,0,13387959.07,16.17,8 -activity_recognition,rockclimb,10,ok,yes,yes,64,64,58,9,11864780.35,13.71,8 -activity_recognition,schematic,1,ok,yes,yes,64,64,45,1,2653896.37,4.82,6 -activity_recognition,schematic,2,ok,yes,yes,64,64,57,1,3919015.07,6.59,6 -activity_recognition,schematic,3,ok,yes,yes,64,64,87,0,1275635.68,5.25,6 -activity_recognition,schematic,4,ok,yes,yes,64,64,61,0,13894732.87,16.49,6 -activity_recognition,schematic,5,ok,yes,yes,64,64,55,3,9389915.15,11.98,6 -activity_recognition,schematic,6,ok,yes,yes,64,64,50,1,3793546.7,5.71,6 -activity_recognition,schematic,7,ok,yes,yes,64,64,53,0,8821280.86,10.58,6 -activity_recognition,schematic,8,ok,yes,yes,64,64,74,6,10123364.13,12.79,6 -activity_recognition,schematic,9,ok,yes,yes,64,64,50,0,10892632.04,13.7,6 -activity_recognition,schematic,10,ok,yes,yes,64,64,50,6,8032189.47,9.9,6 -activity_recognition,schematicO3,1,ok,yes,yes,64,64,14,0,180918.22,2.28,3 -activity_recognition,schematicO3,2,ok,yes,yes,64,64,16,0,644444.22,3.28,3 -activity_recognition,schematicO3,3,ok,yes,yes,64,64,21,0,258806.35,4.3,3 -activity_recognition,schematicO3,4,ok,yes,yes,64,64,17,0,3449749.38,5.96,3 -activity_recognition,schematicO3,5,ok,yes,yes,64,64,19,1,3127211.14,5.68,3 -activity_recognition,schematicO3,6,ok,yes,yes,64,64,19,0,1092608.52,2.98,3 -activity_recognition,schematicO3,7,ok,yes,yes,64,64,18,0,3049884.86,4.87,3 -activity_recognition,schematicO3,8,ok,yes,yes,64,64,22,1,2332980.82,4.99,3 -activity_recognition,schematicO3,9,ok,yes,yes,64,64,15,0,3358003.03,6.2,3 -activity_recognition,schematicO3,10,ok,yes,yes,64,64,13,0,169684.72,1.98,3 -bitcount,milp,1,ok,yes,yes,14121,14121,8,0,105459.25,2.27,9 -bitcount,milp,2,ok,yes,yes,14121,14121,10,0,544023.47,3.15,9 -bitcount,milp,3,ok,yes,yes,14121,14121,7,0,119072.08,4.06,9 -bitcount,milp,4,ok,yes,yes,14121,14121,9,0,1457186.17,3.99,9 -bitcount,milp,5,ok,yes,yes,14121,14121,9,0,1840180.19,4.45,9 -bitcount,milp,6,ok,yes,yes,14121,14121,10,0,701875.19,2.59,9 -bitcount,milp,7,ok,yes,yes,14121,14121,9,0,1877879.07,3.7,9 -bitcount,milp,8,ok,yes,yes,14121,14121,12,0,872297.64,3.6,9 -bitcount,milp,9,ok,yes,yes,14121,14121,9,0,810476.17,3.76,9 -bitcount,milp,10,ok,yes,yes,14121,14121,8,0,105478.24,1.9,9 -bitcount,rockclimb,1,ok,yes,yes,14121,14121,280,8,21181752.74,23.3,14 -bitcount,rockclimb,2,ok,yes,yes,14121,14121,393,7,27846462.99,30.47,14 -bitcount,rockclimb,3,ok,yes,yes,14121,14121,664,6,24495677.2,28.5,14 -bitcount,rockclimb,4,ok,yes,yes,14121,14121,538,0,113457321.26,115.97,14 -bitcount,rockclimb,5,ok,yes,yes,14121,14121,373,24,76287137.61,78.89,14 -bitcount,rockclimb,6,ok,yes,yes,14121,14121,352,6,32201033.41,34.08,14 -bitcount,rockclimb,7,ok,yes,yes,14121,14121,366,0,58764271.4,60.58,14 -bitcount,rockclimb,8,ok,yes,yes,14121,14121,541,54,84080629.14,86.78,14 -bitcount,rockclimb,9,ok,yes,yes,14121,14121,333,0,80933376.11,83.77,14 -bitcount,rockclimb,10,ok,yes,yes,14121,14121,338,54,71109200.59,72.87,14 -bitcount,schematic,1,ok,yes,yes,14121,14121,33,0,1016436.33,3.18,2 -bitcount,schematic,2,ok,yes,yes,14121,14121,39,0,1674067.57,4.3,2 -bitcount,schematic,3,ok,yes,yes,14121,14121,64,0,1046933.22,4.98,2 -bitcount,schematic,4,ok,yes,yes,14121,14121,50,0,11273947.26,13.85,2 -bitcount,schematic,5,ok,yes,yes,14121,14121,43,2,8056534.23,10.69,2 -bitcount,schematic,6,ok,yes,yes,14121,14121,38,0,1626608.16,3.5,2 -bitcount,schematic,7,ok,yes,yes,14121,14121,42,0,6524987.38,8.31,2 -bitcount,schematic,8,ok,yes,yes,14121,14121,56,4,6995768.21,9.71,2 -bitcount,schematic,9,ok,yes,yes,14121,14121,38,0,8371842.56,11.19,2 -bitcount,schematic,10,ok,yes,yes,14121,14121,41,6,7909186.03,9.68,2 -bitcount,schematicO3,1,ok,yes,yes,14121,14121,9,0,117047.46,2.29,3 -bitcount,schematicO3,2,ok,yes,yes,14121,14121,11,0,542561.33,3.17,3 -bitcount,schematicO3,3,ok,yes,yes,14121,14121,9,0,141602.01,4.11,3 -bitcount,schematicO3,4,ok,yes,yes,14121,14121,10,0,2615368.24,5.17,3 -bitcount,schematicO3,5,ok,yes,yes,14121,14121,10,0,1851275.89,4.5,3 -bitcount,schematicO3,6,ok,yes,yes,14121,14121,11,0,713080.55,2.6,3 -bitcount,schematicO3,7,ok,yes,yes,14121,14121,11,0,2034623.25,3.8,3 -bitcount,schematicO3,8,ok,yes,yes,14121,14121,14,0,892652.87,3.6,3 -bitcount,schematicO3,9,ok,yes,yes,14121,14121,9,0,922349.94,3.71,3 -bitcount,schematicO3,10,ok,yes,yes,14121,14121,9,0,117159.4,1.91,3 -chacha20,milp,1,ok,yes,yes,79,79,11,0,159449.48,2.31,2 -chacha20,milp,2,ok,yes,yes,79,79,12,0,623558.4,3.27,2 -chacha20,milp,3,ok,yes,yes,79,79,11,0,208169.13,4.16,2 -chacha20,milp,4,ok,yes,yes,79,79,12,1,3265821.46,5.87,2 -chacha20,milp,5,ok,yes,yes,79,79,11,0,1892932.14,4.5,2 -chacha20,milp,6,ok,yes,yes,79,79,11,0,1038372.12,2.97,2 -chacha20,milp,7,ok,yes,yes,79,79,11,0,2052895.94,3.87,2 -chacha20,milp,8,ok,yes,yes,79,79,13,0,912866.71,3.58,2 -chacha20,milp,9,ok,yes,yes,79,79,13,1,3214576.39,6.18,2 -chacha20,milp,10,ok,yes,yes,79,79,11,0,159329.01,2.0,2 -chacha20,rockclimb,1,ok,yes,yes,79,79,46,1,2697936.69,4.91,4 -chacha20,rockclimb,2,ok,yes,yes,79,79,60,1,4306007.04,6.93,4 -chacha20,rockclimb,3,ok,yes,yes,79,79,98,0,1395161.77,5.4,4 -chacha20,rockclimb,4,ok,yes,yes,79,79,71,0,14551295.6,17.09,4 -chacha20,rockclimb,5,ok,yes,yes,79,79,57,3,11171651.23,13.79,4 -chacha20,rockclimb,6,ok,yes,yes,79,79,54,1,4688122.16,6.6,4 -chacha20,rockclimb,7,ok,yes,yes,79,79,58,0,9028127.59,10.8,4 -chacha20,rockclimb,8,ok,yes,yes,79,79,81,7,11563113.94,14.24,4 -chacha20,rockclimb,9,ok,yes,yes,79,79,58,0,13325536.97,16.17,4 -chacha20,rockclimb,10,ok,yes,yes,79,79,52,6,8063527.56,9.89,4 -chacha20,schematic,1,ok,yes,yes,79,79,34,1,2520501.87,4.67,2 -chacha20,schematic,2,ok,yes,yes,79,79,34,0,1663205.18,4.29,2 -chacha20,schematic,3,ok,yes,yes,79,79,37,0,757059.01,4.75,2 -chacha20,schematic,4,ok,yes,yes,79,79,36,1,8655823.73,11.19,2 -chacha20,schematic,5,ok,yes,yes,79,79,37,2,6279035.26,8.89,2 -chacha20,schematic,6,ok,yes,yes,79,79,33,0,1616982.85,3.31,2 -chacha20,schematic,7,ok,yes,yes,79,79,35,0,5688892.54,7.45,2 -chacha20,schematic,8,ok,yes,yes,79,79,37,3,5532194.38,8.17,2 -chacha20,schematic,9,ok,yes,yes,79,79,38,3,8347290.12,11.2,2 -chacha20,schematic,10,ok,yes,yes,79,79,39,6,7906901.69,9.7,2 -chacha20,schematicO3,1,ok,yes,yes,79,79,22,0,887694.53,2.99,1 -chacha20,schematicO3,2,ok,yes,yes,79,79,24,0,814718.98,3.51,1 -chacha20,schematicO3,3,ok,yes,yes,79,79,28,0,367312.74,4.39,1 -chacha20,schematicO3,4,ok,yes,yes,79,79,25,0,6044979.82,8.59,1 -chacha20,schematicO3,5,ok,yes,yes,79,79,26,1,4970974.63,7.61,1 -chacha20,schematicO3,6,ok,yes,yes,79,79,24,0,1180645.64,3.1,1 -chacha20,schematicO3,7,ok,yes,yes,79,79,24,0,4427125.74,6.18,1 -chacha20,schematicO3,8,ok,yes,yes,79,79,31,3,5381300.06,8.08,1 -chacha20,schematicO3,9,ok,yes,yes,79,79,25,1,5827917.58,8.68,1 -chacha20,schematicO3,10,ok,yes,yes,79,79,26,3,4024400.51,5.79,1 -sensor_fusion,milp,1,ok,yes,yes,613,613,9,0,114564.04,2.3,2 -sensor_fusion,milp,2,ok,yes,yes,613,613,12,0,552331.4,3.05,2 -sensor_fusion,milp,3,ok,yes,yes,613,613,13,0,171245.69,4.2,2 -sensor_fusion,milp,4,ok,yes,yes,613,613,11,0,2615522.05,5.23,2 -sensor_fusion,milp,5,ok,yes,yes,613,613,11,0,1859225.77,4.51,2 -sensor_fusion,milp,6,ok,yes,yes,613,613,12,0,722572.41,2.6,2 -sensor_fusion,milp,7,ok,yes,yes,613,613,12,0,2030862.4,3.81,2 -sensor_fusion,milp,8,ok,yes,yes,613,613,15,0,889443.18,3.63,2 -sensor_fusion,milp,9,ok,yes,yes,613,613,9,0,918960.35,3.73,2 -sensor_fusion,milp,10,ok,yes,yes,613,613,9,0,114340.17,1.92,2 -sensor_fusion,rockclimb,1,ok,yes,yes,613,613,10,0,127467.42,2.28,2 -sensor_fusion,rockclimb,2,ok,yes,yes,613,613,12,0,566820.92,3.21,2 -sensor_fusion,rockclimb,3,ok,yes,yes,613,613,14,0,184134.33,4.23,2 -sensor_fusion,rockclimb,4,ok,yes,yes,613,613,14,0,3395580.47,6.01,2 -sensor_fusion,rockclimb,5,ok,yes,yes,613,613,13,0,1883464.89,4.52,2 -sensor_fusion,rockclimb,6,ok,yes,yes,613,613,14,0,1041305.46,2.94,2 -sensor_fusion,rockclimb,7,ok,yes,yes,613,613,13,0,2056038.09,3.84,2 -sensor_fusion,rockclimb,8,ok,yes,yes,613,613,16,0,901977.49,3.62,2 -sensor_fusion,rockclimb,9,ok,yes,yes,613,613,10,0,932469.11,3.82,2 -sensor_fusion,rockclimb,10,ok,yes,yes,613,613,10,0,127447.3,1.92,2 -sensor_fusion,schematic,1,ok,yes,yes,613,613,14,0,176386.51,2.34,1 -sensor_fusion,schematic,2,ok,yes,yes,613,613,16,0,652272.61,3.34,1 -sensor_fusion,schematic,3,ok,yes,yes,613,613,20,0,254457.81,4.23,1 -sensor_fusion,schematic,4,ok,yes,yes,613,613,17,0,3434854.11,5.98,1 -sensor_fusion,schematic,5,ok,yes,yes,613,613,16,1,3109926.65,5.73,1 -sensor_fusion,schematic,6,ok,yes,yes,613,613,16,0,1080409.21,3.01,1 -sensor_fusion,schematic,7,ok,yes,yes,613,613,18,0,3031753.66,4.8,1 -sensor_fusion,schematic,8,ok,yes,yes,613,613,19,0,939884.6,3.74,1 -sensor_fusion,schematic,9,ok,yes,yes,613,613,16,0,3355166.36,6.21,1 -sensor_fusion,schematic,10,ok,yes,yes,613,613,14,0,176467.78,2.02,1 -sensor_fusion,schematicO3,1,ok,yes,yes,613,613,12,0,153298.23,2.34,1 -sensor_fusion,schematicO3,2,ok,yes,yes,613,613,16,0,628647.45,3.33,1 -sensor_fusion,schematicO3,3,ok,yes,yes,613,613,21,0,253096.61,4.23,1 -sensor_fusion,schematicO3,4,ok,yes,yes,613,613,20,0,3430775.68,6.01,1 -sensor_fusion,schematicO3,5,ok,yes,yes,613,613,16,1,3096611.64,5.73,1 -sensor_fusion,schematicO3,6,ok,yes,yes,613,613,17,0,1066284.14,3.03,1 -sensor_fusion,schematicO3,7,ok,yes,yes,613,613,18,0,3035501.56,4.83,1 -sensor_fusion,schematicO3,8,ok,yes,yes,613,613,21,1,2327302.0,5.01,1 -sensor_fusion,schematicO3,9,ok,yes,yes,613,613,15,0,3349523.74,6.24,1 -sensor_fusion,schematicO3,10,ok,yes,yes,613,613,12,0,153170.72,1.94,1 -poly1305,milp,1,ok,yes,yes,68,68,132,4,10186419.47,12.31,2 -poly1305,milp,2,ok,yes,yes,68,68,131,2,9698613.58,12.39,2 -poly1305,milp,3,ok,yes,yes,68,68,129,1,5156484.78,9.11,2 -poly1305,milp,4,ok,yes,yes,68,68,135,7,34911556.37,37.5,2 -poly1305,milp,5,ok,yes,yes,68,68,137,9,29744006.32,32.39,2 -poly1305,milp,6,ok,yes,yes,68,68,130,2,12035795.43,13.91,2 -poly1305,milp,7,ok,yes,yes,68,68,128,0,22958834.04,24.68,2 -poly1305,milp,8,ok,yes,yes,68,68,148,18,28632237.9,31.29,2 -poly1305,milp,9,ok,yes,yes,68,68,137,8,35851737.93,38.71,2 -poly1305,milp,10,ok,yes,yes,68,68,155,27,35479686.01,37.29,2 -poly1305,rockclimb,1,ok,yes,yes,68,68,318,9,22901012.68,25.09,4 -poly1305,rockclimb,2,ok,yes,yes,68,68,422,7,28325072.78,30.98,4 -poly1305,rockclimb,3,ok,yes,yes,68,68,662,6,24436347.62,28.37,4 -poly1305,rockclimb,4,ok,yes,yes,68,68,522,0,113494025.93,116.11,4 -poly1305,rockclimb,5,ok,yes,yes,68,68,405,25,79379089.82,81.97,4 -poly1305,rockclimb,6,ok,yes,yes,68,68,387,7,34717649.3,36.6,4 -poly1305,rockclimb,7,ok,yes,yes,68,68,395,0,60789844.59,62.59,4 -poly1305,rockclimb,8,ok,yes,yes,68,68,560,55,85563767.52,88.21,4 -poly1305,rockclimb,9,ok,yes,yes,68,68,367,0,85904459.62,88.72,4 -poly1305,rockclimb,10,ok,yes,yes,68,68,385,60,78850926.62,80.69,4 -poly1305,schematic,1,ok,yes,yes,68,68,273,8,20240938.56,22.41,4 -poly1305,schematic,2,ok,yes,yes,68,68,285,5,20504808.92,23.1,4 -poly1305,schematic,3,ok,yes,yes,68,68,329,3,13019410.24,17.02,4 -poly1305,schematic,4,ok,yes,yes,68,68,311,4,74160240.72,76.79,4 -poly1305,schematic,5,ok,yes,yes,68,68,293,19,58980981.61,61.62,4 -poly1305,schematic,6,ok,yes,yes,68,68,278,6,26513788.96,28.43,4 -poly1305,schematic,7,ok,yes,yes,68,68,271,0,43629838.82,45.4,4 -poly1305,schematic,8,ok,yes,yes,68,68,319,36,56332233.93,59.0,4 -poly1305,schematic,9,ok,yes,yes,68,68,300,18,68338231.91,71.22,4 -poly1305,schematic,10,ok,yes,yes,68,68,308,48,63144228.77,65.02,4 -poly1305,schematicO3,1,ok,yes,yes,68,68,185,5,13505235.79,15.69,1 -poly1305,schematicO3,2,ok,yes,yes,68,68,190,3,13874007.01,16.49,1 -poly1305,schematicO3,3,ok,yes,yes,68,68,243,2,9232583.0,13.28,1 -poly1305,schematicO3,4,ok,yes,yes,68,68,197,0,53231407.51,55.79,1 -poly1305,schematicO3,5,ok,yes,yes,68,68,215,14,45258373.25,47.91,1 -poly1305,schematicO3,6,ok,yes,yes,68,68,204,5,20093085.16,22.01,1 -poly1305,schematicO3,7,ok,yes,yes,68,68,215,0,36675544.9,38.5,1 -poly1305,schematicO3,8,ok,yes,yes,68,68,251,30,47012715.18,49.65,1 -poly1305,schematicO3,9,ok,yes,yes,68,68,198,7,48373550.92,51.2,1 -poly1305,schematicO3,10,ok,yes,yes,68,68,215,33,43537404.84,45.41,1 -cuckoo_filter,milp,1,ok,yes,yes,4048,4048,12,0,164986.93,2.27,3 -cuckoo_filter,milp,2,ok,yes,yes,4048,4048,14,0,639749.52,3.3,3 -cuckoo_filter,milp,3,ok,yes,yes,4048,4048,17,0,244571.0,4.21,3 -cuckoo_filter,milp,4,ok,yes,yes,4048,4048,17,0,3430952.98,6.01,3 -cuckoo_filter,milp,5,ok,yes,yes,4048,4048,12,0,1900154.62,4.5,3 -cuckoo_filter,milp,6,ok,yes,yes,4048,4048,14,0,1054424.83,2.96,3 -cuckoo_filter,milp,7,ok,yes,yes,4048,4048,15,0,2080546.5,3.86,3 -cuckoo_filter,milp,8,ok,yes,yes,4048,4048,17,0,940184.74,3.55,3 -cuckoo_filter,milp,9,ok,yes,yes,4048,4048,15,1,3349472.68,6.19,3 -cuckoo_filter,milp,10,ok,yes,yes,4048,4048,12,0,164909.96,1.97,3 -cuckoo_filter,rockclimb,1,ok,yes,yes,4048,4048,132,4,10106894.21,12.31,5 -cuckoo_filter,rockclimb,2,ok,yes,yes,4048,4048,178,3,12403138.97,15.09,5 -cuckoo_filter,rockclimb,3,ok,yes,yes,4048,4048,303,2,9267665.95,13.27,5 -cuckoo_filter,rockclimb,4,ok,yes,yes,4048,4048,230,0,47971045.51,50.56,5 -cuckoo_filter,rockclimb,5,ok,yes,yes,4048,4048,171,11,34165087.2,36.78,5 -cuckoo_filter,rockclimb,6,ok,yes,yes,4048,4048,159,3,14964111.73,16.91,5 -cuckoo_filter,rockclimb,7,ok,yes,yes,4048,4048,162,0,26407880.03,28.18,5 -cuckoo_filter,rockclimb,8,ok,yes,yes,4048,4048,246,24,37828073.02,40.53,5 -cuckoo_filter,rockclimb,9,ok,yes,yes,4048,4048,154,0,35909694.01,38.7,5 -cuckoo_filter,rockclimb,10,ok,yes,yes,4048,4048,153,24,31635918.52,33.42,5 -cuckoo_filter,schematic,1,ok,yes,yes,4048,4048,115,4,7737519.74,9.91,6 -cuckoo_filter,schematic,2,ok,yes,yes,4048,4048,124,2,8639427.5,11.3,6 -cuckoo_filter,schematic,3,ok,yes,yes,4048,4048,174,1,5270791.09,9.3,6 -cuckoo_filter,schematic,4,ok,yes,yes,4048,4048,141,2,34867799.99,37.47,6 -cuckoo_filter,schematic,5,ok,yes,yes,4048,4048,133,8,26634224.39,29.23,6 -cuckoo_filter,schematic,6,ok,yes,yes,4048,4048,128,2,11423236.82,13.31,6 -cuckoo_filter,schematic,7,ok,yes,yes,4048,4048,127,0,19469648.87,21.3,6 -cuckoo_filter,schematic,8,ok,yes,yes,4048,4048,158,16,25495710.53,28.17,6 -cuckoo_filter,schematic,9,ok,yes,yes,4048,4048,123,4,28391520.02,31.31,6 -cuckoo_filter,schematic,10,ok,yes,yes,4048,4048,135,21,27578555.03,29.41,6 -cuckoo_filter,schematicO3,1,ok,yes,yes,4048,4048,18,1,837662.52,3.0,5 -cuckoo_filter,schematicO3,2,ok,yes,yes,4048,4048,20,0,754834.35,3.37,5 -cuckoo_filter,schematicO3,3,ok,yes,yes,4048,4048,26,0,355529.32,4.35,5 -cuckoo_filter,schematicO3,4,ok,yes,yes,4048,4048,27,2,5897819.52,8.52,5 -cuckoo_filter,schematicO3,5,ok,yes,yes,4048,4048,22,1,3186596.5,5.8,5 -cuckoo_filter,schematicO3,6,ok,yes,yes,4048,4048,21,0,1157265.59,3.11,5 -cuckoo_filter,schematicO3,7,ok,yes,yes,4048,4048,21,0,3477038.18,5.27,5 -cuckoo_filter,schematicO3,8,ok,yes,yes,4048,4048,24,1,2396186.26,5.09,5 -cuckoo_filter,schematicO3,9,ok,yes,yes,4048,4048,20,0,3423902.22,6.21,5 -cuckoo_filter,schematicO3,10,ok,yes,yes,4048,4048,22,3,3982881.6,5.79,5 -sha256,milp,1,ok,yes,yes,131,131,18,1,876279.01,3.13,8 -sha256,milp,2,ok,yes,yes,131,131,18,0,747026.58,3.39,8 -sha256,milp,3,ok,yes,yes,131,131,17,0,332403.86,4.32,8 -sha256,milp,4,ok,yes,yes,131,131,19,2,5244015.04,7.81,8 -sha256,milp,5,ok,yes,yes,131,131,18,1,3182369.09,5.79,8 -sha256,milp,6,ok,yes,yes,131,131,17,0,1136742.69,3.04,8 -sha256,milp,7,ok,yes,yes,131,131,17,0,3079997.31,4.85,8 -sha256,milp,8,ok,yes,yes,131,131,23,3,4634016.38,7.33,8 -sha256,milp,9,ok,yes,yes,131,131,19,1,3426458.79,6.33,8 -sha256,milp,10,ok,yes,yes,131,131,20,3,3994344.1,5.83,8 -sha256,rockclimb,1,ok,yes,yes,131,131,74,2,5136423.52,7.31,11 -sha256,rockclimb,2,ok,yes,yes,131,131,104,1,5771234.55,8.43,11 -sha256,rockclimb,3,ok,yes,yes,131,131,178,1,5006336.95,8.98,11 -sha256,rockclimb,4,ok,yes,yes,131,131,135,0,26997006.39,29.63,11 -sha256,rockclimb,5,ok,yes,yes,131,131,95,6,18654501.48,21.33,11 -sha256,rockclimb,6,ok,yes,yes,131,131,93,1,6752439.31,8.64,11 -sha256,rockclimb,7,ok,yes,yes,131,131,93,0,14861155.94,16.64,11 -sha256,rockclimb,8,ok,yes,yes,131,131,140,12,19377513.78,22.11,11 -sha256,rockclimb,9,ok,yes,yes,131,131,93,0,20848491.04,23.72,11 -sha256,rockclimb,10,ok,yes,yes,131,131,88,12,15912625.79,17.75,11 -sha256,schematic,1,ok,yes,yes,131,131,37,1,2604244.94,4.83,7 -sha256,schematic,2,ok,yes,yes,131,131,48,0,2067794.82,4.72,7 -sha256,schematic,3,ok,yes,yes,131,131,63,0,1118009.57,5.14,7 -sha256,schematic,4,ok,yes,yes,131,131,48,0,11308089.01,13.9,7 -sha256,schematic,5,ok,yes,yes,131,131,50,3,9323563.96,11.92,7 -sha256,schematic,6,ok,yes,yes,131,131,39,0,1683798.95,3.6,7 -sha256,schematic,7,ok,yes,yes,131,131,42,0,6570507.31,8.42,7 -sha256,schematic,8,ok,yes,yes,131,131,54,6,9280025.09,12.02,7 -sha256,schematic,9,ok,yes,yes,131,131,46,3,10001641.13,12.82,7 -sha256,schematic,10,ok,yes,yes,131,131,44,6,7979794.56,9.79,7 -sha256,schematicO3,1,ok,yes,yes,131,131,35,2,2535113.08,4.73,6 -sha256,schematicO3,2,ok,yes,yes,131,131,33,0,1623959.18,4.3,6 -sha256,schematicO3,3,ok,yes,yes,131,131,33,0,670852.83,4.71,6 -sha256,schematicO3,4,ok,yes,yes,131,131,34,1,8659595.61,11.25,6 -sha256,schematicO3,5,ok,yes,yes,131,131,35,2,6272654.61,8.92,6 -sha256,schematicO3,6,ok,yes,yes,131,131,33,0,1613865.92,3.54,6 -sha256,schematicO3,7,ok,yes,yes,131,131,33,0,5518165.93,7.32,6 -sha256,schematicO3,8,ok,yes,yes,131,131,37,3,5507920.67,8.22,6 -sha256,schematicO3,9,ok,yes,yes,131,131,36,2,8334938.04,11.21,6 -sha256,schematicO3,10,ok,yes,yes,131,131,39,6,7911447.79,9.71,6 -stringsearch,milp,1,ok,yes,yes,20,20,15,0,194759.23,2.43,4 -stringsearch,milp,2,ok,yes,yes,20,20,18,0,695735.22,3.31,4 -stringsearch,milp,3,ok,yes,yes,20,20,24,0,295742.07,4.34,4 -stringsearch,milp,4,ok,yes,yes,20,20,22,0,4089260.09,6.71,4 -stringsearch,milp,5,ok,yes,yes,20,20,20,1,3162240.55,5.81,4 -stringsearch,milp,6,ok,yes,yes,20,20,20,0,1108963.16,3.04,4 -stringsearch,milp,7,ok,yes,yes,20,20,21,0,3053188.25,4.94,4 -stringsearch,milp,8,ok,yes,yes,20,20,24,1,2363282.67,5.13,4 -stringsearch,milp,9,ok,yes,yes,20,20,18,0,3390160.17,6.19,4 -stringsearch,milp,10,ok,yes,yes,20,20,15,0,195216.63,2.02,4 -stringsearch,rockclimb,1,ok,yes,yes,20,20,601,19,47998548.83,50.13,8 -stringsearch,rockclimb,2,ok,yes,yes,20,20,813,15,59362345.9,62.01,8 -stringsearch,rockclimb,3,ok,yes,yes,20,20,1434,14,55404698.41,59.45,8 -stringsearch,rockclimb,4,ok,yes,yes,20,20,1158,0,243025999.82,246.27,8 -stringsearch,rockclimb,5,ok,yes,yes,20,20,816,53,164327886.31,167.01,8 -stringsearch,rockclimb,6,ok,yes,yes,20,20,758,14,72892097.81,74.83,8 -stringsearch,rockclimb,7,ok,yes,yes,20,20,809,0,130823242.03,132.68,8 -stringsearch,rockclimb,8,ok,yes,yes,20,20,1176,120,185616815.06,188.29,8 -stringsearch,rockclimb,9,ok,yes,yes,20,20,709,0,175880379.17,178.69,8 -stringsearch,rockclimb,10,ok,yes,yes,20,20,731,120,157748111.11,159.58,8 -stringsearch,schematic,1,ok,yes,yes,20,20,57,1,3413471.0,5.59,7 -stringsearch,schematic,2,ok,yes,yes,20,20,66,1,4547859.46,7.19,7 -stringsearch,schematic,3,ok,yes,yes,20,20,94,1,3941585.89,7.91,7 -stringsearch,schematic,4,ok,yes,yes,20,20,77,0,16554115.85,19.11,7 -stringsearch,schematic,5,ok,yes,yes,20,20,70,4,12482795.37,15.12,7 -stringsearch,schematic,6,ok,yes,yes,20,20,64,1,5848506.2,7.81,7 -stringsearch,schematic,7,ok,yes,yes,20,20,62,0,10048013.76,11.82,7 -stringsearch,schematic,8,ok,yes,yes,20,20,78,7,11616181.48,14.31,7 -stringsearch,schematic,9,ok,yes,yes,20,20,64,3,13400526.7,16.32,7 -stringsearch,schematic,10,ok,yes,yes,20,20,68,9,11944230.32,13.75,7 -stringsearch,schematicO3,1,ok,yes,yes,20,20,17,0,222773.22,2.45,4 -stringsearch,schematicO3,2,ok,yes,yes,20,20,22,0,733615.56,3.42,4 -stringsearch,schematicO3,3,ok,yes,yes,20,20,28,0,345233.83,4.34,4 -stringsearch,schematicO3,4,ok,yes,yes,20,20,29,0,6040145.38,8.62,4 -stringsearch,schematicO3,5,ok,yes,yes,20,20,23,1,3180331.42,5.82,4 -stringsearch,schematicO3,6,ok,yes,yes,20,20,22,0,1136803.26,3.03,4 -stringsearch,schematicO3,7,ok,yes,yes,20,20,20,0,3073280.12,4.94,4 -stringsearch,schematicO3,8,ok,yes,yes,20,20,28,1,2403477.66,5.13,4 -stringsearch,schematicO3,9,ok,yes,yes,20,20,20,0,3419318.33,6.23,4 -stringsearch,schematicO3,10,ok,yes,yes,20,20,22,3,3963444.54,5.84,4 +benchmark,algorithm,trace,status,complete,correct,result,expected_result,runtime_wait_count,runtime_recovery_boots,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,replay_seconds,region_boundaries +aes,milp,1,ok,yes,yes,107,107,26,1,964416.81,856453.44,24,1,3.09,4 +aes,milp,2,ok,yes,yes,107,107,25,0,891711.75,783747.74,24,0,3.4,4 +aes,milp,3,ok,yes,yes,107,107,25,0,562560.75,454598.8,24,0,4.41,4 +aes,milp,4,ok,yes,yes,107,107,27,2,6093413.74,5985450.26,24,2,8.49,4 +aes,milp,5,ok,yes,yes,107,107,27,2,6203940.9,6095979.38,24,2,8.69,4 +aes,milp,6,ok,yes,yes,107,107,25,0,1247256.38,1139297.34,24,0,3.08,4 +aes,milp,7,ok,yes,yes,107,107,25,0,5329294.16,5221329.9,24,0,7.01,4 +aes,milp,8,ok,yes,yes,107,107,29,3,5429137.3,5321176.4,24,3,8.0,4 +aes,milp,9,ok,yes,yes,107,107,27,2,5868201.23,5760236.14,24,2,8.59,4 +aes,milp,10,ok,yes,yes,107,107,28,3,4080716.36,3972760.4,24,3,5.79,4 +aes,rockclimb,1,ok,yes,yes,107,107,179,5,13441378.24,12896651.98,173,5,15.48,15 +aes,rockclimb,2,ok,yes,yes,107,107,248,4,16376975.2,15832145.72,243,4,18.97,15 +aes,rockclimb,3,ok,yes,yes,107,107,409,3,13211408.3,12666336.87,405,3,17.17,15 +aes,rockclimb,4,ok,yes,yes,107,107,330,0,63693389.2,63148525.12,329,0,66.17,15 +aes,rockclimb,5,ok,yes,yes,107,107,237,15,46578013.42,46033235.81,221,15,49.0,15 +aes,rockclimb,6,ok,yes,yes,107,107,228,4,20176720.12,19631984.27,223,4,21.89,15 +aes,rockclimb,7,ok,yes,yes,107,107,229,0,36428838.74,35884089.49,228,0,38.1,15 +aes,rockclimb,8,ok,yes,yes,107,107,342,33,51733191.94,51188272.98,307,33,54.4,15 +aes,rockclimb,9,ok,yes,yes,107,107,221,0,50859215.05,50314566.81,220,0,53.61,15 +aes,rockclimb,10,ok,yes,yes,107,107,220,33,43497287.77,42952659.0,186,33,45.2,15 +aes,schematic,1,ok,yes,yes,107,107,459,14,35292946.51,33991752.31,444,14,37.38,11 +aes,schematic,2,ok,yes,yes,107,107,554,10,40871922.74,39570641.08,543,10,43.49,11 +aes,schematic,3,ok,yes,yes,107,107,768,8,32145478.36,30843862.12,759,8,36.08,11 +aes,schematic,4,ok,yes,yes,107,107,615,0,146721235.87,145419869.69,614,0,149.19,11 +aes,schematic,5,ok,yes,yes,107,107,585,38,117822809.51,116521511.34,546,38,120.32,11 +aes,schematic,6,ok,yes,yes,107,107,542,11,51114992.11,49813779.35,530,11,52.91,11 +aes,schematic,7,ok,yes,yes,107,107,536,0,88632043.04,87330845.2,535,0,90.33,11 +aes,schematic,8,ok,yes,yes,107,107,725,81,125572776.22,124271311.56,642,81,128.1,11 +aes,schematic,9,ok,yes,yes,107,107,526,12,123369881.89,122068728.59,513,12,126.08,11 +aes,schematic,10,ok,yes,yes,107,107,549,84,110471177.57,109170050.25,464,84,112.11,11 +aes,schematicO3,1,ok,yes,yes,107,107,56,1,3397343.34,3271847.34,54,1,5.51,2 +aes,schematicO3,2,ok,yes,yes,107,107,62,1,4454920.99,4329413.64,60,1,7.0,2 +aes,schematicO3,3,ok,yes,yes,107,107,92,0,1371926.22,1246376.58,91,0,5.28,2 +aes,schematicO3,4,ok,yes,yes,107,107,69,0,14552443.59,14426925.23,68,0,17.01,2 +aes,schematicO3,5,ok,yes,yes,107,107,64,4,12400799.26,12275286.6,59,4,14.89,2 +aes,schematicO3,6,ok,yes,yes,107,107,67,1,5202566.78,5077057.53,65,1,6.9,2 +aes,schematicO3,7,ok,yes,yes,107,107,62,0,9996464.06,9870964.83,61,0,11.67,2 +aes,schematicO3,8,ok,yes,yes,107,107,81,7,11619386.43,11493857.05,72,7,14.19,2 +aes,schematicO3,9,ok,yes,yes,107,107,62,0,13397573.57,13272071.91,61,0,16.11,2 +aes,schematicO3,10,ok,yes,yes,107,107,66,9,11897845.87,11772349.71,56,9,13.69,2 +crc,milp,1,ok,yes,yes,20431,20431,7,0,95182.39,64719.96,6,0,2.2,3 +crc,milp,2,ok,yes,yes,20431,20431,7,0,423641.27,393176.93,6,0,2.93,3 +crc,milp,3,ok,yes,yes,20431,20431,7,0,119474.84,89012.8,6,0,3.97,3 +crc,milp,4,ok,yes,yes,20431,20431,8,1,838568.84,808106.63,6,1,3.26,3 +crc,milp,5,ok,yes,yes,20431,20431,7,0,94953.81,64491.78,6,0,2.57,3 +crc,milp,6,ok,yes,yes,20431,20431,7,0,667084.2,636621.71,6,0,2.5,3 +crc,milp,7,ok,yes,yes,20431,20431,7,0,1860399.06,1829936.83,6,0,3.57,3 +crc,milp,8,ok,yes,yes,20431,20431,8,0,848229.29,817765.58,6,0,3.37,3 +crc,milp,9,ok,yes,yes,20431,20431,7,0,896748.8,866285.69,6,0,3.67,3 +crc,milp,10,ok,yes,yes,20431,20431,7,0,95154.15,64694.58,6,0,1.87,3 +crc,rockclimb,1,ok,yes,yes,20431,20431,65,2,5050783.73,4837614.12,62,2,7.09,8 +crc,rockclimb,2,ok,yes,yes,20431,20431,85,1,4796119.51,4582928.74,83,1,7.38,8 +crc,rockclimb,3,ok,yes,yes,20431,20431,145,1,4580761.39,4367441.7,143,1,8.37,8 +crc,rockclimb,4,ok,yes,yes,20431,20431,118,0,22419821.4,22206586.35,117,0,24.87,8 +crc,rockclimb,5,ok,yes,yes,20431,20431,88,5,17351051.05,17137869.13,82,5,19.9,8 +crc,rockclimb,6,ok,yes,yes,20431,20431,83,1,6325691.18,6112532.11,81,1,8.11,8 +crc,rockclimb,7,ok,yes,yes,20431,20431,86,0,15542343.56,15329172.68,85,0,17.31,8 +crc,rockclimb,8,ok,yes,yes,20431,20431,124,12,19248187.49,19034964.41,110,12,21.92,8 +crc,rockclimb,9,ok,yes,yes,20431,20431,80,0,18344984.09,18131818.19,79,0,20.99,8 +crc,rockclimb,10,ok,yes,yes,20431,20431,77,12,15803381.31,15590200.27,64,12,17.48,8 +crc,schematic,1,ok,yes,yes,20431,20431,134,3,8571685.32,8254887.28,130,3,10.67,3 +crc,schematic,2,ok,yes,yes,20431,20431,177,3,12178628.09,11861760.72,173,3,14.68,3 +crc,schematic,3,ok,yes,yes,20431,20431,275,2,8984139.26,8667121.23,272,2,12.82,3 +crc,schematic,4,ok,yes,yes,20431,20431,209,0,42749186.38,42432280.45,208,0,45.18,3 +crc,schematic,5,ok,yes,yes,20431,20431,177,11,34100692.79,33783821.27,165,11,36.7,3 +crc,schematic,6,ok,yes,yes,20431,20431,162,2,12021859.13,11705004.38,159,2,13.81,3 +crc,schematic,7,ok,yes,yes,20431,20431,166,0,26213076.02,25896234.61,165,0,27.82,3 +crc,schematic,8,ok,yes,yes,20431,20431,230,22,34703039.05,34386093.13,206,22,37.27,3 +crc,schematic,9,ok,yes,yes,20431,20431,155,0,35835142.1,35518316.0,154,0,38.57,3 +crc,schematic,10,ok,yes,yes,20431,20431,165,24,31585210.56,31268377.26,140,24,33.27,3 +crc,schematicO3,1,ok,yes,yes,20431,20431,8,0,113405.13,74977.67,7,0,2.06,3 +crc,schematicO3,2,ok,yes,yes,20431,20431,8,0,539578.24,501150.12,7,0,3.1,3 +crc,schematicO3,3,ok,yes,yes,20431,20431,8,0,137652.99,99225.17,7,0,3.98,3 +crc,schematicO3,4,ok,yes,yes,20431,20431,9,1,1452341.16,1413912.61,7,1,3.97,3 +crc,schematicO3,5,ok,yes,yes,20431,20431,8,0,1834693.5,1796265.66,7,0,4.41,3 +crc,schematicO3,6,ok,yes,yes,20431,20431,8,0,699110.15,660683.67,7,0,2.5,3 +crc,schematicO3,7,ok,yes,yes,20431,20431,8,0,2025234.4,1986807.3,7,0,3.62,3 +crc,schematicO3,8,ok,yes,yes,20431,20431,9,0,867803.82,829376.35,7,0,3.51,3 +crc,schematicO3,9,ok,yes,yes,20431,20431,8,0,914861.39,876435.7,7,0,3.61,3 +crc,schematicO3,10,ok,yes,yes,20431,20431,8,0,113500.11,75074.88,7,0,1.87,3 +rsa,milp,1,ok,yes,yes,32,32,16,0,217291.72,162812.03,15,0,2.29,15 +rsa,milp,2,ok,yes,yes,32,32,19,0,739746.81,685258.85,18,0,3.27,15 +rsa,milp,3,ok,yes,yes,32,32,29,0,361668.46,307164.67,28,0,4.3,15 +rsa,milp,4,ok,yes,yes,32,32,29,1,6014132.74,5959630.98,27,1,8.47,15 +rsa,milp,5,ok,yes,yes,32,32,23,1,3202153.66,3147657.19,21,1,5.79,15 +rsa,milp,6,ok,yes,yes,32,32,17,0,1108780.38,1054294.56,16,0,2.99,15 +rsa,milp,7,ok,yes,yes,32,32,20,0,3091552.96,3037066.03,19,0,4.77,15 +rsa,milp,8,ok,yes,yes,32,32,26,1,2391774.79,2337277.06,23,1,5.06,15 +rsa,milp,9,ok,yes,yes,32,32,20,1,3402073.8,3347586.67,18,1,6.1,15 +rsa,milp,10,ok,yes,yes,32,32,21,3,3968593.94,3914109.07,17,3,5.63,15 +rsa,rockclimb,1,ok,yes,yes,32,32,407,13,32801709.91,31378816.76,393,13,34.89,32 +rsa,rockclimb,2,ok,yes,yes,32,32,546,10,39819717.13,38396331.06,535,10,42.39,32 +rsa,rockclimb,3,ok,yes,yes,32,32,929,9,35764049.3,34339788.49,919,9,39.67,32 +rsa,rockclimb,4,ok,yes,yes,32,32,747,0,150142808.91,148719312.31,746,0,152.57,32 +rsa,rockclimb,5,ok,yes,yes,32,32,537,35,110388949.25,108965564.88,501,35,112.95,32 +rsa,rockclimb,6,ok,yes,yes,32,32,526,9,47584454.8,46161137.2,516,9,49.39,32 +rsa,rockclimb,7,ok,yes,yes,32,32,514,0,83069277.91,81645790.13,513,0,84.69,32 +rsa,rockclimb,8,ok,yes,yes,32,32,797,81,125613063.4,124188635.08,714,81,128.19,32 +rsa,rockclimb,9,ok,yes,yes,32,32,485,0,120835660.05,119411091.61,484,0,123.61,32 +rsa,rockclimb,10,ok,yes,yes,32,32,511,81,106493992.1,105068845.41,429,81,108.2,32 +rsa,schematic,1,ok,yes,yes,32,32,49,1,2704271.65,2595809.58,47,1,4.79,12 +rsa,schematic,2,ok,yes,yes,32,32,59,1,4302521.96,4194042.94,57,1,6.79,12 +rsa,schematic,3,ok,yes,yes,32,32,87,0,1302274.91,1193752.5,86,0,5.19,12 +rsa,schematic,4,ok,yes,yes,32,32,66,0,13933482.05,13824988.4,65,0,16.47,12 +rsa,schematic,5,ok,yes,yes,32,32,61,3,11178451.45,11069962.61,57,3,13.69,12 +rsa,schematic,6,ok,yes,yes,32,32,54,1,4691775.07,4583291.3,52,1,6.49,12 +rsa,schematic,7,ok,yes,yes,32,32,57,0,9016108.92,8907626.79,56,0,10.49,12 +rsa,schematic,8,ok,yes,yes,32,32,76,6,10149091.25,10040577.6,68,6,12.69,12 +rsa,schematic,9,ok,yes,yes,32,32,51,0,10921595.94,10813118.57,50,0,13.6,12 +rsa,schematic,10,ok,yes,yes,32,32,56,6,8079009.5,7970531.65,49,6,9.69,12 +rsa,schematicO3,1,ok,yes,yes,32,32,20,0,863489.9,806160.8,19,0,2.99,14 +rsa,schematicO3,2,ok,yes,yes,32,32,24,0,774975.36,717641.07,23,0,3.21,14 +rsa,schematicO3,3,ok,yes,yes,32,32,40,0,585611.54,528249.44,39,0,4.49,14 +rsa,schematicO3,4,ok,yes,yes,32,32,33,0,6062966.43,6005613.65,32,0,8.6,14 +rsa,schematicO3,5,ok,yes,yes,32,32,26,1,4958958.71,4901620.14,24,1,7.47,14 +rsa,schematicO3,6,ok,yes,yes,32,32,23,0,1168617.85,1111278.98,22,0,2.91,14 +rsa,schematicO3,7,ok,yes,yes,32,32,24,0,5081790.92,5024454.72,23,0,6.59,14 +rsa,schematicO3,8,ok,yes,yes,32,32,32,3,5403669.73,5346316.47,27,3,8.0,14 +rsa,schematicO3,9,ok,yes,yes,32,32,26,0,5827968.63,5770622.03,25,0,8.49,14 +rsa,schematicO3,10,ok,yes,yes,32,32,25,3,4007792.97,3950453.4,21,3,5.71,14 +dijkstra,milp,1,ok,yes,yes,3788,3788,9,0,114672.44,86796.19,8,0,2.19,3 +dijkstra,milp,2,ok,yes,yes,3788,3788,10,0,542096.64,514216.1,9,0,3.09,3 +dijkstra,milp,3,ok,yes,yes,3788,3788,10,0,138142.39,110264.4,9,0,3.99,3 +dijkstra,milp,4,ok,yes,yes,3788,3788,9,0,1456178.14,1428300.32,8,0,3.99,3 +dijkstra,milp,5,ok,yes,yes,3788,3788,10,0,1851410.77,1823532.15,9,0,4.39,3 +dijkstra,milp,6,ok,yes,yes,3788,3788,9,0,702616.5,674739.12,8,0,2.58,3 +dijkstra,milp,7,ok,yes,yes,3788,3788,10,0,2022602.99,1994723.38,9,0,3.69,3 +dijkstra,milp,8,ok,yes,yes,3788,3788,12,0,869866.18,841983.05,10,0,3.49,3 +dijkstra,milp,9,ok,yes,yes,3788,3788,9,0,907190.61,879311.49,8,0,3.69,3 +dijkstra,milp,10,ok,yes,yes,3788,3788,9,0,114677.81,86800.55,8,0,1.89,3 +dijkstra,rockclimb,1,ok,yes,yes,3788,3788,512,16,40522202.24,38740547.32,495,16,42.59,4 +dijkstra,rockclimb,2,ok,yes,yes,3788,3788,676,13,51341898.67,49560138.49,662,13,53.89,4 +dijkstra,rockclimb,3,ok,yes,yes,3788,3788,1210,11,44705160.7,42922713.82,1198,11,48.62,4 +dijkstra,rockclimb,4,ok,yes,yes,3788,3788,931,0,189477727.43,187695713.16,930,0,191.99,4 +dijkstra,rockclimb,5,ok,yes,yes,3788,3788,699,44,138276730.25,136496366.13,654,44,140.77,4 +dijkstra,rockclimb,6,ok,yes,yes,3788,3788,646,11,58439879.22,56660152.17,634,11,60.29,4 +dijkstra,rockclimb,7,ok,yes,yes,3788,3788,640,0,103977288.22,102197659.99,639,0,105.71,4 +dijkstra,rockclimb,8,ok,yes,yes,3788,3788,992,102,157861116.94,156081941.68,888,102,160.49,4 +dijkstra,rockclimb,9,ok,yes,yes,3788,3788,620,0,150831192.82,149052716.9,619,0,153.48,4 +dijkstra,rockclimb,10,ok,yes,yes,3788,3788,632,99,130224833.59,128446695.01,532,99,132.0,4 +dijkstra,schematic,1,ok,yes,yes,3788,3788,52,1,2743308.28,2627510.65,50,1,4.79,2 +dijkstra,schematic,2,ok,yes,yes,3788,3788,60,1,4339693.62,4223865.43,58,1,6.89,2 +dijkstra,schematic,3,ok,yes,yes,3788,3788,97,0,1380999.42,1265122.25,96,0,5.31,2 +dijkstra,schematic,4,ok,yes,yes,3788,3788,75,0,16484110.2,16368265.97,74,0,19.01,2 +dijkstra,schematic,5,ok,yes,yes,3788,3788,66,4,12411494.81,12295660.48,61,4,14.89,2 +dijkstra,schematic,6,ok,yes,yes,3788,3788,62,1,5181736.67,5065919.58,60,1,6.98,2 +dijkstra,schematic,7,ok,yes,yes,3788,3788,61,0,9166414.31,9050596.44,60,0,10.8,2 +dijkstra,schematic,8,ok,yes,yes,3788,3788,85,7,11603642.26,11487792.32,76,7,14.21,2 +dijkstra,schematic,9,ok,yes,yes,3788,3788,61,0,13353344.35,13237535.45,60,0,16.11,2 +dijkstra,schematic,10,ok,yes,yes,3788,3788,65,9,11874394.02,11758589.55,55,9,13.51,2 +dijkstra,schematicO3,1,ok,yes,yes,3788,3788,10,0,127240.53,97446.33,9,0,2.19,2 +dijkstra,schematicO3,2,ok,yes,yes,3788,3788,11,0,566246.15,536451.96,10,0,3.09,2 +dijkstra,schematicO3,3,ok,yes,yes,3788,3788,14,0,183760.46,153963.74,13,0,4.1,2 +dijkstra,schematicO3,4,ok,yes,yes,3788,3788,12,0,2618957.99,2589160.92,11,0,5.09,2 +dijkstra,schematicO3,5,ok,yes,yes,3788,3788,12,0,1869326.25,1839530.27,11,0,4.39,2 +dijkstra,schematicO3,6,ok,yes,yes,3788,3788,12,0,879765.2,849970.48,11,0,2.69,2 +dijkstra,schematicO3,7,ok,yes,yes,3788,3788,13,0,2053820.69,2024022.59,12,0,3.79,2 +dijkstra,schematicO3,8,ok,yes,yes,3788,3788,14,0,890259.66,860462.13,12,0,3.38,2 +dijkstra,schematicO3,9,ok,yes,yes,3788,3788,10,0,931251.36,901459.42,9,0,3.69,2 +dijkstra,schematicO3,10,ok,yes,yes,3788,3788,9,0,116279.62,86489.09,8,0,1.81,2 +qsort,milp,1,ok,yes,yes,9987,9987,11,0,138794.36,108730.8,10,0,2.27,3 +qsort,milp,2,ok,yes,yes,9987,9987,11,0,567495.81,537432.02,10,0,3.08,3 +qsort,milp,3,ok,yes,yes,9987,9987,12,0,162310.43,132243.33,11,0,4.01,3 +qsort,milp,4,ok,yes,yes,9987,9987,14,0,3400645.54,3370576.64,13,0,5.9,3 +qsort,milp,5,ok,yes,yes,9987,9987,12,0,1883312.17,1853248.31,11,0,4.31,3 +qsort,milp,6,ok,yes,yes,9987,9987,12,0,722374.35,692309.29,11,0,2.59,3 +qsort,milp,7,ok,yes,yes,9987,9987,12,0,2045106.4,2015041.83,11,0,3.77,3 +qsort,milp,8,ok,yes,yes,9987,9987,16,0,890827.11,860757.27,14,0,3.48,3 +qsort,milp,9,ok,yes,yes,9987,9987,11,0,943839.17,913775.21,10,0,3.69,3 +qsort,milp,10,ok,yes,yes,9987,9987,10,0,127885.79,97825.5,9,0,1.88,3 +qsort,rockclimb,1,ok,yes,yes,9987,9987,104,3,7710185.72,7356144.71,100,3,9.79,5 +qsort,rockclimb,2,ok,yes,yes,9987,9987,136,2,8733448.49,8379350.02,133,2,11.29,5 +qsort,rockclimb,3,ok,yes,yes,9987,9987,236,2,8301897.73,7947597.19,233,2,12.21,5 +qsort,rockclimb,4,ok,yes,yes,9987,9987,205,0,40144376.43,39790154.78,204,0,42.67,5 +qsort,rockclimb,5,ok,yes,yes,9987,9987,138,9,27963252.52,27609172.35,128,9,30.49,5 +qsort,rockclimb,6,ok,yes,yes,9987,9987,135,2,11457908.36,11103771.23,132,2,13.2,5 +qsort,rockclimb,7,ok,yes,yes,9987,9987,133,0,20888846.25,20534771.59,132,0,22.5,5 +qsort,rockclimb,8,ok,yes,yes,9987,9987,199,19,30074318.54,29720150.66,178,19,32.7,5 +qsort,rockclimb,9,ok,yes,yes,9987,9987,132,0,30842162.72,30488056.45,131,0,33.6,5 +qsort,rockclimb,10,ok,yes,yes,9987,9987,127,18,23838904.63,23484825.58,108,18,25.58,5 +qsort,schematic,1,ok,yes,yes,9987,9987,17,0,219496.23,174488.43,16,0,2.27,2 +qsort,schematic,2,ok,yes,yes,9987,9987,20,0,730715.33,685703.15,19,0,3.22,2 +qsort,schematic,3,ok,yes,yes,9987,9987,28,0,341197.84,296170.83,27,0,4.3,2 +qsort,schematic,4,ok,yes,yes,9987,9987,32,0,6027990.73,5982962.18,31,0,8.49,2 +qsort,schematic,5,ok,yes,yes,9987,9987,23,1,3177525.79,3132506.24,21,1,5.69,2 +qsort,schematic,6,ok,yes,yes,9987,9987,22,0,1131826.13,1086808.61,21,0,2.91,2 +qsort,schematic,7,ok,yes,yes,9987,9987,24,0,3486078.85,3441060.46,23,0,5.18,2 +qsort,schematic,8,ok,yes,yes,9987,9987,27,1,2414724.51,2369697.16,24,1,5.0,2 +qsort,schematic,9,ok,yes,yes,9987,9987,20,0,3411114.44,3366100.62,19,0,6.19,2 +qsort,schematic,10,ok,yes,yes,9987,9987,22,3,3953895.86,3908883.73,18,3,5.67,2 +qsort,schematicO3,1,ok,yes,yes,9987,9987,15,0,193559.09,152452.82,14,0,2.27,1 +qsort,schematicO3,2,ok,yes,yes,9987,9987,19,0,704043.02,662928.5,18,0,3.29,1 +qsort,schematicO3,3,ok,yes,yes,9987,9987,25,0,304765.35,263642.02,24,0,4.19,1 +qsort,schematicO3,4,ok,yes,yes,9987,9987,23,0,4079416.85,4038294.4,22,0,6.59,1 +qsort,schematicO3,5,ok,yes,yes,9987,9987,22,1,3167734.07,3126611.37,20,1,5.7,1 +qsort,schematicO3,6,ok,yes,yes,9987,9987,21,0,1116791.15,1075670.85,20,0,2.91,1 +qsort,schematicO3,7,ok,yes,yes,9987,9987,20,0,3060650.1,3019533.25,19,0,4.77,1 +qsort,schematicO3,8,ok,yes,yes,9987,9987,25,1,2380466.66,2339340.4,22,1,4.88,1 +qsort,schematicO3,9,ok,yes,yes,9987,9987,18,0,3381808.97,3340692.1,17,0,6.1,1 +qsort,schematicO3,10,ok,yes,yes,9987,9987,15,0,193971.82,152859.43,14,0,1.97,1 +activity_recognition,milp,1,ok,yes,yes,64,64,11,0,144329.48,108491.28,10,0,2.11,4 +activity_recognition,milp,2,ok,yes,yes,64,64,13,0,619375.18,583534.73,12,0,3.18,4 +activity_recognition,milp,3,ok,yes,yes,64,64,13,0,178735.3,142892.93,12,0,4.09,4 +activity_recognition,milp,4,ok,yes,yes,64,64,12,0,3273059.98,3237218.48,11,0,5.79,4 +activity_recognition,milp,5,ok,yes,yes,64,64,14,0,1898731.9,1862891.17,13,0,4.4,4 +activity_recognition,milp,6,ok,yes,yes,64,64,13,0,1034359.34,998516.18,12,0,2.88,4 +activity_recognition,milp,7,ok,yes,yes,64,64,13,0,2058317.77,2022475.07,12,0,3.79,4 +activity_recognition,milp,8,ok,yes,yes,64,64,17,0,918125.61,882278.99,15,0,3.47,4 +activity_recognition,milp,9,ok,yes,yes,64,64,12,0,2629188.2,2593344.23,11,0,5.3,4 +activity_recognition,milp,10,ok,yes,yes,64,64,11,0,144436.16,108596.75,10,0,1.89,4 +activity_recognition,rockclimb,1,ok,yes,yes,64,64,49,1,2736150.77,2576701.08,47,1,4.78,8 +activity_recognition,rockclimb,2,ok,yes,yes,64,64,66,1,4483566.14,4324075.65,64,1,6.98,8 +activity_recognition,rockclimb,3,ok,yes,yes,64,64,110,1,4056380.49,3896776.74,108,1,8.0,8 +activity_recognition,rockclimb,4,ok,yes,yes,64,64,90,0,19127260.8,18967726.07,89,0,21.61,8 +activity_recognition,rockclimb,5,ok,yes,yes,64,64,64,4,12464805.86,12305302.36,59,4,14.9,8 +activity_recognition,rockclimb,6,ok,yes,yes,64,64,64,1,5828039.78,5668545.83,62,1,7.67,8 +activity_recognition,rockclimb,7,ok,yes,yes,64,64,62,0,10027816.82,9868314.33,61,0,11.69,8 +activity_recognition,rockclimb,8,ok,yes,yes,64,64,92,9,14619806.11,14460245.1,81,9,17.21,8 +activity_recognition,rockclimb,9,ok,yes,yes,64,64,60,0,13384105.98,13224597.49,59,0,16.18,8 +activity_recognition,rockclimb,10,ok,yes,yes,64,64,61,9,11860629.75,11701133.84,51,9,13.58,8 +activity_recognition,schematic,1,ok,yes,yes,64,64,44,1,2654377.86,2545984.45,42,1,4.67,6 +activity_recognition,schematic,2,ok,yes,yes,64,64,55,0,2088089.05,1979674.93,54,0,4.68,6 +activity_recognition,schematic,3,ok,yes,yes,64,64,87,0,1276593.37,1168134.47,86,0,5.19,6 +activity_recognition,schematic,4,ok,yes,yes,64,64,64,0,13900076.94,13791646.69,63,0,16.4,6 +activity_recognition,schematic,5,ok,yes,yes,64,64,54,3,11138709.02,11030287.35,50,3,13.7,6 +activity_recognition,schematic,6,ok,yes,yes,64,64,51,1,3779749.01,3671334.02,49,1,5.6,6 +activity_recognition,schematic,7,ok,yes,yes,64,64,51,0,8983871.81,8875466.93,50,0,10.71,6 +activity_recognition,schematic,8,ok,yes,yes,64,64,73,6,10120970.4,10012534.39,65,6,12.79,6 +activity_recognition,schematic,9,ok,yes,yes,64,64,52,0,10880080.13,10771673.83,51,0,13.69,6 +activity_recognition,schematic,10,ok,yes,yes,64,64,49,6,8026349.63,7917956.65,42,6,9.69,6 +activity_recognition,schematicO3,1,ok,yes,yes,64,64,14,0,180769.26,141478.39,13,0,2.28,3 +activity_recognition,schematicO3,2,ok,yes,yes,64,64,16,0,645011.06,605715.18,15,0,3.18,3 +activity_recognition,schematicO3,3,ok,yes,yes,64,64,21,0,258584.99,219281.03,20,0,4.18,3 +activity_recognition,schematicO3,4,ok,yes,yes,64,64,18,0,3449093.97,3409796.94,17,0,5.98,3 +activity_recognition,schematicO3,5,ok,yes,yes,64,64,18,1,3129336.38,3090036.2,16,1,5.69,3 +activity_recognition,schematicO3,6,ok,yes,yes,64,64,18,0,1095998.1,1056699.35,17,0,2.8,3 +activity_recognition,schematicO3,7,ok,yes,yes,64,64,17,0,3038113.82,2998815.84,16,0,4.78,3 +activity_recognition,schematicO3,8,ok,yes,yes,64,64,21,1,2338786.43,2299481.27,18,1,5.0,3 +activity_recognition,schematicO3,9,ok,yes,yes,64,64,16,1,3358607.96,3319309.29,14,1,6.1,3 +activity_recognition,schematicO3,10,ok,yes,yes,64,64,13,0,169828.47,130538.04,12,0,1.88,3 +bitcount,milp,1,ok,yes,yes,14121,14121,8,0,105386.78,75764.93,7,0,2.17,9 +bitcount,milp,2,ok,yes,yes,14121,14121,8,0,547334.24,517710.87,7,0,3.1,9 +bitcount,milp,3,ok,yes,yes,14121,14121,7,0,118947.55,89323.62,6,0,4.0,9 +bitcount,milp,4,ok,yes,yes,14121,14121,8,0,849675.84,820053.51,7,0,3.29,9 +bitcount,milp,5,ok,yes,yes,14121,14121,9,0,1839270.8,1809645.56,8,0,4.37,9 +bitcount,milp,6,ok,yes,yes,14121,14121,10,0,702799.24,673173.43,9,0,2.42,9 +bitcount,milp,7,ok,yes,yes,14121,14121,9,0,2013039.05,1983412.68,8,0,3.69,9 +bitcount,milp,8,ok,yes,yes,14121,14121,14,0,882148.04,852519.42,12,0,3.37,9 +bitcount,milp,9,ok,yes,yes,14121,14121,9,0,922751.56,893127.93,8,0,3.67,9 +bitcount,milp,10,ok,yes,yes,14121,14121,8,0,105575.9,75954.45,7,0,1.88,9 +bitcount,rockclimb,1,ok,yes,yes,14121,14121,280,9,22695785.21,21729572.82,270,9,24.79,14 +bitcount,rockclimb,2,ok,yes,yes,14121,14121,381,7,27966739.49,27000286.84,373,7,30.51,14 +bitcount,rockclimb,3,ok,yes,yes,14121,14121,663,6,24451794.31,23484982.74,656,6,28.38,14 +bitcount,rockclimb,4,ok,yes,yes,14121,14121,532,0,116106081.63,115139467.39,531,0,118.62,14 +bitcount,rockclimb,5,ok,yes,yes,14121,14121,388,24,76251226.78,75284659.72,363,24,78.81,14 +bitcount,rockclimb,6,ok,yes,yes,14121,14121,352,6,32188788.04,31222083.53,345,6,33.88,14 +bitcount,rockclimb,7,ok,yes,yes,14121,14121,354,0,57549277.59,56582474.76,353,0,59.21,14 +bitcount,rockclimb,8,ok,yes,yes,14121,14121,541,54,84078142.63,83111193.26,485,54,86.69,14 +bitcount,rockclimb,9,ok,yes,yes,14121,14121,327,0,80890127.31,79923737.47,326,0,83.69,14 +bitcount,rockclimb,10,ok,yes,yes,14121,14121,346,54,71036948.37,70070624.16,291,54,72.79,14 +bitcount,schematic,1,ok,yes,yes,14121,14121,32,0,1018221.36,936324.21,31,0,3.07,2 +bitcount,schematic,2,ok,yes,yes,14121,14121,40,0,1688280.99,1606371.56,39,0,4.2,2 +bitcount,schematic,3,ok,yes,yes,14121,14121,63,0,1011897.65,929942.23,62,0,4.89,2 +bitcount,schematic,4,ok,yes,yes,14121,14121,53,0,11249926.71,11168000.06,52,0,13.78,2 +bitcount,schematic,5,ok,yes,yes,14121,14121,43,2,8056781.03,7974867.75,40,2,10.59,2 +bitcount,schematic,6,ok,yes,yes,14121,14121,39,0,1602878.76,1520978.3,38,0,3.39,2 +bitcount,schematic,7,ok,yes,yes,14121,14121,41,0,6518371.88,6436468.38,40,0,8.19,2 +bitcount,schematic,8,ok,yes,yes,14121,14121,55,4,6985043.89,6903117.84,49,4,9.6,2 +bitcount,schematic,9,ok,yes,yes,14121,14121,40,0,8366565.98,8284660.76,39,0,11.07,2 +bitcount,schematic,10,ok,yes,yes,14121,14121,41,6,7893161.94,7811267.52,34,6,9.58,2 +bitcount,schematicO3,1,ok,yes,yes,14121,14121,9,0,117265.14,86908.82,8,0,2.22,3 +bitcount,schematicO3,2,ok,yes,yes,14121,14121,11,0,568153.42,537794.47,10,0,3.08,3 +bitcount,schematicO3,3,ok,yes,yes,14121,14121,9,0,141665.33,111308.25,8,0,4.01,3 +bitcount,schematicO3,4,ok,yes,yes,14121,14121,10,0,2620409.63,2590050.87,9,0,5.17,3 +bitcount,schematicO3,5,ok,yes,yes,14121,14121,11,0,1875286.12,1844926.66,10,0,4.41,3 +bitcount,schematicO3,6,ok,yes,yes,14121,14121,12,0,724824.85,694463.14,11,0,2.59,3 +bitcount,schematicO3,7,ok,yes,yes,14121,14121,10,0,2022807.28,1992446.92,9,0,3.77,3 +bitcount,schematicO3,8,ok,yes,yes,14121,14121,14,0,893834.27,863471.71,12,0,3.41,3 +bitcount,schematicO3,9,ok,yes,yes,14121,14121,9,0,923660.74,893304.36,8,0,3.71,3 +bitcount,schematicO3,10,ok,yes,yes,14121,14121,9,0,117148.39,86793.62,8,0,1.87,3 +chacha20,milp,1,ok,yes,yes,79,79,11,0,159467.95,107561.17,10,0,2.26,2 +chacha20,milp,2,ok,yes,yes,79,79,12,0,622519.98,570609.88,11,0,3.18,2 +chacha20,milp,3,ok,yes,yes,79,79,11,0,208490.03,156580.84,10,0,4.08,2 +chacha20,milp,4,ok,yes,yes,79,79,12,1,3392855.3,3340944.88,10,1,5.8,2 +chacha20,milp,5,ok,yes,yes,79,79,11,0,1895127.34,1843222.15,10,0,4.48,2 +chacha20,milp,6,ok,yes,yes,79,79,11,0,1040239.39,988331.2,10,0,2.87,2 +chacha20,milp,7,ok,yes,yes,79,79,11,0,2079525.89,2027618.81,10,0,3.77,2 +chacha20,milp,8,ok,yes,yes,79,79,13,0,914172.11,862262.01,11,0,3.49,2 +chacha20,milp,9,ok,yes,yes,79,79,12,1,2504250.92,2452342.78,10,1,5.29,2 +chacha20,milp,10,ok,yes,yes,79,79,11,0,159503.56,107598.4,10,0,1.87,2 +chacha20,rockclimb,1,ok,yes,yes,79,79,46,1,2686607.07,2557975.47,44,1,4.7,4 +chacha20,rockclimb,2,ok,yes,yes,79,79,61,1,4314943.43,4186288.77,59,1,6.88,4 +chacha20,rockclimb,3,ok,yes,yes,79,79,96,0,1385061.95,1256378.29,95,0,5.29,4 +chacha20,rockclimb,4,ok,yes,yes,79,79,72,0,13941534.72,13812893.97,71,0,16.47,4 +chacha20,rockclimb,5,ok,yes,yes,79,79,57,3,11184744.94,11056110.03,53,3,13.6,4 +chacha20,rockclimb,6,ok,yes,yes,79,79,55,1,4667260.83,4538624.86,53,1,6.49,4 +chacha20,rockclimb,7,ok,yes,yes,79,79,55,0,9026723.7,8898090.48,54,0,10.7,4 +chacha20,rockclimb,8,ok,yes,yes,79,79,75,6,10170101.29,10041448.26,67,6,12.77,4 +chacha20,rockclimb,9,ok,yes,yes,79,79,56,0,10937567.99,10808941.99,55,0,13.67,4 +chacha20,rockclimb,10,ok,yes,yes,79,79,53,6,8061499.79,7932881.14,46,6,9.78,4 +chacha20,schematic,1,ok,yes,yes,79,79,34,1,2522302.89,2426904.42,32,1,4.59,2 +chacha20,schematic,2,ok,yes,yes,79,79,34,0,1667022.3,1571623.4,33,0,4.18,2 +chacha20,schematic,3,ok,yes,yes,79,79,37,0,769311.33,673898.51,36,0,4.59,2 +chacha20,schematic,4,ok,yes,yes,79,79,35,1,8652801.43,8557397.28,33,1,11.18,2 +chacha20,schematic,5,ok,yes,yes,79,79,36,2,6269065.83,6173664.28,33,2,8.87,2 +chacha20,schematic,6,ok,yes,yes,79,79,33,0,1606269.49,1510875.14,32,0,3.42,2 +chacha20,schematic,7,ok,yes,yes,79,79,34,0,5667243.38,5571843.14,33,0,7.3,2 +chacha20,schematic,8,ok,yes,yes,79,79,37,3,5517116.85,5421709.7,32,3,8.09,2 +chacha20,schematic,9,ok,yes,yes,79,79,37,2,8330893.12,8235484.47,34,2,11.09,2 +chacha20,schematic,10,ok,yes,yes,79,79,39,6,7883257.18,7787853.34,32,6,9.5,2 +chacha20,schematicO3,1,ok,yes,yes,79,79,22,0,887957.01,826188.94,21,0,2.92,1 +chacha20,schematicO3,2,ok,yes,yes,79,79,24,0,776353.31,714579.49,23,0,3.28,1 +chacha20,schematicO3,3,ok,yes,yes,79,79,28,0,367697.05,305918.94,27,0,4.32,1 +chacha20,schematicO3,4,ok,yes,yes,79,79,25,0,6036338.44,5974563.45,24,0,8.5,1 +chacha20,schematicO3,5,ok,yes,yes,79,79,27,1,4970654.62,4908875.56,25,1,7.5,1 +chacha20,schematicO3,6,ok,yes,yes,79,79,23,0,1181802.87,1120032.42,22,0,3.01,1 +chacha20,schematicO3,7,ok,yes,yes,79,79,23,0,5081027.6,5019256.98,22,0,6.7,1 +chacha20,schematicO3,8,ok,yes,yes,79,79,31,3,5382134.06,5320352.0,26,3,7.89,1 +chacha20,schematicO3,9,ok,yes,yes,79,79,24,1,5123350.81,5061574.4,22,1,7.93,1 +chacha20,schematicO3,10,ok,yes,yes,79,79,25,3,4009892.43,3948121.06,21,3,5.7,1 +sensor_fusion,milp,1,ok,yes,yes,613,613,8,0,103439.59,76028.6,7,0,2.1,2 +sensor_fusion,milp,2,ok,yes,yes,613,613,12,0,552177.73,524760.38,11,0,3.01,2 +sensor_fusion,milp,3,ok,yes,yes,613,613,13,0,171189.59,143770.64,12,0,4.1,2 +sensor_fusion,milp,4,ok,yes,yes,613,613,11,0,2615234.87,2587818.7,10,0,5.09,2 +sensor_fusion,milp,5,ok,yes,yes,613,613,11,0,1847903.26,1820485.86,10,0,4.4,2 +sensor_fusion,milp,6,ok,yes,yes,613,613,11,0,709850.96,682436.07,10,0,2.49,2 +sensor_fusion,milp,7,ok,yes,yes,613,613,11,0,2019660.29,1992244.11,10,0,3.68,2 +sensor_fusion,milp,8,ok,yes,yes,613,613,14,0,878010.23,850590.99,12,0,3.43,2 +sensor_fusion,milp,9,ok,yes,yes,613,613,9,0,919544.75,892131.64,8,0,3.65,2 +sensor_fusion,milp,10,ok,yes,yes,613,613,8,0,103532.6,76122.46,7,0,1.81,2 +sensor_fusion,rockclimb,1,ok,yes,yes,613,613,10,0,127524.45,97777.52,9,0,2.22,2 +sensor_fusion,rockclimb,2,ok,yes,yes,613,613,12,0,566489.86,536738.37,11,0,3.09,2 +sensor_fusion,rockclimb,3,ok,yes,yes,613,613,14,0,184038.53,154283.96,13,0,4.08,2 +sensor_fusion,rockclimb,4,ok,yes,yes,613,613,14,0,3403947.6,3374194.56,13,0,5.89,2 +sensor_fusion,rockclimb,5,ok,yes,yes,613,613,12,0,1871997.4,1842248.35,11,0,4.39,2 +sensor_fusion,rockclimb,6,ok,yes,yes,613,613,14,0,1039764.35,1010012.51,13,0,2.82,2 +sensor_fusion,rockclimb,7,ok,yes,yes,613,613,13,0,2054502.5,2024752.61,12,0,3.72,2 +sensor_fusion,rockclimb,8,ok,yes,yes,613,613,16,0,901055.78,871301.75,14,0,3.48,2 +sensor_fusion,rockclimb,9,ok,yes,yes,613,613,10,0,931368.57,901620.89,9,0,3.71,2 +sensor_fusion,rockclimb,10,ok,yes,yes,613,613,10,0,127488.8,97743.11,9,0,1.81,2 +sensor_fusion,schematic,1,ok,yes,yes,613,613,14,0,176326.45,141861.83,13,0,2.2,1 +sensor_fusion,schematic,2,ok,yes,yes,613,613,16,0,639969.15,605497.43,15,0,3.1,1 +sensor_fusion,schematic,3,ok,yes,yes,613,613,20,0,254693.56,220218.78,19,0,4.19,1 +sensor_fusion,schematic,4,ok,yes,yes,613,613,18,0,3443412.14,3408937.31,17,0,5.99,1 +sensor_fusion,schematic,5,ok,yes,yes,613,613,17,1,3111912.7,3077439.2,15,1,5.7,1 +sensor_fusion,schematic,6,ok,yes,yes,613,613,17,0,1078500.76,1044029.11,16,0,2.88,1 +sensor_fusion,schematic,7,ok,yes,yes,613,613,17,0,3031594.51,2997123.25,16,0,4.79,1 +sensor_fusion,schematic,8,ok,yes,yes,613,613,19,0,926589.97,892116.06,17,0,3.6,1 +sensor_fusion,schematic,9,ok,yes,yes,613,613,15,0,3357630.26,3323161.32,14,0,6.1,1 +sensor_fusion,schematic,10,ok,yes,yes,613,613,14,0,176407.13,141942.0,13,0,1.97,1 +sensor_fusion,schematicO3,1,ok,yes,yes,613,613,12,0,153135.29,119997.89,11,0,2.29,1 +sensor_fusion,schematicO3,2,ok,yes,yes,613,613,16,0,639922.2,606780.73,15,0,3.2,1 +sensor_fusion,schematicO3,3,ok,yes,yes,613,613,20,0,241906.19,208758.38,19,0,4.18,1 +sensor_fusion,schematicO3,4,ok,yes,yes,613,613,22,0,3436592.85,3403438.86,21,0,5.97,1 +sensor_fusion,schematicO3,5,ok,yes,yes,613,613,16,1,3100701.58,3067554.81,14,1,5.61,1 +sensor_fusion,schematicO3,6,ok,yes,yes,613,613,18,0,1064060.54,1030913.17,17,0,2.88,1 +sensor_fusion,schematicO3,7,ok,yes,yes,613,613,15,0,2070533.0,2037389.71,14,0,3.79,1 +sensor_fusion,schematicO3,8,ok,yes,yes,613,613,19,0,927987.6,894840.14,17,0,3.58,1 +sensor_fusion,schematicO3,9,ok,yes,yes,613,613,15,0,3346582.54,3313442.26,14,0,6.08,1 +sensor_fusion,schematicO3,10,ok,yes,yes,613,613,12,0,152986.94,119850.22,11,0,1.7,1 +poly1305,milp,1,ok,yes,yes,68,68,132,4,10185522.5,9691945.98,127,4,12.3,2 +poly1305,milp,2,ok,yes,yes,68,68,131,2,9704329.28,9210732.93,128,2,12.21,2 +poly1305,milp,3,ok,yes,yes,68,68,129,1,5158572.24,4664948.59,127,1,9.09,2 +poly1305,milp,4,ok,yes,yes,68,68,133,5,36678855.67,36185245.19,127,5,39.17,2 +poly1305,milp,5,ok,yes,yes,68,68,138,9,29774359.11,29280767.41,128,9,32.38,2 +poly1305,milp,6,ok,yes,yes,68,68,131,3,11922830.53,11429242.57,127,3,13.78,2 +poly1305,milp,7,ok,yes,yes,68,68,128,0,22962988.22,22469397.29,127,0,24.69,2 +poly1305,milp,8,ok,yes,yes,68,68,148,18,28597603.49,28104006.68,128,18,31.2,2 +poly1305,milp,9,ok,yes,yes,68,68,139,10,33339672.33,32846074.15,128,10,36.09,2 +poly1305,milp,10,ok,yes,yes,68,68,152,24,31671427.12,31177854.23,127,24,33.38,2 +poly1305,rockclimb,1,ok,yes,yes,68,68,322,9,23532335.06,22746348.91,312,9,25.58,4 +poly1305,rockclimb,2,ok,yes,yes,68,68,407,7,27996715.05,27210578.99,399,7,30.6,4 +poly1305,rockclimb,3,ok,yes,yes,68,68,651,6,24230100.76,23443576.48,644,6,28.17,4 +poly1305,rockclimb,4,ok,yes,yes,68,68,518,0,116068284.53,115281980.76,517,0,118.62,4 +poly1305,rockclimb,5,ok,yes,yes,68,68,407,25,79376036.5,78589878.42,381,25,81.89,4 +poly1305,rockclimb,6,ok,yes,yes,68,68,383,6,32610174.65,31824062.98,376,6,34.47,4 +poly1305,rockclimb,7,ok,yes,yes,68,68,385,0,60110341.36,59324252.29,384,0,61.71,4 +poly1305,rockclimb,8,ok,yes,yes,68,68,564,55,85522662.27,84736258.39,507,55,88.1,4 +poly1305,rockclimb,9,ok,yes,yes,68,68,362,0,83403334.19,82617315.39,361,0,86.21,4 +poly1305,rockclimb,10,ok,yes,yes,68,68,386,57,75011310.64,74225274.7,328,57,76.79,4 +poly1305,schematic,1,ok,yes,yes,68,68,269,8,20228395.28,19538872.67,260,8,22.21,4 +poly1305,schematic,2,ok,yes,yes,68,68,281,5,20345723.31,19656161.52,275,5,22.9,4 +poly1305,schematic,3,ok,yes,yes,68,68,335,3,13011525.95,12321853.67,331,3,16.91,4 +poly1305,schematic,4,ok,yes,yes,68,68,298,1,68901889.17,68212277.06,296,1,71.4,4 +poly1305,schematic,5,ok,yes,yes,68,68,291,19,60779195.02,60089606.19,271,19,63.31,4 +poly1305,schematic,6,ok,yes,yes,68,68,287,7,26862479.85,26172939.58,279,7,28.67,4 +poly1305,schematic,7,ok,yes,yes,68,68,276,0,43825711.54,43136162.81,275,0,45.58,4 +poly1305,schematic,8,ok,yes,yes,68,68,316,37,57766472.42,57076861.62,277,37,60.4,4 +poly1305,schematic,9,ok,yes,yes,68,68,301,20,68360575.75,67670995.74,280,20,71.12,4 +poly1305,schematic,10,ok,yes,yes,68,68,307,48,63054810.33,62365275.85,258,48,64.83,4 +poly1305,schematicO3,1,ok,yes,yes,68,68,185,5,13504204.79,12952900.15,179,5,15.59,1 +poly1305,schematicO3,2,ok,yes,yes,68,68,191,3,13844204.01,13292874.61,187,3,16.2,1 +poly1305,schematicO3,3,ok,yes,yes,68,68,241,2,9215343.01,8663916.14,238,2,13.07,1 +poly1305,schematicO3,4,ok,yes,yes,68,68,189,0,50594541.07,50043200.82,188,0,53.1,1 +poly1305,schematicO3,5,ok,yes,yes,68,68,214,14,43454015.59,42902638.26,199,14,46.01,1 +poly1305,schematicO3,6,ok,yes,yes,68,68,207,5,20099002.63,19547656.33,201,5,21.92,1 +poly1305,schematicO3,7,ok,yes,yes,68,68,191,0,32952166.26,32400833.43,190,0,34.69,1 +poly1305,schematicO3,8,ok,yes,yes,68,68,244,28,43960866.03,43409458.28,214,28,46.51,1 +poly1305,schematicO3,9,ok,yes,yes,68,68,203,7,48355517.26,47804185.29,195,7,51.09,1 +poly1305,schematicO3,10,ok,yes,yes,68,68,216,33,43482013.03,42930674.25,182,33,45.21,1 +cuckoo_filter,milp,1,ok,yes,yes,4048,4048,13,0,175871.02,130232.53,12,0,2.3,3 +cuckoo_filter,milp,2,ok,yes,yes,4048,4048,14,0,651645.92,606004.55,13,0,3.22,3 +cuckoo_filter,milp,3,ok,yes,yes,4048,4048,16,0,233521.49,187876.87,15,0,4.2,3 +cuckoo_filter,milp,4,ok,yes,yes,4048,4048,16,0,3429475.34,3383831.78,15,0,5.99,3 +cuckoo_filter,milp,5,ok,yes,yes,4048,4048,13,0,1911507.86,1865868.87,12,0,4.49,3 +cuckoo_filter,milp,6,ok,yes,yes,4048,4048,13,0,1054973.55,1009331.47,12,0,2.89,3 +cuckoo_filter,milp,7,ok,yes,yes,4048,4048,15,0,2080723.68,2035081.99,14,0,3.71,3 +cuckoo_filter,milp,8,ok,yes,yes,4048,4048,18,0,925074.14,879429.21,16,0,3.51,3 +cuckoo_filter,milp,9,ok,yes,yes,4048,4048,15,1,3354285.83,3308645.73,13,1,6.16,3 +cuckoo_filter,milp,10,ok,yes,yes,4048,4048,13,0,175866.43,130227.0,12,0,1.89,3 +cuckoo_filter,rockclimb,1,ok,yes,yes,4048,4048,130,4,10119200.86,9701992.55,125,4,12.17,5 +cuckoo_filter,rockclimb,2,ok,yes,yes,4048,4048,170,3,12179726.0,11762428.23,166,3,14.62,5 +cuckoo_filter,rockclimb,3,ok,yes,yes,4048,4048,297,2,9210890.21,8793288.97,294,2,13.11,5 +cuckoo_filter,rockclimb,4,ok,yes,yes,4048,4048,234,0,47944847.34,47527450.06,233,0,50.41,5 +cuckoo_filter,rockclimb,5,ok,yes,yes,4048,4048,170,11,34149712.01,33732403.82,158,11,36.69,5 +cuckoo_filter,rockclimb,6,ok,yes,yes,4048,4048,164,3,14088378.17,13671158.71,160,3,15.81,5 +cuckoo_filter,rockclimb,7,ok,yes,yes,4048,4048,171,0,26377563.16,25960331.21,170,0,28.04,5 +cuckoo_filter,rockclimb,8,ok,yes,yes,4048,4048,248,24,37802743.35,37385353.92,222,24,40.41,5 +cuckoo_filter,rockclimb,9,ok,yes,yes,4048,4048,155,0,35894165.84,35476963.31,154,0,38.69,5 +cuckoo_filter,rockclimb,10,ok,yes,yes,4048,4048,159,24,31590616.25,31173416.48,134,24,33.32,5 +cuckoo_filter,schematic,1,ok,yes,yes,4048,4048,117,4,7750648.87,7465194.54,112,4,9.83,6 +cuckoo_filter,schematic,2,ok,yes,yes,4048,4048,125,2,8558954.78,8273475.71,122,2,11.11,6 +cuckoo_filter,schematic,3,ok,yes,yes,4048,4048,175,1,5267849.64,4982297.04,173,1,9.18,6 +cuckoo_filter,schematic,4,ok,yes,yes,4048,4048,139,0,32276585.97,31991090.71,138,0,34.78,6 +cuckoo_filter,schematic,5,ok,yes,yes,4048,4048,132,8,24893892.25,24608399.65,123,8,27.4,6 +cuckoo_filter,schematic,6,ok,yes,yes,4048,4048,128,2,11406108.09,11120647.67,125,2,13.29,6 +cuckoo_filter,schematic,7,ok,yes,yes,4048,4048,126,0,20432877.08,20147407.39,125,0,22.04,6 +cuckoo_filter,schematic,8,ok,yes,yes,4048,4048,158,16,25511378.06,25225857.99,140,16,28.03,6 +cuckoo_filter,schematic,9,ok,yes,yes,4048,4048,126,3,28377798.85,28092332.39,122,3,31.19,6 +cuckoo_filter,schematic,10,ok,yes,yes,4048,4048,134,18,23832122.55,23546660.3,115,18,25.58,6 +cuckoo_filter,schematicO3,1,ok,yes,yes,4048,4048,18,1,840272.29,782621.45,16,1,2.82,5 +cuckoo_filter,schematicO3,2,ok,yes,yes,4048,4048,22,0,740074.68,682417.91,21,0,3.25,5 +cuckoo_filter,schematicO3,3,ok,yes,yes,4048,4048,26,0,355445.28,297783.84,25,0,4.28,5 +cuckoo_filter,schematicO3,4,ok,yes,yes,4048,4048,24,1,6011707.12,5954046.61,22,1,8.5,5 +cuckoo_filter,schematicO3,5,ok,yes,yes,4048,4048,23,1,3196422.83,3138763.32,21,1,5.71,5 +cuckoo_filter,schematicO3,6,ok,yes,yes,4048,4048,19,0,1135462.26,1077810.31,18,0,3.0,5 +cuckoo_filter,schematicO3,7,ok,yes,yes,4048,4048,22,0,3485738.4,3428082.09,21,0,5.21,5 +cuckoo_filter,schematicO3,8,ok,yes,yes,4048,4048,25,1,2395531.47,2337868.51,22,1,5.01,5 +cuckoo_filter,schematicO3,9,ok,yes,yes,4048,4048,20,0,3428663.78,3371012.52,19,0,6.2,5 +cuckoo_filter,schematicO3,10,ok,yes,yes,4048,4048,22,3,3968274.66,3910620.9,18,3,5.73,5 +sha256,milp,1,ok,yes,yes,131,131,18,1,872692.95,773372.19,16,1,2.99,8 +sha256,milp,2,ok,yes,yes,131,131,18,0,746531.66,647203.93,17,0,3.3,8 +sha256,milp,3,ok,yes,yes,131,131,18,0,343609.96,244282.74,17,0,4.24,8 +sha256,milp,4,ok,yes,yes,131,131,19,2,5237944.71,5138618.63,16,2,7.7,8 +sha256,milp,5,ok,yes,yes,131,131,18,1,3185576.5,3086253.34,16,1,5.7,8 +sha256,milp,6,ok,yes,yes,131,131,17,0,1135516.34,1036190.25,16,0,3.0,8 +sha256,milp,7,ok,yes,yes,131,131,17,0,3093229.95,2993908.11,16,0,4.78,8 +sha256,milp,8,ok,yes,yes,131,131,20,1,2411920.61,2312595.77,17,1,5.02,8 +sha256,milp,9,ok,yes,yes,131,131,19,1,3438962.32,3339635.91,17,1,6.19,8 +sha256,milp,10,ok,yes,yes,131,131,20,3,3993632.56,3894308.92,16,3,5.7,8 +sha256,rockclimb,1,ok,yes,yes,131,131,74,2,5137376.57,4933454.62,71,2,7.22,11 +sha256,rockclimb,2,ok,yes,yes,131,131,99,1,5598049.91,5394087.42,97,1,8.14,11 +sha256,rockclimb,3,ok,yes,yes,131,131,172,1,4962880.96,4758793.77,170,1,8.9,11 +sha256,rockclimb,4,ok,yes,yes,131,131,130,0,24433894.22,24229894.12,129,0,26.92,11 +sha256,rockclimb,5,ok,yes,yes,131,131,98,6,18639535.11,18435558.92,91,6,21.2,11 +sha256,rockclimb,6,ok,yes,yes,131,131,91,1,6614513.14,6410557.03,89,1,8.41,11 +sha256,rockclimb,7,ok,yes,yes,131,131,93,0,14866982.92,14663027.36,92,0,16.63,11 +sha256,rockclimb,8,ok,yes,yes,131,131,138,12,19379136.53,19175102.42,124,12,22.01,11 +sha256,rockclimb,9,ok,yes,yes,131,131,91,0,20831192.41,20627229.82,90,0,23.54,11 +sha256,rockclimb,10,ok,yes,yes,131,131,87,12,15897152.83,15693213.53,74,12,17.61,11 +sha256,schematic,1,ok,yes,yes,131,131,38,1,2591380.8,2470999.84,36,1,4.67,7 +sha256,schematic,2,ok,yes,yes,131,131,45,0,1919376.92,1798982.98,44,0,4.41,7 +sha256,schematic,3,ok,yes,yes,131,131,61,0,1081572.08,961152.75,60,0,4.98,7 +sha256,schematic,4,ok,yes,yes,131,131,49,1,11287201.05,11166797.55,47,1,13.73,7 +sha256,schematic,5,ok,yes,yes,131,131,46,3,9299736.14,9179338.59,42,3,11.82,7 +sha256,schematic,6,ok,yes,yes,131,131,39,0,1682344.67,1561951.92,38,0,3.51,7 +sha256,schematic,7,ok,yes,yes,131,131,45,0,8572265.81,8451872.44,44,0,10.31,7 +sha256,schematic,8,ok,yes,yes,131,131,56,6,9280862.76,9160452.13,48,6,11.93,7 +sha256,schematic,9,ok,yes,yes,131,131,41,1,8422957.74,8302569.37,39,1,11.22,7 +sha256,schematic,10,ok,yes,yes,131,131,44,6,7966946.58,7846555.89,37,6,9.73,7 +sha256,schematicO3,1,ok,yes,yes,131,131,35,1,2533685.53,2431750.36,33,1,4.69,6 +sha256,schematicO3,2,ok,yes,yes,131,131,33,0,1647106.81,1545173.7,32,0,4.22,6 +sha256,schematicO3,3,ok,yes,yes,131,131,33,0,657337.08,555405.61,32,0,4.6,6 +sha256,schematicO3,4,ok,yes,yes,131,131,35,2,8636676.93,8534735.6,32,2,11.19,6 +sha256,schematicO3,5,ok,yes,yes,131,131,35,2,6258860.66,6156923.79,32,2,8.71,6 +sha256,schematicO3,6,ok,yes,yes,131,131,33,0,1625429.1,1523500.72,32,0,3.4,6 +sha256,schematicO3,7,ok,yes,yes,131,131,33,0,5540701.11,5438769.75,32,0,7.28,6 +sha256,schematicO3,8,ok,yes,yes,131,131,37,3,5523271.75,5421332.62,32,3,8.2,6 +sha256,schematicO3,9,ok,yes,yes,131,131,35,1,8225261.47,8123322.34,33,1,11.0,6 +sha256,schematicO3,10,ok,yes,yes,131,131,39,6,7895315.85,7793382.43,32,6,9.59,6 +stringsearch,milp,1,ok,yes,yes,20,20,14,0,183881.2,141362.92,13,0,2.3,4 +stringsearch,milp,2,ok,yes,yes,20,20,19,0,693636.08,651107.68,18,0,3.22,4 +stringsearch,milp,3,ok,yes,yes,20,20,24,0,295217.57,252680.6,23,0,4.19,4 +stringsearch,milp,4,ok,yes,yes,20,20,21,0,3472219.53,3429687.77,20,0,6.0,4 +stringsearch,milp,5,ok,yes,yes,20,20,20,1,3139409.11,3096884.21,18,1,5.72,4 +stringsearch,milp,6,ok,yes,yes,20,20,19,0,1096235.46,1053706.35,18,0,2.82,4 +stringsearch,milp,7,ok,yes,yes,20,20,20,0,3061818.13,3019288.66,19,0,4.8,4 +stringsearch,milp,8,ok,yes,yes,20,20,25,1,2363430.01,2320897.17,22,1,5.0,4 +stringsearch,milp,9,ok,yes,yes,20,20,18,0,3387243.48,3344717.44,17,0,6.2,4 +stringsearch,milp,10,ok,yes,yes,20,20,14,0,184238.98,141717.8,13,0,1.81,4 +stringsearch,rockclimb,1,ok,yes,yes,20,20,594,19,47924201.07,45836536.18,574,19,50.0,8 +stringsearch,rockclimb,2,ok,yes,yes,20,20,804,14,56569666.05,54481752.88,789,14,59.19,8 +stringsearch,rockclimb,3,ok,yes,yes,20,20,1393,13,52435042.68,50345930.46,1379,13,56.31,8 +stringsearch,rockclimb,4,ok,yes,yes,20,20,1170,0,241866192.61,239777961.42,1169,0,244.34,8 +stringsearch,rockclimb,5,ok,yes,yes,20,20,789,52,163031933.4,160943914.88,736,52,165.59,8 +stringsearch,rockclimb,6,ok,yes,yes,20,20,758,13,68560787.6,66472796.35,744,13,70.32,8 +stringsearch,rockclimb,7,ok,yes,yes,20,20,791,0,127348351.3,125260385.87,790,0,129.09,8 +stringsearch,rockclimb,8,ok,yes,yes,20,20,1153,118,182557319.69,180468729.53,1033,118,185.11,8 +stringsearch,rockclimb,9,ok,yes,yes,20,20,716,0,173348771.35,171261080.52,715,0,176.02,8 +stringsearch,rockclimb,10,ok,yes,yes,20,20,737,117,153778501.15,151690880.72,619,117,155.49,8 +stringsearch,schematic,1,ok,yes,yes,20,20,55,1,3404422.96,3259539.93,53,1,5.39,7 +stringsearch,schematic,2,ok,yes,yes,20,20,68,1,4480834.97,4335919.12,66,1,7.02,7 +stringsearch,schematic,3,ok,yes,yes,20,20,94,0,1399846.67,1254895.38,93,0,5.32,7 +stringsearch,schematic,4,ok,yes,yes,20,20,71,0,16368040.71,16223139.06,70,0,18.89,7 +stringsearch,schematic,5,ok,yes,yes,20,20,67,4,12479000.56,12334093.01,62,4,14.99,7 +stringsearch,schematic,6,ok,yes,yes,20,20,66,1,5833727.52,5688825.69,64,1,7.69,7 +stringsearch,schematic,7,ok,yes,yes,20,20,61,0,10043258.66,9898360.38,60,0,11.79,7 +stringsearch,schematic,8,ok,yes,yes,20,20,81,7,11631230.21,11486295.85,72,7,14.3,7 +stringsearch,schematic,9,ok,yes,yes,20,20,63,0,13399769.29,13254878.94,62,0,16.21,7 +stringsearch,schematic,10,ok,yes,yes,20,20,65,9,11905455.22,11760565.73,55,9,13.63,7 +stringsearch,schematicO3,1,ok,yes,yes,20,20,16,0,211682.59,163505.27,15,0,2.29,4 +stringsearch,schematicO3,2,ok,yes,yes,20,20,21,0,721721.24,673536.68,20,0,3.29,4 +stringsearch,schematicO3,3,ok,yes,yes,20,20,28,0,344957.95,296765.23,27,0,4.3,4 +stringsearch,schematicO3,4,ok,yes,yes,20,20,30,0,6021580.84,5973384.87,29,0,8.43,4 +stringsearch,schematicO3,5,ok,yes,yes,20,20,22,1,3178768.47,3130578.48,20,1,5.72,4 +stringsearch,schematicO3,6,ok,yes,yes,20,20,22,0,1122694.36,1074510.98,21,0,3.0,4 +stringsearch,schematicO3,7,ok,yes,yes,20,20,23,0,3078202.11,3030016.38,22,0,4.81,4 +stringsearch,schematicO3,8,ok,yes,yes,20,20,27,1,2404727.76,2356535.9,24,1,5.0,4 +stringsearch,schematicO3,9,ok,yes,yes,20,20,21,0,3413269.35,3365084.56,20,0,6.2,4 +stringsearch,schematicO3,10,ok,yes,yes,20,20,22,3,3953868.33,3905684.06,18,3,5.59,4 From 0711f82ee2c33c546e716bad705fb139a190c734 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 11:13:30 -0400 Subject: [PATCH 07/14] Charge a 64-byte upper bound for memcpy/memset calls with non-constant size --- .../bb-energy-analyzer/BBEnergyAnalyzer.cpp | 44 ++++++++++++------- scripts/ckpt/compile/common.py | 7 +++ 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/passes/bb-energy-analyzer/BBEnergyAnalyzer.cpp b/passes/bb-energy-analyzer/BBEnergyAnalyzer.cpp index a2c7fc20..e03b290c 100644 --- a/passes/bb-energy-analyzer/BBEnergyAnalyzer.cpp +++ b/passes/bb-energy-analyzer/BBEnergyAnalyzer.cpp @@ -106,6 +106,29 @@ static cl::opt StackAccessPenalty( static cl::opt DumpLineMap("dump-line-map", cl::init(false), cl::desc("Dump resolved address->BB line map and exit")); +static cl::opt UnknownCopySize( + "unknown-copy-size", cl::init(0), + cl::desc("Byte count charged to a memcpy/memset call whose size is not a compile-time " + "constant (0: charge the call's base cost only)")); + +/// Size argument to charge for a `call memcpy/memset`: the immediate found +/// by extractSizeArg, else --unknown-copy-size when set. +static std::optional copySizeArg(const std::vector &instructions, + size_t callIdx) { + const auto &insn = instructions[callIdx]; + std::optional sizeArg = extractSizeArg(instructions, callIdx); + if (sizeArg.has_value()) + return sizeArg; + if (UnknownCopySize > 0) { + PLOGW << "WARNING: non-constant size for " << insn.callTarget << " at 0x" + << Twine::utohexstr(insn.address) << ", charging " << UnknownCopySize << " bytes"; + return UnknownCopySize.getValue(); + } + PLOGW << "WARNING: could not extract constant size for " << insn.callTarget << " at 0x" + << Twine::utohexstr(insn.address) << ", using base cost only"; + return std::nullopt; +} + int main(int argc, char **argv) { cl::ParseCommandLineOptions( argc, argv, @@ -226,15 +249,8 @@ int main(int argc, char **argv) { if (insn.address >= range.start && insn.address < range.end) { if (insn.mnemonic == "call") { std::optional sizeArg; - if (insn.callTarget == "memcpy" || insn.callTarget == "memset") { - sizeArg = extractSizeArg(instructions, i); - if (!sizeArg.has_value()) { - PLOGW << "WARNING: could not extract constant size for " - << insn.callTarget << " at 0x" - << Twine::utohexstr(insn.address) - << ", using base cost only"; - } - } + if (insn.callTarget == "memcpy" || insn.callTarget == "memset") + sizeArg = copySizeArg(instructions, i); bbEnergy += model.getCallEnergy(insn.addrMode, insn.callTarget, sizeArg); } else { @@ -304,14 +320,8 @@ int main(int argc, char **argv) { unmappedCount++; if (insn.mnemonic == "call") { std::optional sizeArg; - if (insn.callTarget == "memcpy" || insn.callTarget == "memset") { - sizeArg = extractSizeArg(instructions, i); - if (!sizeArg.has_value()) { - PLOGW << "WARNING: could not extract constant size for " << insn.callTarget - << " at 0x" << Twine::utohexstr(insn.address) - << ", using base cost only"; - } - } + if (insn.callTarget == "memcpy" || insn.callTarget == "memset") + sizeArg = copySizeArg(instructions, i); unmappedEnergy += model.getCallEnergy(insn.addrMode, insn.callTarget, sizeArg); } else { unmappedEnergy += model.getEnergy(insn.mnemonic, insn.addrMode); diff --git a/scripts/ckpt/compile/common.py b/scripts/ckpt/compile/common.py index 1347775f..87d1a20b 100644 --- a/scripts/ckpt/compile/common.py +++ b/scripts/ckpt/compile/common.py @@ -26,6 +26,12 @@ # instead of halting (see passes/runtime/vcc_wait.c). HALT_MODES = ("bor", "swbor", "wait") +# Bytes charged to a memcpy/memset whose size is not a compile-time constant +# (sha256_update and poly1305_update copy a runtime remainder into their +# block buffer). The largest such buffer among the benchmarks is SHA-256's +# 64-byte block, so this upper bound keeps the energy estimate conservative. +UNKNOWN_COPY_SIZE_BYTES = 64 + def raises_compilation_error(fn): """Convert ToolError from subprocess steps into CompilationError. @@ -343,6 +349,7 @@ def run_assembly_energy( "--bb-mapping", str(bb_mapping), f"--stack-access-penalty={stack_access_penalty}", + f"--unknown-copy-size={UNKNOWN_COPY_SIZE_BYTES}", f"-ckpt-log-level={pass_log_level}", str(energy_obj), ], From 76320a262f77d5d13cb1ade0fba577a39067601e Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 11:44:00 -0400 Subject: [PATCH 08/14] Re-measure sha256 and poly1305 with the memcpy size bound; add board-capacitor continuous reference --- results/chunking_overhead/chunked.csv | 4 +- results/intermittent/continuous/milp.csv | 14 ++++ results/intermittent/continuous/rockclimb.csv | 14 ++++ results/intermittent/continuous/schematic.csv | 14 ++++ .../intermittent/continuous/schematicO3.csv | 14 ++++ results/milp.csv | 12 +-- results/milp_debug.csv | 12 +-- results/rockclimb.csv | 80 +++++++++---------- results/rockclimb_debug.csv | 12 +-- results/schematic.csv | 12 +-- results/schematicO3.csv | 12 +-- results/schematicO3_debug.csv | 12 +-- results/schematic_debug.csv | 12 +-- results/trip_count/milp.csv | 4 +- results/trip_count/milp_debug.csv | 4 +- 15 files changed, 144 insertions(+), 88 deletions(-) create mode 100644 results/intermittent/continuous/milp.csv create mode 100644 results/intermittent/continuous/rockclimb.csv create mode 100644 results/intermittent/continuous/schematic.csv create mode 100644 results/intermittent/continuous/schematicO3.csv diff --git a/results/chunking_overhead/chunked.csv b/results/chunking_overhead/chunked.csv index 4cf50286..5a1e0a4c 100644 --- a/results/chunking_overhead/chunked.csv +++ b/results/chunking_overhead/chunked.csv @@ -8,7 +8,7 @@ activity_recognition,10uF,ok,3247,33693.67,1 bitcount,10uF,ok,1377,4428974.03,1 chacha20,10uF,ok,1575,50808.39,1 sensor_fusion,10uF,ok,970,25134.98,1 -poly1305,10uF,ok,1083,475324.33,1 +poly1305,10uF,ok,807,475284.8,1 cuckoo_filter,10uF,ok,726,42792.49,1 -sha256,10uF,ok,1451,90023.65,1 +sha256,10uF,ok,783,90004.1,1 stringsearch,10uF,ok,699,36199.28,1 diff --git a/results/intermittent/continuous/milp.csv b/results/intermittent/continuous/milp.csv new file mode 100644 index 00000000..c0bd2632 --- /dev/null +++ b/results/intermittent/continuous/milp.csv @@ -0,0 +1,14 @@ +benchmark,capacitor,status,basic_blocks,edges,abstract_cfg_blocks,abstract_cfg_edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,runtime_debug_store_mem_calls,runtime_debug_restore_mem_calls,candidate_globals,milp_allocation_mode,milp_variables,milp_constraints,milp_presolved_variables,milp_presolved_constraints,optimal_solution,distributed_checkpoints_inserted,vm_placed_globals,vm_placed_global_names,milp_solve_time_ms,result,run_attempts +aes-board,board,ok,26,35,9,10,4,228,47936,508,107746.96,24,0,0,3,regional,2475,10033,61,133,yes,49,0,,38,107,1 +crc-board,board,ok,11,15,6,6,3,26,35264,429,30481.74,6,0,0,2,regional,135,486,13,26,yes,0,1,__local_main.result:6,5,20431,1 +rsa-board,board,ok,114,169,54,71,15,1356,101440,429,54501.19,76,0,0,8,regional,10268,42953,1531,4300,yes,26,2,__local_main.qn_arr.i:25;__local_main.qn_arr.i34:21,1129,32,1 +dijkstra-board,board,ok,17,24,9,12,3,43,40560,397,231298.79,91,0,0,5,regional,975,3937,137,307,yes,38,0,,19,33447,1 +qsort-board,board,ok,17,24,12,15,5,22,37952,417,1149893.9,657,0,0,2,regional,324,1264,47,115,yes,7,0,,8,27023,1 +activity_recognition-board,board,ok,16,22,8,9,4,45,40080,524,35864.41,16,0,0,9,regional,533,1986,153,336,yes,5,8,lfsr_state:4;__local_main.features.i.sroa.0:4;__local_main.features.i.sroa.4:4;__local_main.features.i4.sroa.0:4;__local_main.features.i4.sroa.4:4;__local_main.stats.sroa.0.i:4;__local_main.features.i13.sroa.0:4;__local_main.features.i13.sroa.5:4,27,64,1 +bitcount-board,board,ok,61,92,36,51,17,197,65184,428,4547878.03,1034,0,0,2,regional,5750,25057,619,1828,yes,16,0,,84,52382,1 +chacha20-board,board,ok,11,15,4,4,2,23,36656,409,51746.57,11,0,0,3,regional,495,1907,22,45,yes,30,0,,4,79,1 +sensor_fusion-board,board,ok,177,268,4,4,2,19,38160,401,27324.66,17,0,0,2,regional,431,1696,17,34,yes,0,1,g_output:4,4,613,1 +poly1305-board,board,ok,7,9,4,4,2,35,36032,428,493705.38,128,0,0,3,regional,559,2135,31,68,yes,0,0,,4,68,1 +cuckoo_filter-board,board,ok,22,32,7,8,3,19,36784,562,45672.29,20,0,0,3,regional,432,1710,41,87,yes,4,1,__local_main.inserts:7,5,4048,1 +sha256-board,board,ok,32,46,20,26,7,256,68448,531,98749.54,18,0,0,6,regional,6074,25167,606,1603,yes,90,3,g_ctx:2;__local_main.buf.i:2;__local_main.buf.i106:2,118,131,1 +stringsearch-board,board,ok,32,46,18,24,5,280,48608,413,43861.83,63,0,0,4,regional,955,3869,411,1109,yes,7,0,,239,20,1 diff --git a/results/intermittent/continuous/rockclimb.csv b/results/intermittent/continuous/rockclimb.csv new file mode 100644 index 00000000..b61595cc --- /dev/null +++ b/results/intermittent/continuous/rockclimb.csv @@ -0,0 +1,14 @@ +benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,result,run_attempts +aes-board,board,ok,373,552,15,6,32832,0,550975.62,3626,107,1 +crc-board,board,ok,225,309,8,2,24192,0,216194.95,1593,20431,1 +rsa-board,board,ok,206,293,32,2,25040,0,1447878.49,11649,32,1 +dijkstra-board,board,ok,17,24,4,0,22784,0,14830271.82,121836,33447,1 +qsort-board,board,ok,27,36,5,0,23456,0,13831691.2,106371,27023,1 +activity_recognition-board,board,ok,1466,2021,8,19,33744,0,161195.62,1049,64,1 +bitcount-board,board,ok,72,107,14,1,24048,0,155062022.16,1246544,52382,1 +chacha20-board,board,ok,11,14,4,3,26592,0,129703.22,641,79,1 +sensor_fusion-board,board,ok,1458,2165,2,7,31280,0,29768.17,18,613,1 +poly1305-board,board,ok,148,219,4,5,26416,0,790667.08,2177,68,1 +cuckoo_filter-board,board,ok,33,50,5,1,23056,0,423264.77,3149,4048,1 +sha256-board,board,ok,69,97,11,7,28528,0,205243.05,975,131,1 +stringsearch-board,board,ok,41,60,8,1,22864,0,2119550.64,17481,20,1 diff --git a/results/intermittent/continuous/schematic.csv b/results/intermittent/continuous/schematic.csv new file mode 100644 index 00000000..52e49424 --- /dev/null +++ b/results/intermittent/continuous/schematic.csv @@ -0,0 +1,14 @@ +benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,runtime_debug_save_reg_calls,runtime_debug_restore_reg_calls,runtime_debug_store_mem_calls,runtime_debug_restore_mem_calls,result,candidate_globals,enabled_checkpoints,loop_decisions,paths_analyzed,runtime_calls_inserted,run_attempts +activity_recognition-board,board,ok,224,301,6,24,30720,477,109225.35,192,2688,0,192,96,64,95,6,24,1,15,1 +aes-board,board,ok,126,165,11,11,30928,473,1309159.77,1410,19740,0,2177,0,107,272,10,39,1,28,1 +bitcount-board,board,ok,38,52,2,3,29088,488,12916178.17,32008,448112,0,0,0,52382,25,1,6,1,2,1 +chacha20-board,board,ok,36,45,2,3,29616,533,95450.99,64,896,0,0,0,79,49,2,7,1,2,1 +crc-board,board,ok,28,35,3,3,28960,530,319344.63,590,8260,0,0,0,20431,19,1,5,1,3,1 +cuckoo_filter-board,board,ok,79,102,6,14,29712,461,285503.27,236,3304,0,0,0,4048,81,3,12,1,6,1 +dijkstra-board,board,ok,32,41,2,3,28992,449,927277.45,1251,17514,0,0,0,33447,22,1,4,1,2,1 +poly1305-board,board,ok,41,52,4,5,29968,428,691648.29,512,7168,0,512,256,68,123,4,7,1,9,1 +qsort-board,board,ok,21,25,5,1,29424,423,1458861.9,780,10920,0,0,0,27023,14,2,4,1,5,1 +rsa-board,board,ok,252,341,12,62,30880,542,107859.18,137,1918,0,0,0,32,116,10,40,1,12,1 +sensor_fusion-board,board,ok,381,563,1,3633,32544,464,34677.81,25,350,0,50,25,613,28,0,1,1,4,1 +sha256-board,board,ok,65,86,7,4,29920,462,120388.13,83,1162,0,0,0,131,87,7,14,1,7,1 +stringsearch-board,board,ok,49,63,7,2,29184,445,145442.78,306,4284,0,0,0,20,24,5,9,1,7,1 diff --git a/results/intermittent/continuous/schematicO3.csv b/results/intermittent/continuous/schematicO3.csv new file mode 100644 index 00000000..519e8112 --- /dev/null +++ b/results/intermittent/continuous/schematicO3.csv @@ -0,0 +1,14 @@ +benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,runtime_debug_save_reg_calls,runtime_debug_restore_reg_calls,runtime_debug_store_mem_calls,runtime_debug_restore_mem_calls,result,candidate_globals,enabled_checkpoints,loop_decisions,paths_analyzed,runtime_calls_inserted,run_attempts +activity_recognition-board,board,ok,12,16,8,1,29296,445,39998.59,40,560,0,3,3,64,11,6,4,1,14,1 +aes-board,board,ok,20,27,2,1,29568,464,126187.14,125,1750,0,0,0,107,3,2,7,1,2,1 +bitcount-board,board,ok,44,67,17,2,29248,546,5085973.18,1510,21140,0,0,0,52382,2,9,13,1,17,1 +chacha20-board,board,ok,9,12,1,1,29040,440,61651.26,31,434,0,0,0,79,3,1,3,1,1,1 +crc-board,board,ok,7,9,3,1,28816,502,38322.05,7,98,0,0,0,20431,2,2,3,1,3,1 +cuckoo_filter-board,board,ok,18,26,5,1,29056,460,58137.16,33,462,0,0,0,4048,3,3,4,1,5,1 +dijkstra-board,board,ok,14,20,2,1,28928,469,245195.83,135,1890,0,0,0,33447,5,1,3,1,2,1 +poly1305-board,board,ok,5,6,1,0,28976,440,551378.65,255,3570,0,0,0,68,3,1,2,1,1,1 +qsort-board,board,ok,10,14,7,0,29424,460,1419780.36,678,9492,0,0,0,27023,2,4,4,1,7,1 +rsa-board,board,ok,104,155,14,19,30448,471,57767.12,82,1148,0,1,0,32,8,10,25,1,15,1 +sensor_fusion-board,board,ok,174,264,1,505,30256,453,33430.86,49,686,0,0,0,613,2,1,1,1,1,1 +sha256-board,board,ok,29,42,6,1,29536,439,101808.97,33,462,0,0,0,131,6,6,10,1,6,1 +stringsearch-board,board,ok,29,42,4,2,29168,640,48412.61,94,1316,0,0,0,20,4,3,7,1,4,1 diff --git a/results/milp.csv b/results/milp.csv index 0a87cd33..63619ea3 100644 --- a/results/milp.csv +++ b/results/milp.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,18,26,5,5,2,22,38912,479,42975.4,0,0,0,3,regional,222 dijkstra-5uF,5uF,ok,17,24,9,12,3,71,42448,564,223356.91,0,0,0,5,regional,975,3937,124,274,yes,38,0,,22,,1 dijkstra-10uF,10uF,ok,17,24,9,12,3,68,42064,585,220405.07,0,0,0,5,regional,975,3937,137,307,yes,38,0,,21,,1 dijkstra-50uF,50uF,ok,14,20,7,9,2,57,41344,419,216671.73,0,0,0,5,regional,684,2734,113,242,yes,33,0,,22,,1 -poly1305-5uF,5uF,ok,5,6,4,4,2,26,38112,423,481739.07,0,0,0,3,regional,371,1400,31,67,yes,0,0,,3,,1 -poly1305-10uF,10uF,ok,7,9,4,4,2,24,37840,636,478479.22,0,0,0,3,regional,559,2135,31,68,yes,0,0,,3,,1 -poly1305-50uF,50uF,ok,7,9,4,4,2,30,39856,425,476035.05,0,0,0,3,regional,559,2135,31,68,yes,0,0,,4,,1 +poly1305-5uF,5uF,ok,5,6,4,4,2,21,36208,627,481766.86,0,0,0,3,regional,371,1400,31,67,yes,0,0,,4,,1 +poly1305-10uF,10uF,ok,7,9,4,4,2,22,36256,549,478494.99,0,0,0,3,regional,559,2135,31,68,yes,0,0,,4,,1 +poly1305-50uF,50uF,ok,7,9,4,4,2,20,37344,563,476097.55,0,0,0,3,regional,559,2135,31,68,yes,0,0,,5,,1 qsort-5uF,5uF,ok,17,24,12,15,5,22,40208,714,1093205.26,0,0,0,2,regional,324,1264,47,115,yes,7,0,,7,,1 qsort-10uF,10uF,ok,17,24,12,15,5,23,39040,488,1091000.19,0,0,0,2,regional,324,1264,36,75,yes,7,0,,6,,1 qsort-50uF,50uF,ok,13,18,6,6,3,10,37728,418,1031771.51,0,0,0,2,regional,130,470,4,6,yes,0,1,g_checksum_sink:2,1,,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,112,165,22,27,7,513,63248,561,45228.39,0,0,0,8,regional,3979,16 sensor_fusion-5uF,5uF,ok,174,264,174,263,4,78433,538624,576,25948.69,0,0,0,2,regional,24449,108470,21813,74252,yes,11,0,,77378,,1 sensor_fusion-10uF,10uF,ok,177,268,4,4,2,53,40000,707,25451.69,0,0,0,2,regional,431,1696,17,34,yes,0,0,,4,,1 sensor_fusion-50uF,50uF,ok,177,268,4,4,2,52,39936,428,25363.85,0,0,0,2,regional,431,1696,17,34,yes,2,1,__local_main.acc:4,3,,1 -sha256-5uF,5uF,ok,29,42,23,30,4,341,71008,668,95520.79,0,0,0,6,regional,5827,23964,839,2216,yes,99,0,,138,,1 -sha256-10uF,10uF,ok,38,54,14,18,7,216,56848,633,95816.33,0,0,0,6,regional,4083,16818,307,830,yes,79,0,,82,,1 -sha256-50uF,50uF,ok,31,45,8,9,3,111,46128,414,92821.65,0,0,0,6,regional,1995,7770,104,236,yes,18,1,__local_main.lengthPad.i:8,28,,1 +sha256-5uF,5uF,ok,29,42,23,30,4,314,66816,556,95532.36,0,0,0,6,regional,5827,23964,839,2216,yes,99,0,,182,,1 +sha256-10uF,10uF,ok,38,54,14,18,6,165,54480,419,94202.09,0,0,0,6,regional,4083,16818,307,830,yes,79,0,,79,,1 +sha256-50uF,50uF,ok,31,45,8,9,3,76,44704,561,93116.49,0,0,0,6,regional,1995,7770,120,271,yes,18,1,__local_main.lengthPad.i:8,28,,1 stringsearch-5uF,5uF,ok,32,46,18,24,5,288,49728,535,37346.23,0,0,0,4,regional,955,3869,411,1109,yes,6,0,,238,,1 stringsearch-10uF,10uF,ok,32,46,18,24,4,274,49520,556,35667.49,0,0,0,4,regional,955,3869,411,1109,yes,6,0,,225,,1 stringsearch-50uF,50uF,ok,29,42,16,21,2,81,44176,630,32529.13,0,0,0,4,regional,778,3120,344,920,yes,0,2,len:16;findme:16,41,,1 diff --git a/results/milp_debug.csv b/results/milp_debug.csv index e6630fdd..b694cb53 100644 --- a/results/milp_debug.csv +++ b/results/milp_debug.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,18,26,5,5,2,22,39152,394,41850.01,4,0,0,3,regional,22 dijkstra-5uF,5uF,ok,17,24,9,12,3,69,41728,416,224077.74,142,0,0,5,regional,975,3937,124,274,yes,38,0,,20,33447,1 dijkstra-10uF,10uF,ok,17,24,9,12,3,66,42384,405,221043.31,75,0,0,5,regional,975,3937,137,307,yes,38,0,,18,33447,1 dijkstra-50uF,50uF,ok,14,20,7,9,2,51,41408,428,217203.68,32,0,0,5,regional,684,2734,113,242,yes,33,0,,20,33447,1 -poly1305-5uF,5uF,ok,5,6,4,4,2,25,38208,417,481933.62,256,0,0,3,regional,371,1400,31,67,yes,0,0,,3,68,1 -poly1305-10uF,10uF,ok,7,9,4,4,2,25,37888,447,478467.31,86,0,0,3,regional,559,2135,31,68,yes,0,0,,3,68,1 -poly1305-50uF,50uF,ok,7,9,4,4,2,34,39088,473,475949.75,16,0,0,3,regional,559,2135,31,68,yes,0,0,,5,68,1 +poly1305-5uF,5uF,ok,5,6,4,4,2,21,36272,627,481965.51,256,0,0,3,regional,371,1400,31,67,yes,0,0,,3,68,1 +poly1305-10uF,10uF,ok,7,9,4,4,2,23,36208,525,478473.49,86,0,0,3,regional,559,2135,31,68,yes,0,0,,5,68,1 +poly1305-50uF,50uF,ok,7,9,4,4,2,20,37200,704,475951.36,16,0,0,3,regional,559,2135,31,68,yes,0,0,,5,68,1 qsort-5uF,5uF,ok,17,24,12,15,5,29,39712,412,1094077.1,766,0,0,2,regional,324,1264,47,115,yes,7,0,,8,27023,1 qsort-10uF,10uF,ok,17,24,12,15,5,23,38976,435,1091730.91,643,0,0,2,regional,324,1264,36,75,yes,7,0,,6,27023,1 qsort-50uF,50uF,ok,13,18,6,6,3,10,37888,414,1032001.01,129,0,0,2,regional,130,470,4,6,yes,0,1,g_checksum_sink:2,1,27023,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,112,165,22,27,9,493,60656,611,45184.45,5,0,0,8,regional,3979,16 sensor_fusion-5uF,5uF,ok,174,264,174,263,4,71193,535856,500,25669.4,50,0,0,2,regional,24449,108470,21813,74252,yes,11,1,g_output:174,70127,613,1 sensor_fusion-10uF,10uF,ok,177,268,4,4,2,53,40176,535,25595.13,17,0,0,2,regional,431,1696,17,34,yes,0,1,g_output:4,4,613,1 sensor_fusion-50uF,50uF,ok,177,268,4,4,2,50,39712,407,25111.43,2,0,0,2,regional,431,1696,17,34,yes,2,2,__local_main.acc:4;g_output:4,3,613,1 -sha256-5uF,5uF,ok,29,42,23,30,4,347,68512,419,95367.57,34,0,0,6,regional,5827,23964,839,2216,yes,99,0,,144,131,1 -sha256-10uF,10uF,ok,38,54,14,18,6,233,58304,419,94409.9,18,0,0,6,regional,4083,16818,307,830,yes,79,0,,93,131,1 -sha256-50uF,50uF,ok,31,45,8,9,3,111,45728,414,93016.44,5,0,0,6,regional,1995,7770,104,236,yes,18,1,__local_main.lengthPad.i:8,28,131,1 +sha256-5uF,5uF,ok,29,42,23,30,4,326,68320,637,95485.54,34,0,0,6,regional,5827,23964,839,2216,yes,99,0,,199,131,1 +sha256-10uF,10uF,ok,38,54,14,18,6,172,55568,659,94216.31,18,0,0,6,regional,4083,16818,307,830,yes,79,0,,88,131,1 +sha256-50uF,50uF,ok,31,45,8,9,3,62,44992,536,93118.11,7,0,0,6,regional,1995,7770,120,271,yes,18,1,__local_main.lengthPad.i:8,28,131,1 stringsearch-5uF,5uF,ok,32,46,18,24,5,273,50144,406,37489.34,88,0,0,4,regional,955,3869,411,1109,yes,6,0,,224,20,1 stringsearch-10uF,10uF,ok,32,46,18,24,4,253,49584,410,35768.29,59,0,0,4,regional,955,3869,411,1109,yes,6,0,,203,20,1 stringsearch-50uF,50uF,ok,29,42,16,21,2,82,44064,418,32576.96,26,0,0,4,regional,778,3120,344,920,yes,0,2,len:16;findme:16,42,20,1 diff --git a/results/rockclimb.csv b/results/rockclimb.csv index 4a17298d..582d79f1 100644 --- a/results/rockclimb.csv +++ b/results/rockclimb.csv @@ -1,40 +1,40 @@ -benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,result,run_attempts -aes-5uF,5uF,ok,373,552,15,6,32928,0,171503.31,3626,107,1 -aes-10uF,10uF,ok,401,594,17,6,33632,0,170436.57,3620,107,1 -aes-50uF,50uF,ok,401,594,17,6,33728,0,170443.92,3620,107,1 -crc-5uF,5uF,ok,225,309,8,2,24144,0,49373.59,1593,20431,1 -crc-10uF,10uF,ok,225,309,8,2,24128,0,49373.11,1593,20431,1 -crc-50uF,50uF,ok,225,309,8,2,24272,0,49375.21,1593,20431,1 -rsa-5uF,5uF,ok,206,293,32,20,25184,0,212479.67,0,,1 -rsa-10uF,10uF,ok,206,293,32,20,25296,0,212471.59,0,,1 -rsa-50uF,50uF,ok,206,293,32,20,25408,0,212470.66,0,,1 -dijkstra-5uF,5uF,ok,17,24,4,2,23152,0,1925223.43,0,,1 -dijkstra-10uF,10uF,ok,17,24,4,2,23184,0,1925157.29,0,,1 -dijkstra-50uF,50uF,ok,17,24,4,2,23104,0,1925203.61,0,,1 -qsort-5uF,5uF,ok,27,36,5,4,23456,0,2574285.14,0,,1 -qsort-10uF,10uF,ok,27,36,5,4,23632,0,2574171.96,0,,1 -qsort-50uF,50uF,ok,27,36,5,4,23712,0,2574206.08,0,,1 -activity_recognition-5uF,5uF,ok,1277,1760,7,165,33024,0,50102.86,0,,1 -activity_recognition-10uF,10uF,ok,1466,2021,8,200,33872,0,50071.51,0,,1 -activity_recognition-50uF,50uF,ok,1466,2021,8,200,33792,0,50072.25,0,,1 -bitcount-5uF,5uF,ok,72,107,14,15,24448,0,23025646.39,0,,1 -bitcount-10uF,10uF,ok,72,107,14,15,24512,0,23025961.73,0,,1 -bitcount-50uF,50uF,ok,72,107,14,15,24352,0,23025480.57,0,,1 -chacha20-5uF,5uF,ok,17,23,6,2,25952,0,94810.53,2385,79,1 -chacha20-10uF,10uF,ok,31,43,10,3,28976,0,94980.4,2377,79,1 -chacha20-50uF,50uF,ok,31,43,10,3,29328,0,94982.43,2377,79,1 -sensor_fusion-5uF,5uF,ok,491,728,2,19,26240,0,28216.04,0,,1 -sensor_fusion-10uF,10uF,ok,1458,2165,2,67,31536,0,27653.49,0,,1 -sensor_fusion-50uF,50uF,ok,1941,2883,2,87,35440,0,27728.34,0,,1 -poly1305-5uF,5uF,ok,227,338,3,9,28416,0,527125.43,769,68,1 -poly1305-10uF,10uF,ok,220,326,5,6,28272,0,556787.7,2135,68,1 -poly1305-50uF,50uF,ok,290,431,6,8,29648,0,558305.28,2113,68,1 -cuckoo_filter-5uF,5uF,ok,33,50,5,1,22736,0,93347.67,3149,4048,1 -cuckoo_filter-10uF,10uF,ok,33,50,5,1,22896,0,93340.33,3149,4048,1 -cuckoo_filter-50uF,50uF,ok,33,50,5,1,22960,0,93344.68,3149,4048,1 -sha256-5uF,5uF,ok,69,97,11,95,28848,0,101828.39,0,,1 -sha256-10uF,10uF,ok,69,97,11,91,28736,0,101830.2,0,,1 -sha256-50uF,50uF,ok,69,97,11,91,28560,0,101825.36,0,,1 -stringsearch-5uF,5uF,ok,41,60,8,5,23264,0,274234.22,0,,1 -stringsearch-10uF,10uF,ok,41,60,8,4,23152,0,274228.75,0,,1 -stringsearch-50uF,50uF,ok,41,60,8,4,23104,0,274229.54,0,,1 +benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,result,run_attempts +aes-5uF,5uF,ok,373,552,15,6,32928,0,171503.31,3626,107,1 +aes-10uF,10uF,ok,401,594,17,6,33632,0,170436.57,3620,107,1 +aes-50uF,50uF,ok,401,594,17,6,33728,0,170443.92,3620,107,1 +crc-5uF,5uF,ok,225,309,8,2,24144,0,49373.59,1593,20431,1 +crc-10uF,10uF,ok,225,309,8,2,24128,0,49373.11,1593,20431,1 +crc-50uF,50uF,ok,225,309,8,2,24272,0,49375.21,1593,20431,1 +rsa-5uF,5uF,ok,206,293,32,20,25184,0,212479.67,0,,1 +rsa-10uF,10uF,ok,206,293,32,20,25296,0,212471.59,0,,1 +rsa-50uF,50uF,ok,206,293,32,20,25408,0,212470.66,0,,1 +dijkstra-5uF,5uF,ok,17,24,4,2,23152,0,1925223.43,0,,1 +dijkstra-10uF,10uF,ok,17,24,4,2,23184,0,1925157.29,0,,1 +dijkstra-50uF,50uF,ok,17,24,4,2,23104,0,1925203.61,0,,1 +qsort-5uF,5uF,ok,27,36,5,4,23456,0,2574285.14,0,,1 +qsort-10uF,10uF,ok,27,36,5,4,23632,0,2574171.96,0,,1 +qsort-50uF,50uF,ok,27,36,5,4,23712,0,2574206.08,0,,1 +activity_recognition-5uF,5uF,ok,1277,1760,7,165,33024,0,50102.86,0,,1 +activity_recognition-10uF,10uF,ok,1466,2021,8,200,33872,0,50071.51,0,,1 +activity_recognition-50uF,50uF,ok,1466,2021,8,200,33792,0,50072.25,0,,1 +bitcount-5uF,5uF,ok,72,107,14,15,24448,0,23025646.39,0,,1 +bitcount-10uF,10uF,ok,72,107,14,15,24512,0,23025961.73,0,,1 +bitcount-50uF,50uF,ok,72,107,14,15,24352,0,23025480.57,0,,1 +chacha20-5uF,5uF,ok,17,23,6,2,25952,0,94810.53,2385,79,1 +chacha20-10uF,10uF,ok,31,43,10,3,28976,0,94980.4,2377,79,1 +chacha20-50uF,50uF,ok,31,43,10,3,29328,0,94982.43,2377,79,1 +sensor_fusion-5uF,5uF,ok,491,728,2,19,26240,0,28216.04,0,,1 +sensor_fusion-10uF,10uF,ok,1458,2165,2,67,31536,0,27653.49,0,,1 +sensor_fusion-50uF,50uF,ok,1941,2883,2,87,35440,0,27728.34,0,,1 +poly1305-5uF,5uF,ok,227,338,3,10,28720,0,526294.37,0,,1 +poly1305-10uF,10uF,ok,148,219,4,5,26400,0,559296.7,0,,1 +poly1305-50uF,50uF,ok,290,431,6,8,29696,0,557920.47,0,,1 +cuckoo_filter-5uF,5uF,ok,33,50,5,1,22736,0,93347.67,3149,4048,1 +cuckoo_filter-10uF,10uF,ok,33,50,5,1,22896,0,93340.33,3149,4048,1 +cuckoo_filter-50uF,50uF,ok,33,50,5,1,22960,0,93344.68,3149,4048,1 +sha256-5uF,5uF,ok,69,97,11,7,28576,0,101809.62,0,,1 +sha256-10uF,10uF,ok,69,97,11,7,28464,0,101805.23,0,,1 +sha256-50uF,50uF,ok,69,97,11,7,28320,0,101806.53,0,,1 +stringsearch-5uF,5uF,ok,41,60,8,5,23264,0,274234.22,0,,1 +stringsearch-10uF,10uF,ok,41,60,8,4,23152,0,274228.75,0,,1 +stringsearch-50uF,50uF,ok,41,60,8,4,23104,0,274229.54,0,,1 diff --git a/results/rockclimb_debug.csv b/results/rockclimb_debug.csv index a4d7b36c..a202dae5 100644 --- a/results/rockclimb_debug.csv +++ b/results/rockclimb_debug.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,33,50,5,5,23168,0,93276.13,3149,4048,1 dijkstra-5uF,5uF,ok,17,24,4,2,23040,0,2080911.95,121836,33447,1 dijkstra-10uF,10uF,ok,17,24,4,2,23072,0,2080977.61,121836,33447,1 dijkstra-50uF,50uF,ok,17,24,4,2,23072,0,2080951.66,121836,33447,1 -poly1305-5uF,5uF,ok,227,338,3,130,28896,0,526714.65,769,68,1 -poly1305-10uF,10uF,ok,148,219,4,63,26720,0,559221.21,2177,68,1 -poly1305-50uF,50uF,ok,290,431,6,105,30128,0,557910.58,2113,68,1 +poly1305-5uF,5uF,ok,227,338,3,9,28640,0,526892.03,769,68,1 +poly1305-10uF,10uF,ok,148,219,4,5,26448,0,559418.58,2177,68,1 +poly1305-50uF,50uF,ok,290,431,6,8,29760,0,558066.0,2113,68,1 qsort-5uF,5uF,ok,27,36,5,4,23552,0,2713456.19,106371,27023,1 qsort-10uF,10uF,ok,27,36,5,4,23664,0,2713495.6,106371,27023,1 qsort-50uF,50uF,ok,27,36,5,4,23776,0,2713502.8,106371,27023,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,206,293,32,20,25200,0,229252.75,11649,32,1 sensor_fusion-5uF,5uF,ok,491,728,2,20,26240,0,28283.48,51,613,1 sensor_fusion-10uF,10uF,ok,1458,2165,2,69,32112,0,27672.58,18,613,1 sensor_fusion-50uF,50uF,ok,1941,2883,2,90,35936,0,27739.25,14,613,1 -sha256-5uF,5uF,ok,69,97,11,92,28816,0,103211.88,975,131,1 -sha256-10uF,10uF,ok,69,97,11,93,28688,0,103207.74,975,131,1 -sha256-50uF,50uF,ok,69,97,11,93,28896,0,103203.09,975,131,1 +sha256-5uF,5uF,ok,69,97,11,7,28480,0,103235.89,975,131,1 +sha256-10uF,10uF,ok,69,97,11,7,28352,0,103233.83,975,131,1 +sha256-50uF,50uF,ok,69,97,11,7,28432,0,103242.28,975,131,1 stringsearch-5uF,5uF,ok,41,60,8,4,23120,0,295675.38,17481,20,1 stringsearch-10uF,10uF,ok,41,60,8,4,23024,0,295659.15,17481,20,1 stringsearch-50uF,50uF,ok,41,60,8,4,23184,0,295686.27,17481,20,1 diff --git a/results/schematic.csv b/results/schematic.csv index daf8b6d2..dbcc1876 100644 --- a/results/schematic.csv +++ b/results/schematic.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,79,102,5,106,31952,593,248696.43,0,0,0,0,0,,81,3,12,1 dijkstra-5uF,5uF,ok,32,41,2,28,31200,617,842864.72,0,0,0,0,0,,22,2,4,1,2,1 dijkstra-10uF,10uF,ok,32,41,2,28,31216,617,787650.73,0,0,0,0,0,,22,1,4,1,2,1 dijkstra-50uF,50uF,ok,32,41,2,25,31200,617,774202.01,0,0,0,0,0,,22,1,4,1,2,1 -poly1305-5uF,5uF,ok,41,52,8,34,32240,552,650459.73,0,0,0,0,0,,123,5,7,1,16,1 -poly1305-10uF,10uF,ok,41,52,4,35,32272,552,635728.03,0,0,0,0,0,,123,4,7,1,9,1 -poly1305-50uF,50uF,ok,41,52,4,34,32240,552,635722.31,0,0,0,0,0,,123,4,7,1,9,1 +poly1305-5uF,5uF,ok,41,52,8,4,30144,620,650648.98,0,0,0,0,0,,123,5,7,1,16,1 +poly1305-10uF,10uF,ok,41,52,4,4,30224,620,635886.58,0,0,0,0,0,,123,4,7,1,9,1 +poly1305-50uF,50uF,ok,41,52,4,7,30224,620,635893.51,0,0,0,0,0,,123,4,7,1,9,1 qsort-5uF,5uF,ok,21,25,5,4,31552,610,1385419.49,0,0,0,0,0,,14,2,4,1,5,1 qsort-10uF,10uF,ok,21,25,5,4,31568,610,1380736.76,0,0,0,0,0,,14,2,4,1,5,1 qsort-50uF,50uF,ok,21,25,2,4,31664,610,1202516.39,0,0,0,0,0,,14,2,4,1,2,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,252,341,9,1150,33472,611,92260.06,0,0,0,0,0,,116,5,40,1,9,1 sensor_fusion-5uF,5uF,ok,381,563,1,22057,34448,641,32052.67,0,0,0,0,0,,28,1,1,1,4,1 sensor_fusion-10uF,10uF,ok,381,563,1,22138,34400,641,31566.48,0,0,0,0,0,,28,0,1,1,4,1 sensor_fusion-50uF,50uF,ok,381,563,1,22304,34480,641,31579.4,0,0,0,0,0,,28,0,1,1,4,1 -sha256-5uF,5uF,ok,65,86,10,31,32096,577,118577.83,0,0,0,0,0,,87,7,14,1,10,1 -sha256-10uF,10uF,ok,65,86,4,34,32112,577,110875.73,0,0,0,0,0,,87,4,14,1,4,1 -sha256-50uF,50uF,ok,65,86,4,50,32176,577,110898.73,0,0,0,0,0,,87,1,14,1,4,1 +sha256-5uF,5uF,ok,65,86,10,4,29856,634,118601.1,0,0,0,0,0,,87,7,14,1,10,1 +sha256-10uF,10uF,ok,65,86,4,4,29840,634,110907.58,0,0,0,0,0,,87,4,14,1,4,1 +sha256-50uF,50uF,ok,65,86,4,6,29920,634,110921.88,0,0,0,0,0,,87,1,14,1,4,1 stringsearch-5uF,5uF,ok,49,63,10,13,31488,525,125900.05,0,0,0,0,0,,24,6,9,1,10,1 stringsearch-10uF,10uF,ok,49,63,6,14,31376,525,89453.44,0,0,0,0,0,,24,5,9,1,6,1 stringsearch-50uF,50uF,ok,49,63,2,33,31344,525,82614.76,0,0,0,0,0,,24,2,9,1,2,1 diff --git a/results/schematicO3.csv b/results/schematicO3.csv index df38329c..5874f6ab 100644 --- a/results/schematicO3.csv +++ b/results/schematicO3.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,18,26,2,6,31232,499,45890.0,0,0,0,0,0,,3,2,4,1,2,1 dijkstra-5uF,5uF,ok,14,20,2,6,31216,543,232185.04,0,0,0,0,0,,5,1,3,1,2,1 dijkstra-10uF,10uF,ok,14,20,2,6,31232,543,230271.61,0,0,0,0,0,,5,1,3,1,2,1 dijkstra-50uF,50uF,ok,14,20,1,6,31232,543,220562.79,0,0,0,0,0,,5,1,3,1,1,1 -poly1305-5uF,5uF,ok,5,6,2,2,31184,511,539379.08,0,0,0,0,0,,3,1,2,1,2,1 -poly1305-10uF,10uF,ok,5,6,1,2,31200,511,523846.08,0,0,0,0,0,,3,1,2,1,1,1 -poly1305-50uF,50uF,ok,5,6,1,2,31152,511,523257.02,0,0,0,0,0,,3,0,2,1,1,1 +poly1305-5uF,5uF,ok,5,6,2,0,28976,607,539498.34,0,0,0,0,0,,3,1,2,1,2,1 +poly1305-10uF,10uF,ok,5,6,1,0,28944,607,523964.92,0,0,0,0,0,,3,1,2,1,1,1 +poly1305-50uF,50uF,ok,5,6,1,0,28992,607,523383.13,0,0,0,0,0,,3,0,2,1,1,1 qsort-5uF,5uF,ok,10,14,6,2,31600,525,1348451.61,0,0,0,0,0,,2,3,4,1,6,1 qsort-10uF,10uF,ok,10,14,6,2,31664,525,1346075.17,0,0,0,0,0,,2,3,4,1,6,1 qsort-50uF,50uF,ok,10,14,2,2,31536,525,1081608.73,0,0,0,0,0,,2,2,4,1,2,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,106,157,7,389,32192,565,47066.33,0,0,0,0,0,,8,5,23,1,7,1 sensor_fusion-5uF,5uF,ok,174,264,1,1359,32320,698,28152.18,0,0,0,0,0,,2,1,1,1,1,1 sensor_fusion-10uF,10uF,ok,174,264,1,3509,32368,698,28150.94,0,0,0,0,0,,2,1,1,1,1,1 sensor_fusion-50uF,50uF,ok,174,264,1,3504,32448,698,27530.36,0,0,0,0,0,,2,0,1,1,1,1 -sha256-5uF,5uF,ok,29,42,11,6,31728,552,99270.58,0,0,0,0,0,,6,9,10,1,11,1 -sha256-10uF,10uF,ok,29,42,6,7,31808,552,98239.72,0,0,0,0,0,,6,6,10,1,6,1 -sha256-50uF,50uF,ok,29,42,1,9,31728,552,96886.61,0,0,0,0,0,,6,1,10,1,1,1 +sha256-5uF,5uF,ok,29,42,11,1,29504,687,99290.6,0,0,0,0,0,,6,9,10,1,11,1 +sha256-10uF,10uF,ok,29,42,6,1,29520,687,98262.2,0,0,0,0,0,,6,6,10,1,6,1 +sha256-50uF,50uF,ok,29,42,1,1,29440,687,96904.3,0,0,0,0,0,,6,1,10,1,1,1 stringsearch-5uF,5uF,ok,29,42,4,13,31360,504,38638.52,0,0,0,0,0,,4,3,7,1,4,1 stringsearch-10uF,10uF,ok,29,42,4,13,31296,504,38236.42,0,0,0,0,0,,4,3,7,1,4,1 stringsearch-50uF,50uF,ok,29,42,4,13,31344,504,38037.65,0,0,0,0,0,,4,3,7,1,4,1 diff --git a/results/schematicO3_debug.csv b/results/schematicO3_debug.csv index 58a178e1..77fe7d89 100644 --- a/results/schematicO3_debug.csv +++ b/results/schematicO3_debug.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,18,26,2,7,31184,604,45901.25,7,98,98,0,0,4048,3,2,4,1 dijkstra-5uF,5uF,ok,14,20,2,6,31184,509,232635.64,230,3220,3220,0,0,33447,5,1,3,1,2,1 dijkstra-10uF,10uF,ok,14,20,2,7,31248,509,230315.5,114,1596,1596,0,0,33447,5,1,3,1,2,1 dijkstra-50uF,50uF,ok,14,20,1,6,31168,509,220581.33,31,434,434,0,0,33447,5,1,3,1,1,1 -poly1305-5uF,5uF,ok,5,6,2,2,31104,614,538854.49,511,7154,7154,0,0,68,3,1,2,1,2,1 -poly1305-10uF,10uF,ok,5,6,1,2,31152,614,525112.44,255,3570,3570,0,0,68,3,1,2,1,1,1 -poly1305-50uF,50uF,ok,5,6,1,2,31168,614,523347.49,28,392,392,0,0,68,3,0,2,1,1,1 +poly1305-5uF,5uF,ok,5,6,2,0,28944,511,538992.92,511,7154,7154,0,0,68,3,1,2,1,2,1 +poly1305-10uF,10uF,ok,5,6,1,0,28928,511,525284.1,255,3570,3570,0,0,68,3,1,2,1,1,1 +poly1305-50uF,50uF,ok,5,6,1,0,28928,511,523428.05,28,392,392,0,0,68,3,0,2,1,1,1 qsort-5uF,5uF,ok,10,14,6,2,31488,530,1351317.95,797,11158,11158,0,0,27023,2,3,4,1,6,1 qsort-10uF,10uF,ok,10,14,6,2,31584,530,1348434.63,648,9072,9072,0,0,27023,2,3,4,1,6,1 qsort-50uF,50uF,ok,10,14,2,2,31632,530,1083884.04,639,8946,8946,0,0,27023,2,2,4,1,2,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,106,157,7,390,32064,524,47204.98,8,112,112,0,0,32,8,5,23,1,7,1 sensor_fusion-5uF,5uF,ok,174,264,1,1357,32336,564,27981.45,49,686,686,0,0,613,2,1,1,1,1,1 sensor_fusion-10uF,10uF,ok,174,264,1,3492,32384,564,27981.98,49,686,686,0,0,613,2,1,1,1,1,1 sensor_fusion-50uF,50uF,ok,174,264,1,3507,32288,564,27460.34,3,42,42,0,0,613,2,0,1,1,1,1 -sha256-5uF,5uF,ok,29,42,11,6,31744,553,99500.67,67,938,938,0,0,131,6,9,10,1,11,1 -sha256-10uF,10uF,ok,29,42,6,7,31760,553,98542.46,33,462,462,0,0,131,6,6,10,1,6,1 -sha256-50uF,50uF,ok,29,42,1,9,31712,553,96924.06,15,210,210,0,0,131,6,1,10,1,1,1 +sha256-5uF,5uF,ok,29,42,11,2,29552,548,99516.53,67,938,938,0,0,131,6,9,10,1,11,1 +sha256-10uF,10uF,ok,29,42,6,1,29536,548,98566.18,33,462,462,0,0,131,6,6,10,1,6,1 +sha256-50uF,50uF,ok,29,42,1,1,29472,548,96943.24,15,210,210,0,0,131,6,1,10,1,1,1 stringsearch-5uF,5uF,ok,29,42,4,13,31360,505,39000.89,113,1582,1582,0,0,20,4,3,7,1,4,1 stringsearch-10uF,10uF,ok,29,42,4,14,31296,505,38517.29,89,1246,1246,0,0,20,4,3,7,1,4,1 stringsearch-50uF,50uF,ok,29,42,4,13,31376,505,38279.34,77,1078,1078,0,0,20,4,3,7,1,4,1 diff --git a/results/schematic_debug.csv b/results/schematic_debug.csv index 3b0d599c..da874da0 100644 --- a/results/schematic_debug.csv +++ b/results/schematic_debug.csv @@ -20,9 +20,9 @@ cuckoo_filter-50uF,50uF,ok,79,102,5,106,31888,542,249690.63,40,560,560,0,0,4048, dijkstra-5uF,5uF,ok,32,41,2,28,31216,551,861320.64,3723,52122,52122,0,0,33447,22,2,4,1,2,1 dijkstra-10uF,10uF,ok,32,41,2,28,31248,551,812641.47,947,13258,13258,0,0,33447,22,1,4,1,2,1 dijkstra-50uF,50uF,ok,32,41,2,25,31200,551,796218.6,119,1666,1666,0,0,33447,22,1,4,1,2,1 -poly1305-5uF,5uF,ok,41,52,8,34,32288,522,657842.34,1025,14350,14350,1024,256,68,123,5,7,1,16,1 -poly1305-10uF,10uF,ok,41,52,4,34,32304,522,638835.9,512,7168,7168,512,256,68,123,4,7,1,9,1 -poly1305-50uF,50uF,ok,41,52,4,33,32192,522,638857.01,512,7168,7168,512,256,68,123,4,7,1,9,1 +poly1305-5uF,5uF,ok,41,52,8,4,29984,483,657980.26,1025,14350,14350,1024,256,68,123,5,7,1,16,1 +poly1305-10uF,10uF,ok,41,52,4,4,30048,483,639019.0,512,7168,7168,512,256,68,123,4,7,1,9,1 +poly1305-50uF,50uF,ok,41,52,4,4,29920,483,639004.31,512,7168,7168,512,256,68,123,4,7,1,9,1 qsort-5uF,5uF,ok,21,25,5,4,31648,569,1406306.13,1026,14364,14364,0,0,27023,14,2,4,1,5,1 qsort-10uF,10uF,ok,21,25,5,5,31616,569,1400735.82,742,10388,10388,0,0,27023,14,2,4,1,5,1 qsort-50uF,50uF,ok,21,25,2,4,31552,569,1188172.33,640,8960,8960,0,0,27023,14,2,4,1,2,1 @@ -32,9 +32,9 @@ rsa-50uF,50uF,ok,252,341,9,1151,33488,613,93204.1,40,560,560,0,0,32,116,5,40,1,9 sensor_fusion-5uF,5uF,ok,381,563,1,22102,34432,738,32284.23,50,700,700,100,50,613,28,1,1,1,4,1 sensor_fusion-10uF,10uF,ok,381,563,1,22097,34480,738,31684.89,16,224,224,32,16,613,28,0,1,1,4,1 sensor_fusion-50uF,50uF,ok,381,563,1,21994,34432,738,31498.4,1,14,14,2,1,613,28,0,1,1,4,1 -sha256-5uF,5uF,ok,65,86,10,30,32144,743,119083.01,116,1624,1624,0,0,131,87,7,14,1,10,1 -sha256-10uF,10uF,ok,65,86,4,36,32192,743,111262.07,50,700,700,0,0,131,87,4,14,1,4,1 -sha256-50uF,50uF,ok,65,86,4,51,32256,743,110697.39,32,448,448,0,0,131,87,1,14,1,4,1 +sha256-5uF,5uF,ok,65,86,10,4,29824,507,119106.87,116,1624,1624,0,0,131,87,7,14,1,10,1 +sha256-10uF,10uF,ok,65,86,4,4,29808,507,111273.47,50,700,700,0,0,131,87,4,14,1,4,1 +sha256-50uF,50uF,ok,65,86,4,6,30048,507,110721.15,32,448,448,0,0,131,87,1,14,1,4,1 stringsearch-5uF,5uF,ok,49,63,10,13,31360,534,127624.33,362,5068,5068,0,0,20,24,6,9,1,10,1 stringsearch-10uF,10uF,ok,49,63,6,14,31392,534,89951.02,280,3920,3920,0,0,20,24,5,9,1,6,1 stringsearch-50uF,50uF,ok,49,63,2,34,31312,534,83329.94,120,1680,1680,0,0,20,24,2,9,1,2,1 diff --git a/results/trip_count/milp.csv b/results/trip_count/milp.csv index c5024570..5dc67c0a 100644 --- a/results/trip_count/milp.csv +++ b/results/trip_count/milp.csv @@ -6,9 +6,9 @@ chacha20-10uF,10uF,ok,11,15,4,4,2,26,37632,536,50559.28,8,0,0,3,regional,495,190 crc-10uF,10uF,ok,9,12,6,6,3,10,35936,423,29828.77,5,0,0,2,regional,117,414,18,37,yes,0,1,__local_main.result:6,3,20431,1 cuckoo_filter-10uF,10uF,ok,23,33,15,20,4,203,47840,536,72434.9,2052,0,0,3,regional,1009,4162,344,951,yes,12,0,,166,4048,1 dijkstra-10uF,10uF,ok,17,24,11,15,7,138,44768,429,1126514.82,3787,0,0,5,regional,1229,4972,223,550,yes,48,1,__local_main.nodes.i:5,99,33447,1 -poly1305-10uF,10uF,ok,7,9,4,4,2,19,36880,472,478591.92,86,0,0,3,regional,559,2135,31,68,yes,0,0,,4,68,1 +poly1305-10uF,10uF,ok,7,9,4,4,2,21,35952,417,478570.93,86,0,0,3,regional,559,2135,31,68,yes,0,0,,5,68,1 qsort-10uF,10uF,ok,17,24,12,15,5,18,37776,421,1091951.53,643,0,0,2,regional,324,1264,36,75,yes,7,0,,6,27023,1 rsa-10uF,10uF,ok,144,209,86,119,43,4652,146896,658,74903.7,324,0,0,8,regional,21292,91133,3214,9905,yes,59,3,g_product:54;__local_main.qn_arr.i:11;__local_main.qn_arr.i34:8,4182,32,1 sensor_fusion-10uF,10uF,ok,177,268,4,4,2,18,38944,419,25604.81,17,0,0,2,regional,431,1696,17,34,yes,0,1,g_output:4,5,613,1 -sha256-10uF,10uF,ok,38,54,14,18,6,164,58848,399,94440.73,18,0,0,6,regional,4083,16818,307,830,yes,79,0,,89,131,1 +sha256-10uF,10uF,ok,38,54,14,18,6,191,59344,476,94239.06,18,0,0,6,regional,4083,16818,307,830,yes,79,0,,98,131,1 stringsearch-10uF,10uF,ok,41,58,31,43,12,545,61632,556,82545.06,2270,0,0,4,regional,2200,9143,1070,3127,yes,21,3,__local_main.total_found:7;len:7;findme:7,473,20,1 diff --git a/results/trip_count/milp_debug.csv b/results/trip_count/milp_debug.csv index 4f567f34..bf5215eb 100644 --- a/results/trip_count/milp_debug.csv +++ b/results/trip_count/milp_debug.csv @@ -6,9 +6,9 @@ chacha20-10uF,10uF,ok,11,15,4,4,2,20,37760,395,50568.56,8,0,0,3,regional,495,190 crc-10uF,10uF,ok,9,12,6,6,3,10,35888,404,29834.06,5,0,0,2,regional,117,414,18,37,yes,0,1,__local_main.result:6,2,20431,1 cuckoo_filter-10uF,10uF,ok,23,33,15,20,4,202,47184,414,72446.45,2052,0,0,3,regional,1009,4162,344,951,yes,12,0,,166,4048,1 dijkstra-10uF,10uF,ok,17,24,11,15,7,139,45344,405,1126739.77,3787,0,0,5,regional,1229,4972,223,550,yes,48,1,__local_main.nodes.i:5,100,33447,1 -poly1305-10uF,10uF,ok,7,9,4,4,2,14,36752,374,478678.17,86,0,0,3,regional,559,2135,31,68,yes,0,0,,3,68,1 +poly1305-10uF,10uF,ok,7,9,4,4,2,19,35872,391,478551.72,86,0,0,3,regional,559,2135,31,68,yes,0,0,,4,68,1 qsort-10uF,10uF,ok,17,24,12,15,5,18,38208,398,1092206.94,643,0,0,2,regional,324,1264,36,75,yes,7,0,,6,27023,1 rsa-10uF,10uF,ok,144,209,86,119,43,4645,146048,407,74921.11,324,0,0,8,regional,21292,91133,3214,9905,yes,59,3,g_product:54;__local_main.qn_arr.i:11;__local_main.qn_arr.i34:8,4174,32,1 sensor_fusion-10uF,10uF,ok,177,268,4,4,2,18,38928,418,25607.51,17,0,0,2,regional,431,1696,17,34,yes,0,1,g_output:4,5,613,1 -sha256-10uF,10uF,ok,38,54,14,18,6,166,55520,409,94456.81,18,0,0,6,regional,4083,16818,307,830,yes,79,0,,85,131,1 +sha256-10uF,10uF,ok,38,54,14,18,6,170,61120,402,94229.83,18,0,0,6,regional,4083,16818,307,830,yes,79,0,,90,131,1 stringsearch-10uF,10uF,ok,41,58,31,43,12,543,62832,409,82554.74,2270,0,0,4,regional,2200,9143,1070,3127,yes,21,3,__local_main.total_found:7;len:7;findme:7,473,20,1 From bda1e90099d05bca7b784945f372c30b370e0c5b Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 12:49:29 -0400 Subject: [PATCH 09/14] Add -D option to bench commands for extra benchmark defines --- scripts/ckpt/bench/all.py | 4 ++++ scripts/ckpt/bench/milp.py | 2 ++ scripts/ckpt/bench/rockclimb.py | 2 ++ scripts/ckpt/bench/schematic.py | 4 +++- scripts/ckpt/bench/uninstrumented.py | 2 ++ scripts/ckpt/cli.py | 36 ++++++++++++++++++++++++++-- 6 files changed, 47 insertions(+), 3 deletions(-) diff --git a/scripts/ckpt/bench/all.py b/scripts/ckpt/bench/all.py index 643eb6ce..ff98bb97 100644 --- a/scripts/ckpt/bench/all.py +++ b/scripts/ckpt/bench/all.py @@ -137,6 +137,7 @@ def _run_step( milp_gap=opts.milp_gap, pass_log_level=opts.pass_log_level, accumulate_keys_file=None, + extra_defines=[], ) elif step.algorithm == "rockclimb": from .rockclimb import run_rockclimb_benchmarks @@ -155,6 +156,7 @@ def _run_step( max_unroll=opts.max_unroll, pass_log_level=opts.pass_log_level, accumulate_keys_file=None, + extra_defines=[], ) elif step.algorithm in ("schematic", "schematicO3"): from ..compile.schematic import CLANG_OPT_LEVEL_BY_LABEL @@ -177,6 +179,7 @@ def _run_step( pass_log_level=opts.pass_log_level, algorithm_label=step.algorithm, accumulate_keys_file=None, + extra_defines=[], ) elif step.algorithm in ("uninstrumented", "uninstrumentedO0"): from ..compile.uninstrumented import OPT_LEVELS_BY_LABEL @@ -193,6 +196,7 @@ def _run_step( algorithm_label=step.algorithm, clang_opt_level=clang_opt_level, opt_level=opt_level, + extra_defines=[], ) elif step.algorithm == "chunked": from ..compile.chunked import OPT_LEVELS diff --git a/scripts/ckpt/bench/milp.py b/scripts/ckpt/bench/milp.py index 47d26996..dca8b672 100644 --- a/scripts/ckpt/bench/milp.py +++ b/scripts/ckpt/bench/milp.py @@ -134,6 +134,7 @@ def run_milp_benchmarks( milp_gap: float, pass_log_level: str, accumulate_keys_file: Path | None, + extra_defines: list[str], ) -> None: """Run MILP checkpoint insertion across all benchmarks and capacitor sizes. @@ -200,6 +201,7 @@ def compile_fn(bench_path: Path, cap: CapacitorConfig) -> CompileResult: cpu_freq=cpu_freq, opt_level=3, clang_opt_level=3, + extra_defines=list(extra_defines), milp_gap=milp_gap, milp_log_file="", coarse_allocation=coarse_allocation, diff --git a/scripts/ckpt/bench/rockclimb.py b/scripts/ckpt/bench/rockclimb.py index 9d3c59bf..51acb8a5 100644 --- a/scripts/ckpt/bench/rockclimb.py +++ b/scripts/ckpt/bench/rockclimb.py @@ -91,6 +91,7 @@ def run_rockclimb_benchmarks( max_unroll: int | None, pass_log_level: str, accumulate_keys_file: Path | None, + extra_defines: list[str], ) -> None: """Run RockClimb checkpoint insertion across all benchmarks and capacitor sizes. @@ -144,6 +145,7 @@ def compile_fn(bench_path: Path, cap: CapacitorConfig) -> CompileResult: halt_mode=halt_mode, cpu_freq=cpu_freq, clang_opt_level=3, + extra_defines=list(extra_defines), opt_level=3, max_unroll=max_unroll, save_temps=False, diff --git a/scripts/ckpt/bench/schematic.py b/scripts/ckpt/bench/schematic.py index a1278f9a..06957aa1 100644 --- a/scripts/ckpt/bench/schematic.py +++ b/scripts/ckpt/bench/schematic.py @@ -197,6 +197,7 @@ def run_schematic_benchmarks( pass_log_level: str, algorithm_label: str, accumulate_keys_file: Path | None, + extra_defines: list[str], ) -> None: """Run SCHEMATIC checkpoint insertion across all benchmarks and capacitor sizes. @@ -267,7 +268,7 @@ def compile_fn(bench_path: Path, cap: CapacitorConfig) -> CompileResult: cpu_freq=cpu_freq, clang_opt_level=clang_opt_level, pass_log_level=pass_log_level, - extra_defines=[], + extra_defines=list(extra_defines), ) trace_json, profiling_ms = trace_cache[bench_name] @@ -290,6 +291,7 @@ def compile_fn(bench_path: Path, cap: CapacitorConfig) -> CompileResult: cpu_freq=cpu_freq, opt_level=3, clang_opt_level=clang_opt_level, + extra_defines=list(extra_defines), save_temps=False, trace_file=trace_json, linker_script=None, diff --git a/scripts/ckpt/bench/uninstrumented.py b/scripts/ckpt/bench/uninstrumented.py index 1224b9cd..1ed87ec8 100644 --- a/scripts/ckpt/bench/uninstrumented.py +++ b/scripts/ckpt/bench/uninstrumented.py @@ -46,6 +46,7 @@ def run_uninstrumented_benchmarks( algorithm_label: str, clang_opt_level: int, opt_level: int, + extra_defines: list[str], ) -> None: """Compile and measure uninstrumented baselines for all benchmarks. @@ -85,6 +86,7 @@ def compile_fn(bench_path: Path, _cap: CapacitorConfig | None) -> Path | None: opt_level=opt_level, clang_opt_level=clang_opt_level, link=True, + extra_defines=list(extra_defines), ), ) return result.elf_file diff --git a/scripts/ckpt/cli.py b/scripts/ckpt/cli.py index b55aa5dd..54cebaf8 100644 --- a/scripts/ckpt/cli.py +++ b/scripts/ckpt/cli.py @@ -135,6 +135,13 @@ def _cap_callback( _extra_includes_option = click.option( "-I", "extra_includes", multiple=True, help="Extra include dirs." ) +_bench_define_option = click.option( + "-D", + "defines", + multiple=True, + help="Extra preprocessor defines for the benchmark sources (e.g. INTERMITTENT_BUILD, " + "which shrinks dijkstra, qsort, and bitcount the way `ckpt intermittent` does).", +) _estimator_mode_option = click.option( "--estimator-mode", type=click.Choice(["assembly", "ir"]), @@ -991,6 +998,7 @@ def bench() -> None: @_milp_gap_option @_accumulate_keys_option @_saleae_timeout_option +@_bench_define_option @click.pass_context def bench_milp_cmd( ctx: click.Context, @@ -1007,6 +1015,7 @@ def bench_milp_cmd( milp_gap: float, accumulate_keys: str | None, timeout: float, + defines: tuple[str, ...], ) -> None: """Run MILP benchmarks across programs and capacitor sizes.""" from .bench.milp import run_milp_benchmarks @@ -1028,6 +1037,7 @@ def bench_milp_cmd( milp_gap=milp_gap, pass_log_level=ctx.obj["pass_log_level"], accumulate_keys_file=_path_or_none(accumulate_keys), + extra_defines=list(defines), ) @@ -1042,6 +1052,7 @@ def bench_milp_cmd( @_max_unroll_option @_accumulate_keys_option @_saleae_timeout_option +@_bench_define_option @click.pass_context def bench_rockclimb_cmd( ctx: click.Context, @@ -1055,6 +1066,7 @@ def bench_rockclimb_cmd( max_unroll: int, accumulate_keys: str | None, timeout: float, + defines: tuple[str, ...], ) -> None: """Run RockClimb benchmarks across programs and capacitor sizes.""" from .bench.rockclimb import run_rockclimb_benchmarks @@ -1073,6 +1085,7 @@ def bench_rockclimb_cmd( max_unroll=max_unroll, pass_log_level=ctx.obj["pass_log_level"], accumulate_keys_file=_path_or_none(accumulate_keys), + extra_defines=list(defines), ) @@ -1087,6 +1100,7 @@ def bench_rockclimb_cmd( _cpu_freq_option("16"), _accumulate_keys_option, _saleae_timeout_option, + _bench_define_option, ) @@ -1105,6 +1119,7 @@ def _bench_schematic_impl( cpu_freq: str, accumulate_keys: str | None, timeout: float, + defines: tuple[str, ...], ) -> None: from .bench.schematic import run_schematic_benchmarks from .compile.schematic import CLANG_OPT_LEVEL_BY_LABEL @@ -1126,6 +1141,7 @@ def _bench_schematic_impl( pass_log_level=ctx.obj["pass_log_level"], algorithm_label=algorithm_label, accumulate_keys_file=_path_or_none(accumulate_keys), + extra_defines=list(defines), ) @@ -1152,6 +1168,7 @@ def bench_schematic_o3_cmd(ctx: click.Context, **kwargs) -> None: @_output_csv_option @_cpu_freq_option("16") @_saleae_timeout_option +@_bench_define_option @click.pass_context def bench_uninstrumented_cmd( ctx: click.Context, @@ -1159,10 +1176,17 @@ def bench_uninstrumented_cmd( output: str | None, cpu_freq: str, timeout: float, + defines: tuple[str, ...], ) -> None: """Run uninstrumented baselines and measure execution time.""" _bench_uninstrumented_impl( - ctx, benchmarks, output, cpu_freq, timeout, algorithm_label="uninstrumented" + ctx, + benchmarks, + output, + cpu_freq, + timeout, + algorithm_label="uninstrumented", + extra_defines=list(defines), ) @@ -1173,6 +1197,7 @@ def _bench_uninstrumented_impl( cpu_freq: str, timeout: float, algorithm_label: str, + extra_defines: list[str], ) -> None: from .bench.uninstrumented import run_uninstrumented_benchmarks from .compile.uninstrumented import OPT_LEVELS_BY_LABEL @@ -1188,6 +1213,7 @@ def _bench_uninstrumented_impl( algorithm_label=algorithm_label, clang_opt_level=clang_opt_level, opt_level=opt_level, + extra_defines=extra_defines, ) @@ -1206,7 +1232,13 @@ def bench_uninstrumented_o0_cmd( ) -> None: """Run uninstrumented baselines with O0 frontend IR and O3 backend.""" _bench_uninstrumented_impl( - ctx, benchmarks, output, cpu_freq, timeout, algorithm_label="uninstrumentedO0" + ctx, + benchmarks, + output, + cpu_freq, + timeout, + algorithm_label="uninstrumentedO0", + extra_defines=[], ) From e8d651b144dd63bef8c03b588eca05c6ad4f3ec0 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 12:49:44 -0400 Subject: [PATCH 10/14] Build the continuous-power reference with INTERMITTENT_BUILD --- results/intermittent/continuous/uninstrumented.csv | 14 ++++++++++++++ results/intermittent/run_continuous.sh | 14 +++++++++----- results/intermittent/summarize.py | 4 ++-- 3 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 results/intermittent/continuous/uninstrumented.csv diff --git a/results/intermittent/continuous/uninstrumented.csv b/results/intermittent/continuous/uninstrumented.csv new file mode 100644 index 00000000..5a394e77 --- /dev/null +++ b/results/intermittent/continuous/uninstrumented.csv @@ -0,0 +1,14 @@ +benchmark,status,compilation_time_ms,execution_time_us,run_attempts +aes,ok,781,101393.22,1 +crc,ok,520,29595.65,1 +rsa,ok,365,43693.48,1 +dijkstra,ok,348,217097.52,1 +qsort,ok,353,1029821.93,1 +activity_recognition,ok,389,33577.58,1 +bitcount,ok,337,4379029.27,1 +chacha20,ok,501,50961.77,1 +sensor_fusion,ok,367,25029.82,1 +poly1305,ok,457,475495.65,1 +cuckoo_filter,ok,445,41990.8,1 +sha256,ok,379,88640.11,1 +stringsearch,ok,324,33559.5,1 diff --git a/results/intermittent/run_continuous.sh b/results/intermittent/run_continuous.sh index afcb6779..e2f157b9 100755 --- a/results/intermittent/run_continuous.sh +++ b/results/intermittent/run_continuous.sh @@ -1,15 +1,19 @@ #!/bin/bash # Continuous-power reference for the decomposition (summarize.py): the same # wait-mode binaries at the board capacitance, run at a constant 3.3 V so no -# boundary ever waits. Wire the Otii main output directly to the board rail -# (no 560 Ohm resistor, no diode) as in docs/intermittent.md. The -# uninstrumented reference is results/uninstrumented.csv. +# boundary ever waits, plus the uninstrumented O3 baseline. Both are built +# with INTERMITTENT_BUILD, the define `ckpt intermittent` uses (it shrinks +# dijkstra, qsort, and bitcount). Wire the Otii main output directly to the +# board rail (no 560 Ohm resistor, no diode) as in docs/intermittent.md. cd "$(dirname "$0")/../.." || exit 1 -BENCHMARKS="aes crc rsa dijkstra qsort activity_recognition bitcount chacha20 sensor_fusion poly1305 cuckoo_filter sha256 stringsearch" +BENCHMARKS="${BENCHMARKS:-aes crc rsa dijkstra qsort activity_recognition bitcount chacha20 sensor_fusion poly1305 cuckoo_filter sha256 stringsearch}" OUT=results/intermittent/continuous mkdir -p "$OUT" for a in milp rockclimb schematic schematicO3; do echo "=== $(date '+%F %T') start $a" - uv run ckpt bench "$a" $BENCHMARKS --cap board --halt-mode wait --csv "$OUT/$a.csv" > "$OUT/$a.log" 2>&1 + uv run ckpt bench "$a" $BENCHMARKS --cap board --halt-mode wait -D INTERMITTENT_BUILD --csv "$OUT/$a.csv" > "$OUT/$a.log" 2>&1 echo "=== $(date '+%F %T') end $a exit=$?" done +echo "=== $(date '+%F %T') start uninstrumented" +uv run ckpt bench uninstrumented $BENCHMARKS -D INTERMITTENT_BUILD --csv "$OUT/uninstrumented.csv" > "$OUT/uninstrumented.log" 2>&1 +echo "=== $(date '+%F %T') end uninstrumented exit=$?" diff --git a/results/intermittent/summarize.py b/results/intermittent/summarize.py index 24e3ce9c..0d9655ef 100644 --- a/results/intermittent/summarize.py +++ b/results/intermittent/summarize.py @@ -178,7 +178,7 @@ def cell(r): # --------------------------------------------------------------------------- # Decomposition: T_total = T_exec + T_checkpoint + T_recharge + T_rest # T_recharge = wait_time_us (Saleae wait channel, outages included) -# T_exec = uninstrumented O3 under continuous power (../uninstrumented.csv) +# T_exec = uninstrumented O3 under continuous power (continuous/uninstrumented.csv) # T_checkpoint = continuous-power time of the same wait-mode binary at the # board cap (continuous/.csv) minus T_exec: state saves # plus the voltage check at every boundary @@ -200,7 +200,7 @@ def read_bench_times(path): COMPONENTS = ["t_exec", "t_checkpoint", "t_recharge", "t_rest"] -t_uninstr = read_bench_times(OUT.parent / "uninstrumented.csv") +t_uninstr = read_bench_times(OUT / "continuous" / "uninstrumented.csv") t_cont = {a: read_bench_times(OUT / "continuous" / f"{a}.csv") for a in ALGOS} decomp = [] From 815bdf2bd69d1aa10011f81c453cf85386d90cf9 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 12:49:55 -0400 Subject: [PATCH 11/14] Re-measure sha256 and poly1305 under intermittent power with the memcpy size bound --- results/intermittent/poly1305/milp.csv | 20 +-- results/intermittent/poly1305/rockclimb.csv | 20 +-- results/intermittent/poly1305/schematic.csv | 20 +-- results/intermittent/poly1305/schematicO3.csv | 20 +-- results/intermittent/report.md | 94 ++++++---- results/intermittent/sha256/milp.csv | 20 +-- results/intermittent/sha256/rockclimb.csv | 20 +-- results/intermittent/sha256/schematic.csv | 20 +-- results/intermittent/sha256/schematicO3.csv | 20 +-- results/intermittent/summary.csv | 160 +++++++++--------- 10 files changed, 220 insertions(+), 194 deletions(-) diff --git a/results/intermittent/poly1305/milp.csv b/results/intermittent/poly1305/milp.csv index ec479c63..caf8e02d 100644 --- a/results/intermittent/poly1305/milp.csv +++ b/results/intermittent/poly1305/milp.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,2,27,1829,12.3,10185522.5,9691945.98,127,4,,132,4,68 -poly1305,board,2,ok,2,27,1829,12.21,9704329.28,9210732.93,128,2,,131,2,68 -poly1305,board,3,ok,2,27,1829,9.09,5158572.24,4664948.59,127,1,,129,1,68 -poly1305,board,4,ok,2,27,1829,39.17,36678855.67,36185245.19,127,5,,133,5,68 -poly1305,board,5,ok,2,27,1829,32.38,29774359.11,29280767.41,128,9,,138,9,68 -poly1305,board,6,ok,2,27,1829,13.78,11922830.53,11429242.57,127,3,,131,3,68 -poly1305,board,7,ok,2,27,1829,24.69,22962988.22,22469397.29,127,0,,128,0,68 -poly1305,board,8,ok,2,27,1829,31.2,28597603.49,28104006.68,128,18,,148,18,68 -poly1305,board,9,ok,2,27,1829,36.09,33339672.33,32846074.15,128,10,,139,10,68 -poly1305,board,10,ok,2,27,1829,33.38,31671427.12,31177854.23,127,24,,152,24,68 +poly1305,board,1,ok,2,35,727,12.28,10187580.04,9693839.97,127,4,,132,4,68 +poly1305,board,2,ok,2,35,727,12.29,9764689.68,9270900.14,128,2,,131,2,68 +poly1305,board,3,ok,2,35,727,9.09,5188182.16,4694380.68,127,1,,129,1,68 +poly1305,board,4,ok,2,35,727,39.81,37325521.46,36831746.63,127,8,,136,8,68 +poly1305,board,5,ok,2,35,727,32.2,29736633.32,29242854.36,128,9,,138,9,68 +poly1305,board,6,ok,2,35,727,13.72,11951776.2,11458008.3,127,2,,130,2,68 +poly1305,board,7,ok,2,35,727,24.69,22946817.75,22453028.14,127,0,,128,0,68 +poly1305,board,8,ok,2,35,727,31.21,28644861.5,28151074.6,128,18,,148,18,68 +poly1305,board,9,ok,2,35,727,36.21,33416389.69,32922610.5,128,6,,135,6,68 +poly1305,board,10,ok,2,35,727,33.41,31641792.92,31148027.46,127,24,,152,24,68 diff --git a/results/intermittent/poly1305/rockclimb.csv b/results/intermittent/poly1305/rockclimb.csv index 3ef27783..9b1181a5 100644 --- a/results/intermittent/poly1305/rockclimb.csv +++ b/results/intermittent/poly1305/rockclimb.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,4,5,0,25.58,23532335.06,22746348.91,312,9,,322,9,68 -poly1305,board,2,ok,4,5,0,30.6,27996715.05,27210578.99,399,7,,407,7,68 -poly1305,board,3,ok,4,5,0,28.17,24230100.76,23443576.48,644,6,,651,6,68 -poly1305,board,4,ok,4,5,0,118.62,116068284.53,115281980.76,517,0,,518,0,68 -poly1305,board,5,ok,4,5,0,81.89,79376036.5,78589878.42,381,25,,407,25,68 -poly1305,board,6,ok,4,5,0,34.47,32610174.65,31824062.98,376,6,,383,6,68 -poly1305,board,7,ok,4,5,0,61.71,60110341.36,59324252.29,384,0,,385,0,68 -poly1305,board,8,ok,4,5,0,88.1,85522662.27,84736258.39,507,55,,564,55,68 -poly1305,board,9,ok,4,5,0,86.21,83403334.19,82617315.39,361,0,,362,0,68 -poly1305,board,10,ok,4,5,0,76.79,75011310.64,74225274.7,328,57,,386,57,68 +poly1305,board,1,ok,4,5,0,25.68,23577696.45,22790796.63,313,9,,323,9,68 +poly1305,board,2,ok,4,5,0,30.69,28093586.12,27306524.77,409,7,,417,7,68 +poly1305,board,3,ok,4,5,0,28.59,24661288.7,23873789.18,666,6,,673,6,68 +poly1305,board,4,ok,4,5,0,110.69,108201901.69,107414611.84,524,0,,525,0,68 +poly1305,board,5,ok,4,5,0,83.18,80639172.96,79851963.23,381,26,,408,26,68 +poly1305,board,6,ok,4,5,0,36.28,34494712.52,33707541.61,377,7,,385,7,68 +poly1305,board,7,ok,4,5,0,62.72,61024424.45,60237267.32,383,0,,384,0,68 +poly1305,board,8,ok,4,5,0,91.28,88664771.32,87877331.34,507,57,,566,57,68 +poly1305,board,9,ok,4,5,0,88.61,85865285.34,85078159.97,364,0,,365,0,68 +poly1305,board,10,ok,4,5,0,80.52,78811841.43,78024647.74,337,60,,398,60,68 diff --git a/results/intermittent/poly1305/schematic.csv b/results/intermittent/poly1305/schematic.csv index ec6ea654..3829e416 100644 --- a/results/intermittent/poly1305/schematic.csv +++ b/results/intermittent/poly1305/schematic.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,4,5,773,22.21,20228395.28,19538872.67,260,8,,269,8,68 -poly1305,board,2,ok,4,5,773,22.9,20345723.31,19656161.52,275,5,,281,5,68 -poly1305,board,3,ok,4,5,773,16.91,13011525.95,12321853.67,331,3,,335,3,68 -poly1305,board,4,ok,4,5,773,71.4,68901889.17,68212277.06,296,1,,298,1,68 -poly1305,board,5,ok,4,5,773,63.31,60779195.02,60089606.19,271,19,,291,19,68 -poly1305,board,6,ok,4,5,773,28.67,26862479.85,26172939.58,279,7,,287,7,68 -poly1305,board,7,ok,4,5,773,45.58,43825711.54,43136162.81,275,0,,276,0,68 -poly1305,board,8,ok,4,5,773,60.4,57766472.42,57076861.62,277,37,,316,37,68 -poly1305,board,9,ok,4,5,773,71.12,68360575.75,67670995.74,280,20,,301,20,68 -poly1305,board,10,ok,4,5,773,64.83,63054810.33,62365275.85,258,48,,307,48,68 +poly1305,board,1,ok,4,5,600,22.27,20170911.0,19480895.31,258,8,,267,8,68 +poly1305,board,2,ok,4,5,600,23.57,21022394.67,20332306.19,279,5,,285,5,68 +poly1305,board,3,ok,4,5,600,17.07,13153955.91,12463715.27,345,3,,349,3,68 +poly1305,board,4,ok,4,5,600,71.49,68947698.03,68257533.0,283,1,,285,1,68 +poly1305,board,5,ok,4,5,600,61.43,58993955.94,58303752.69,271,19,,291,19,68 +poly1305,board,6,ok,4,5,600,28.81,26940858.79,26250687.0,270,5,,276,5,68 +poly1305,board,7,ok,4,5,600,46.57,44827211.59,44137007.48,273,0,,274,0,68 +poly1305,board,8,ok,4,5,600,60.48,57818212.09,57127883.5,289,37,,328,37,68 +poly1305,board,9,ok,4,5,600,73.58,70840249.21,70150011.97,281,20,,302,20,68 +poly1305,board,10,ok,4,5,600,64.79,63081158.17,62390999.62,257,48,,306,48,68 diff --git a/results/intermittent/poly1305/schematicO3.csv b/results/intermittent/poly1305/schematicO3.csv index affe6ca6..a94c5b53 100644 --- a/results/intermittent/poly1305/schematicO3.csv +++ b/results/intermittent/poly1305/schematicO3.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -poly1305,board,1,ok,1,1,816,15.59,13504204.79,12952900.15,179,5,,185,5,68 -poly1305,board,2,ok,1,1,816,16.2,13844204.01,13292874.61,187,3,,191,3,68 -poly1305,board,3,ok,1,1,816,13.07,9215343.01,8663916.14,238,2,,241,2,68 -poly1305,board,4,ok,1,1,816,53.1,50594541.07,50043200.82,188,0,,189,0,68 -poly1305,board,5,ok,1,1,816,46.01,43454015.59,42902638.26,199,14,,214,14,68 -poly1305,board,6,ok,1,1,816,21.92,20099002.63,19547656.33,201,5,,207,5,68 -poly1305,board,7,ok,1,1,816,34.69,32952166.26,32400833.43,190,0,,191,0,68 -poly1305,board,8,ok,1,1,816,46.51,43960866.03,43409458.28,214,28,,244,28,68 -poly1305,board,9,ok,1,1,816,51.09,48355517.26,47804185.29,195,7,,203,7,68 -poly1305,board,10,ok,1,1,816,45.21,43482013.03,42930674.25,182,33,,216,33,68 +poly1305,board,1,ok,1,1,565,15.59,13525051.64,12973361.23,178,5,,184,5,68 +poly1305,board,2,ok,1,1,565,18.9,16302426.25,15750694.85,191,4,,196,4,68 +poly1305,board,3,ok,1,1,565,13.09,9219188.3,8667387.05,241,2,,244,2,68 +poly1305,board,4,ok,1,1,565,55.58,53048626.8,52496920.57,189,0,,190,0,68 +poly1305,board,5,ok,1,1,565,45.98,43480024.6,42928315.61,196,14,,211,14,68 +poly1305,board,6,ok,1,1,565,21.99,20171317.52,19619672.63,201,4,,206,4,68 +poly1305,board,7,ok,1,1,565,36.09,34342645.69,33791013.11,196,0,,197,0,68 +poly1305,board,8,ok,1,1,565,49.59,46965229.35,46413517.98,216,30,,248,30,68 +poly1305,board,9,ok,1,1,565,51.18,48406728.22,47855108.21,195,3,,199,3,68 +poly1305,board,10,ok,1,1,565,45.09,43466849.43,42915232.63,183,33,,217,33,68 diff --git a/results/intermittent/report.md b/results/intermittent/report.md index b4079496..1532cfa0 100644 --- a/results/intermittent/report.md +++ b/results/intermittent/report.md @@ -8,10 +8,10 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | algo | runs | complete | correct (of complete) | incomplete | mean waits | mean rec | mean t (s) | |---|---|---|---|---|---|---|---| -| milp | 130 | 130 | 130 | 0 | 23.9 | 0.9 | 3.13 | -| rockclimb | 130 | 130 | 130 | 0 | 312.2 | 11.9 | 43.57 | -| schematic | 130 | 130 | 130 | 0 | 125.2 | 5.1 | 17.58 | -| schematicO3 | 130 | 130 | 130 | 0 | 37.9 | 1.3 | 5.04 | +| milp | 130 | 130 | 130 | 0 | 23.8 | 0.8 | 3.15 | +| rockclimb | 130 | 130 | 130 | 0 | 312.8 | 11.9 | 43.64 | +| schematic | 130 | 130 | 130 | 0 | 125.2 | 5.1 | 17.61 | +| schematicO3 | 130 | 130 | 130 | 0 | 38.0 | 1.3 | 5.12 | ## Per benchmark: complete / correct / total waits / total rec / mean t (s) @@ -26,9 +26,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount (14121) | 10/10 / 10/10 / 90 / 0 / 0.81 | 10/10 / 10/10 / 4164 / 160 / 59.32 | 10/10 / 10/10 / 447 / 12 / 5.44 | 10/10 / 10/10 / 104 / 0 / 1.00 | | chacha20 (79) | 10/10 / 10/10 / 115 / 2 / 1.30 | 10/10 / 10/10 / 626 / 18 / 7.64 | 10/10 / 10/10 / 356 / 15 / 4.89 | 10/10 / 10/10 / 252 / 8 / 3.38 | | sensor_fusion (613) | 10/10 / 10/10 / 108 / 0 / 0.99 | 10/10 / 10/10 / 125 / 0 / 1.12 | 10/10 / 10/10 / 167 / 1 / 1.62 | 10/10 / 10/10 / 165 / 1 / 1.51 | -| poly1305 (68) | 10/10 / 10/10 / 1361 / 76 / 22.00 | 10/10 / 10/10 / 4385 / 165 / 60.79 | 10/10 / 10/10 / 2961 / 148 / 44.31 | 10/10 / 10/10 / 2081 / 97 / 31.95 | +| poly1305 (68) | 10/10 / 10/10 / 1359 / 74 / 22.08 | 10/10 / 10/10 / 4444 / 172 / 61.40 | 10/10 / 10/10 / 2963 / 146 / 44.58 | 10/10 / 10/10 / 2092 / 95 / 32.89 | | cuckoo_filter (4048) | 10/10 / 10/10 / 146 / 1 / 1.40 | 10/10 / 10/10 / 1898 / 71 / 25.94 | 10/10 / 10/10 / 1360 / 54 / 18.83 | 10/10 / 10/10 / 221 / 7 / 2.56 | -| sha256 (131) | 10/10 / 10/10 / 184 / 9 / 2.45 | 10/10 / 10/10 / 1073 / 35 / 13.64 | 10/10 / 10/10 / 464 / 18 / 6.21 | 10/10 / 10/10 / 348 / 15 / 4.85 | +| sha256 (131) | 10/10 / 10/10 / 184 / 7 / 2.58 | 10/10 / 10/10 / 1088 / 35 / 13.98 | 10/10 / 10/10 / 469 / 18 / 6.30 | 10/10 / 10/10 / 345 / 14 / 4.89 | | stringsearch (20) | 10/10 / 10/10 / 194 / 2 / 1.79 | 10/10 / 10/10 / 8905 / 346 / 126.74 | 10/10 / 10/10 / 691 / 23 / 9.09 | 10/10 / 10/10 / 232 / 5 / 2.45 | ## Per trace: waits by benchmark x algorithm (`inc` = incomplete) @@ -46,9 +46,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 8 | 280 | 32 | 9 | | chacha20 | 11 | 46 | 34 | 22 | | sensor_fusion | 8 | 10 | 14 | 12 | -| poly1305 | 132 | 322 | 269 | 185 | +| poly1305 | 132 | 323 | 267 | 184 | | cuckoo_filter | 13 | 130 | 117 | 18 | -| sha256 | 18 | 74 | 38 | 35 | +| sha256 | 18 | 75 | 37 | 34 | | stringsearch | 14 | 594 | 55 | 16 | ### trace 2 @@ -64,9 +64,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 8 | 381 | 40 | 11 | | chacha20 | 12 | 61 | 34 | 24 | | sensor_fusion | 12 | 12 | 16 | 16 | -| poly1305 | 131 | 407 | 281 | 191 | +| poly1305 | 131 | 417 | 285 | 196 | | cuckoo_filter | 14 | 170 | 125 | 22 | -| sha256 | 18 | 99 | 45 | 33 | +| sha256 | 18 | 98 | 44 | 33 | | stringsearch | 19 | 804 | 68 | 21 | ### trace 3 @@ -82,9 +82,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 7 | 663 | 63 | 9 | | chacha20 | 11 | 96 | 37 | 28 | | sensor_fusion | 13 | 14 | 20 | 20 | -| poly1305 | 129 | 651 | 335 | 241 | +| poly1305 | 129 | 673 | 349 | 244 | | cuckoo_filter | 16 | 297 | 175 | 26 | -| sha256 | 18 | 172 | 61 | 33 | +| sha256 | 18 | 177 | 61 | 33 | | stringsearch | 24 | 1393 | 94 | 28 | ### trace 4 @@ -100,9 +100,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 8 | 532 | 53 | 10 | | chacha20 | 12 | 72 | 35 | 25 | | sensor_fusion | 11 | 14 | 18 | 22 | -| poly1305 | 133 | 518 | 298 | 189 | +| poly1305 | 136 | 525 | 285 | 190 | | cuckoo_filter | 16 | 234 | 139 | 24 | -| sha256 | 19 | 130 | 49 | 35 | +| sha256 | 20 | 134 | 47 | 34 | | stringsearch | 21 | 1170 | 71 | 30 | ### trace 5 @@ -118,9 +118,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 9 | 388 | 43 | 11 | | chacha20 | 11 | 57 | 36 | 27 | | sensor_fusion | 11 | 12 | 17 | 16 | -| poly1305 | 138 | 407 | 291 | 214 | +| poly1305 | 138 | 408 | 291 | 211 | | cuckoo_filter | 13 | 170 | 132 | 23 | -| sha256 | 18 | 98 | 46 | 35 | +| sha256 | 18 | 100 | 50 | 35 | | stringsearch | 20 | 789 | 67 | 22 | ### trace 6 @@ -136,9 +136,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 10 | 352 | 39 | 12 | | chacha20 | 11 | 55 | 33 | 23 | | sensor_fusion | 11 | 14 | 17 | 18 | -| poly1305 | 131 | 383 | 287 | 207 | +| poly1305 | 130 | 385 | 276 | 206 | | cuckoo_filter | 13 | 164 | 128 | 19 | -| sha256 | 17 | 91 | 39 | 33 | +| sha256 | 17 | 88 | 40 | 33 | | stringsearch | 19 | 758 | 66 | 22 | ### trace 7 @@ -154,9 +154,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 9 | 354 | 41 | 10 | | chacha20 | 11 | 55 | 34 | 23 | | sensor_fusion | 11 | 13 | 17 | 15 | -| poly1305 | 128 | 385 | 276 | 191 | +| poly1305 | 128 | 384 | 274 | 197 | | cuckoo_filter | 15 | 171 | 126 | 22 | -| sha256 | 17 | 93 | 45 | 33 | +| sha256 | 17 | 96 | 45 | 33 | | stringsearch | 20 | 791 | 61 | 23 | ### trace 8 @@ -172,9 +172,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 14 | 541 | 55 | 14 | | chacha20 | 13 | 75 | 37 | 31 | | sensor_fusion | 14 | 16 | 19 | 19 | -| poly1305 | 148 | 564 | 316 | 244 | +| poly1305 | 148 | 566 | 328 | 248 | | cuckoo_filter | 18 | 248 | 158 | 25 | -| sha256 | 20 | 138 | 56 | 37 | +| sha256 | 20 | 136 | 56 | 37 | | stringsearch | 25 | 1153 | 81 | 27 | ### trace 9 @@ -190,9 +190,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 9 | 327 | 40 | 9 | | chacha20 | 12 | 56 | 37 | 24 | | sensor_fusion | 9 | 10 | 15 | 15 | -| poly1305 | 139 | 362 | 301 | 203 | +| poly1305 | 135 | 365 | 302 | 199 | | cuckoo_filter | 15 | 155 | 126 | 20 | -| sha256 | 19 | 91 | 41 | 35 | +| sha256 | 18 | 94 | 45 | 34 | | stringsearch | 18 | 716 | 63 | 21 | ### trace 10 @@ -208,9 +208,9 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | bitcount | 8 | 346 | 41 | 9 | | chacha20 | 11 | 53 | 39 | 25 | | sensor_fusion | 8 | 10 | 14 | 12 | -| poly1305 | 152 | 386 | 307 | 216 | +| poly1305 | 152 | 398 | 306 | 217 | | cuckoo_filter | 13 | 159 | 134 | 22 | -| sha256 | 20 | 87 | 44 | 39 | +| sha256 | 20 | 90 | 44 | 39 | | stringsearch | 14 | 737 | 65 | 22 | ## Per benchmark x algorithm x trace @@ -300,10 +300,10 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=132 rec=4 t=10.19s | ok w=131 rec=2 t=9.70s | ok w=129 rec=1 t=5.16s | ok w=133 rec=5 t=36.68s | ok w=138 rec=9 t=29.77s | ok w=131 rec=3 t=11.92s | ok w=128 rec=0 t=22.96s | ok w=148 rec=18 t=28.60s | ok w=139 rec=10 t=33.34s | ok w=152 rec=24 t=31.67s | -| rockclimb | ok w=322 rec=9 t=23.53s | ok w=407 rec=7 t=28.00s | ok w=651 rec=6 t=24.23s | ok w=518 rec=0 t=116.07s | ok w=407 rec=25 t=79.38s | ok w=383 rec=6 t=32.61s | ok w=385 rec=0 t=60.11s | ok w=564 rec=55 t=85.52s | ok w=362 rec=0 t=83.40s | ok w=386 rec=57 t=75.01s | -| schematic | ok w=269 rec=8 t=20.23s | ok w=281 rec=5 t=20.35s | ok w=335 rec=3 t=13.01s | ok w=298 rec=1 t=68.90s | ok w=291 rec=19 t=60.78s | ok w=287 rec=7 t=26.86s | ok w=276 rec=0 t=43.83s | ok w=316 rec=37 t=57.77s | ok w=301 rec=20 t=68.36s | ok w=307 rec=48 t=63.05s | -| schematicO3 | ok w=185 rec=5 t=13.50s | ok w=191 rec=3 t=13.84s | ok w=241 rec=2 t=9.22s | ok w=189 rec=0 t=50.59s | ok w=214 rec=14 t=43.45s | ok w=207 rec=5 t=20.10s | ok w=191 rec=0 t=32.95s | ok w=244 rec=28 t=43.96s | ok w=203 rec=7 t=48.36s | ok w=216 rec=33 t=43.48s | +| milp | ok w=132 rec=4 t=10.19s | ok w=131 rec=2 t=9.76s | ok w=129 rec=1 t=5.19s | ok w=136 rec=8 t=37.33s | ok w=138 rec=9 t=29.74s | ok w=130 rec=2 t=11.95s | ok w=128 rec=0 t=22.95s | ok w=148 rec=18 t=28.64s | ok w=135 rec=6 t=33.42s | ok w=152 rec=24 t=31.64s | +| rockclimb | ok w=323 rec=9 t=23.58s | ok w=417 rec=7 t=28.09s | ok w=673 rec=6 t=24.66s | ok w=525 rec=0 t=108.20s | ok w=408 rec=26 t=80.64s | ok w=385 rec=7 t=34.49s | ok w=384 rec=0 t=61.02s | ok w=566 rec=57 t=88.66s | ok w=365 rec=0 t=85.87s | ok w=398 rec=60 t=78.81s | +| schematic | ok w=267 rec=8 t=20.17s | ok w=285 rec=5 t=21.02s | ok w=349 rec=3 t=13.15s | ok w=285 rec=1 t=68.95s | ok w=291 rec=19 t=58.99s | ok w=276 rec=5 t=26.94s | ok w=274 rec=0 t=44.83s | ok w=328 rec=37 t=57.82s | ok w=302 rec=20 t=70.84s | ok w=306 rec=48 t=63.08s | +| schematicO3 | ok w=184 rec=5 t=13.53s | ok w=196 rec=4 t=16.30s | ok w=244 rec=2 t=9.22s | ok w=190 rec=0 t=53.05s | ok w=211 rec=14 t=43.48s | ok w=206 rec=4 t=20.17s | ok w=197 rec=0 t=34.34s | ok w=248 rec=30 t=46.97s | ok w=199 rec=3 t=48.41s | ok w=217 rec=33 t=43.47s | ### cuckoo_filter (baseline result 4048) @@ -318,10 +318,10 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | algo | tr1 | tr2 | tr3 | tr4 | tr5 | tr6 | tr7 | tr8 | tr9 | tr10 | |---|---|---|---|---|---|---|---|---|---|---| -| milp | ok w=18 rec=1 t=0.87s | ok w=18 rec=0 t=0.75s | ok w=18 rec=0 t=0.34s | ok w=19 rec=2 t=5.24s | ok w=18 rec=1 t=3.19s | ok w=17 rec=0 t=1.14s | ok w=17 rec=0 t=3.09s | ok w=20 rec=1 t=2.41s | ok w=19 rec=1 t=3.44s | ok w=20 rec=3 t=3.99s | -| rockclimb | ok w=74 rec=2 t=5.14s | ok w=99 rec=1 t=5.60s | ok w=172 rec=1 t=4.96s | ok w=130 rec=0 t=24.43s | ok w=98 rec=6 t=18.64s | ok w=91 rec=1 t=6.61s | ok w=93 rec=0 t=14.87s | ok w=138 rec=12 t=19.38s | ok w=91 rec=0 t=20.83s | ok w=87 rec=12 t=15.90s | -| schematic | ok w=38 rec=1 t=2.59s | ok w=45 rec=0 t=1.92s | ok w=61 rec=0 t=1.08s | ok w=49 rec=1 t=11.29s | ok w=46 rec=3 t=9.30s | ok w=39 rec=0 t=1.68s | ok w=45 rec=0 t=8.57s | ok w=56 rec=6 t=9.28s | ok w=41 rec=1 t=8.42s | ok w=44 rec=6 t=7.97s | -| schematicO3 | ok w=35 rec=1 t=2.53s | ok w=33 rec=0 t=1.65s | ok w=33 rec=0 t=0.66s | ok w=35 rec=2 t=8.64s | ok w=35 rec=2 t=6.26s | ok w=33 rec=0 t=1.63s | ok w=33 rec=0 t=5.54s | ok w=37 rec=3 t=5.52s | ok w=35 rec=1 t=8.23s | ok w=39 rec=6 t=7.90s | +| milp | ok w=18 rec=0 t=0.89s | ok w=18 rec=0 t=0.77s | ok w=18 rec=0 t=0.34s | ok w=20 rec=2 t=5.24s | ok w=18 rec=1 t=3.20s | ok w=17 rec=0 t=1.14s | ok w=17 rec=0 t=4.43s | ok w=20 rec=1 t=2.41s | ok w=18 rec=0 t=3.43s | ok w=20 rec=3 t=3.98s | +| rockclimb | ok w=75 rec=2 t=5.16s | ok w=98 rec=1 t=5.61s | ok w=177 rec=1 t=5.01s | ok w=134 rec=0 t=26.99s | ok w=100 rec=6 t=18.68s | ok w=88 rec=1 t=6.64s | ok w=96 rec=0 t=15.55s | ok w=136 rec=12 t=19.41s | ok w=94 rec=0 t=20.82s | ok w=90 rec=12 t=15.90s | +| schematic | ok w=37 rec=1 t=2.61s | ok w=44 rec=0 t=1.93s | ok w=61 rec=0 t=1.11s | ok w=47 rec=0 t=11.31s | ok w=50 rec=3 t=9.32s | ok w=40 rec=0 t=1.68s | ok w=45 rec=0 t=8.56s | ok w=56 rec=6 t=10.05s | ok w=45 rec=2 t=8.44s | ok w=44 rec=6 t=7.97s | +| schematicO3 | ok w=34 rec=1 t=2.54s | ok w=33 rec=0 t=1.68s | ok w=33 rec=0 t=0.67s | ok w=34 rec=1 t=8.68s | ok w=35 rec=2 t=6.29s | ok w=33 rec=0 t=1.60s | ok w=33 rec=0 t=5.69s | ok w=37 rec=3 t=5.51s | ok w=34 rec=1 t=8.32s | ok w=39 rec=6 t=7.90s | ### stringsearch (baseline result 20) @@ -332,3 +332,29 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | schematic | ok w=55 rec=1 t=3.40s | ok w=68 rec=1 t=4.48s | ok w=94 rec=0 t=1.40s | ok w=71 rec=0 t=16.37s | ok w=67 rec=4 t=12.48s | ok w=66 rec=1 t=5.83s | ok w=61 rec=0 t=10.04s | ok w=81 rec=7 t=11.63s | ok w=63 rec=0 t=13.40s | ok w=65 rec=9 t=11.91s | | schematicO3 | ok w=16 rec=0 t=0.21s | ok w=21 rec=0 t=0.72s | ok w=28 rec=0 t=0.34s | ok w=30 rec=0 t=6.02s | ok w=22 rec=1 t=3.18s | ok w=22 rec=0 t=1.12s | ok w=23 rec=0 t=3.08s | ok w=27 rec=1 t=2.40s | ok w=21 rec=0 t=3.41s | ok w=22 rec=3 t=3.95s | +## Decomposition (normalized to Bao's total on the same trace; mean over traces, then benchmarks) + +| algo | runs | total (arith) | total (geomean) | t_exec | t_checkpoint | t_recharge | t_rest | power-off share | +|---|---|---|---|---|---|---|---|---| +| milp | 130 | 1.00 | 1.00 | 1.515 (151.5%) | 0.080 (8.0%) | 0.913 (91.3%) | -1.508 (-150.8%) | 91.3% | +| rockclimb | 130 | 64.04 | 18.64 | 1.515 (2.2%) | 47.572 (35.9%) | 62.603 (97.3%) | -47.648 (-35.4%) | 97.3% | +| schematic | 130 | 19.08 | 6.71 | 1.515 (23.8%) | 2.817 (32.0%) | 18.713 (96.9%) | -3.964 (-52.7%) | 96.9% | +| schematicO3 | 130 | 2.34 | 1.68 | 1.515 (125.9%) | 0.298 (23.6%) | 2.239 (93.9%) | -1.711 (-143.4%) | 93.9% | + +## Decomposition per benchmark (mean share of each run's total: exec / ckpt / recharge / rest) + +| benchmark | milp | rockclimb | schematic | schematicO3 | +|---|---|---|---|---| +| aes | 6% / 0% / 94% / 0% | 0% / 2% / 98% / -0% | 0% / 2% / 98% / -0% | 2% / 0% / 98% / -0% | +| crc | 14% / 0% / 85% / -0% | 0% / 2% / 98% / -0% | 0% / 2% / 98% / -0% | 10% / 3% / 88% / 0% | +| rsa | 5% / 1% / 94% / -0% | 0% / 2% / 98% / -0% | 1% / 1% / 98% / 0% | 3% / 1% / 96% / -0% | +| dijkstra | 69% / 5% / 91% / -65% | 0% / 18% / 98% / -16% | 4% / 14% / 98% / -16% | 62% / 8% / 92% / -61% | +| qsort | 287% / 33% / 92% / -312% | 7% / 86% / 98% / -90% | 118% / 49% / 95% / -162% | 180% / 68% / 93% / -242% | +| activity_recognition | 8% / 1% / 91% / -0% | 0% / 2% / 98% / -0% | 1% / 2% / 97% / -0% | 7% / 1% / 92% / -0% | +| bitcount | 1535% / 59% / 90% / -1584% | 10% / 345% / 98% / -353% | 173% / 337% / 97% / -506% | 1352% / 218% / 91% / -1561% | +| chacha20 | 12% / 0% / 88% / 0% | 1% / 2% / 97% / -0% | 2% / 2% / 96% / -0% | 4% / 1% / 96% / 0% | +| sensor_fusion | 8% / 1% / 91% / 0% | 7% / 1% / 92% / -0% | 5% / 2% / 93% / -0% | 6% / 2% / 93% / -0% | +| poly1305 | 3% / 0% / 97% / 0% | 1% / 1% / 98% / -0% | 1% / 1% / 98% / -0% | 2% / 0% / 98% / 0% | +| cuckoo_filter | 9% / 1% / 91% / -0% | 0% / 2% / 98% / -0% | 0% / 2% / 98% / -0% | 3% / 1% / 95% / -0% | +| sha256 | 7% / 1% / 92% / 0% | 1% / 1% / 98% / -0% | 3% / 1% / 96% / 0% | 4% / 1% / 96% / 0% | +| stringsearch | 6% / 2% / 92% / -0% | 0% / 2% / 98% / -0% | 1% / 2% / 97% / -0% | 4% / 2% / 94% / -0% | diff --git a/results/intermittent/sha256/milp.csv b/results/intermittent/sha256/milp.csv index 44c2b345..4cdb5b0d 100644 --- a/results/intermittent/sha256/milp.csv +++ b/results/intermittent/sha256/milp.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,8,258,859,2.99,872692.95,773372.19,16,1,,18,1,131 -sha256,board,2,ok,8,258,859,3.3,746531.66,647203.93,17,0,,18,0,131 -sha256,board,3,ok,8,258,859,4.24,343609.96,244282.74,17,0,,18,0,131 -sha256,board,4,ok,8,258,859,7.7,5237944.71,5138618.63,16,2,,19,2,131 -sha256,board,5,ok,8,258,859,5.7,3185576.5,3086253.34,16,1,,18,1,131 -sha256,board,6,ok,8,258,859,3.0,1135516.34,1036190.25,16,0,,17,0,131 -sha256,board,7,ok,8,258,859,4.78,3093229.95,2993908.11,16,0,,17,0,131 -sha256,board,8,ok,8,258,859,5.02,2411920.61,2312595.77,17,1,,20,1,131 -sha256,board,9,ok,8,258,859,6.19,3438962.32,3339635.91,17,1,,19,1,131 -sha256,board,10,ok,8,258,859,5.7,3993632.56,3894308.92,16,3,,20,3,131 +sha256,board,1,ok,7,249,677,2.89,894845.76,795431.21,17,0,,18,0,131 +sha256,board,2,ok,7,249,677,3.29,773747.61,674329.95,17,0,,18,0,131 +sha256,board,3,ok,7,249,677,4.29,343721.06,244296.01,17,0,,18,0,131 +sha256,board,4,ok,7,249,677,7.79,5243781.25,5144352.97,17,2,,20,2,131 +sha256,board,5,ok,7,249,677,5.71,3202298.09,3102880.09,16,1,,18,1,131 +sha256,board,6,ok,7,249,677,2.99,1139104.97,1039680.93,16,0,,17,0,131 +sha256,board,7,ok,7,249,677,6.19,4425226.83,4325807.29,16,0,,17,0,131 +sha256,board,8,ok,7,249,677,5.09,2411641.89,2312224.25,17,1,,20,1,131 +sha256,board,9,ok,7,249,677,6.19,3434232.57,3334813.94,17,0,,18,0,131 +sha256,board,10,ok,7,249,677,5.6,3975832.58,3876411.94,16,3,,20,3,131 diff --git a/results/intermittent/sha256/rockclimb.csv b/results/intermittent/sha256/rockclimb.csv index c7370ec4..af460a18 100644 --- a/results/intermittent/sha256/rockclimb.csv +++ b/results/intermittent/sha256/rockclimb.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,11,8,0,7.22,5137376.57,4933454.62,71,2,,74,2,131 -sha256,board,2,ok,11,8,0,8.14,5598049.91,5394087.42,97,1,,99,1,131 -sha256,board,3,ok,11,8,0,8.9,4962880.96,4758793.77,170,1,,172,1,131 -sha256,board,4,ok,11,8,0,26.92,24433894.22,24229894.12,129,0,,130,0,131 -sha256,board,5,ok,11,8,0,21.2,18639535.11,18435558.92,91,6,,98,6,131 -sha256,board,6,ok,11,8,0,8.41,6614513.14,6410557.03,89,1,,91,1,131 -sha256,board,7,ok,11,8,0,16.63,14866982.92,14663027.36,92,0,,93,0,131 -sha256,board,8,ok,11,8,0,22.01,19379136.53,19175102.42,124,12,,138,12,131 -sha256,board,9,ok,11,8,0,23.54,20831192.41,20627229.82,90,0,,91,0,131 -sha256,board,10,ok,11,8,0,17.61,15897152.83,15693213.53,74,12,,87,12,131 +sha256,board,1,ok,11,7,0,7.28,5164089.19,4959726.85,72,2,,75,2,131 +sha256,board,2,ok,11,7,0,8.17,5613684.68,5409275.76,96,1,,98,1,131 +sha256,board,3,ok,11,7,0,8.81,5014394.38,4809875.8,175,1,,177,1,131 +sha256,board,4,ok,11,7,0,29.41,26989786.33,26785343.12,133,0,,134,0,131 +sha256,board,5,ok,11,7,0,21.11,18676062.13,18471648.27,93,6,,100,6,131 +sha256,board,6,ok,11,7,0,8.4,6639079.04,6434704.45,86,1,,88,1,131 +sha256,board,7,ok,11,7,0,17.31,15550089.44,15345665.4,95,0,,96,0,131 +sha256,board,8,ok,11,7,0,22.01,19405891.14,19201427.87,122,12,,136,12,131 +sha256,board,9,ok,11,7,0,23.58,20824114.54,20619733.05,93,0,,94,0,131 +sha256,board,10,ok,11,7,0,17.59,15897202.4,15692824.84,77,12,,90,12,131 diff --git a/results/intermittent/sha256/schematic.csv b/results/intermittent/sha256/schematic.csv index f45191ca..0cfb09d4 100644 --- a/results/intermittent/sha256/schematic.csv +++ b/results/intermittent/sha256/schematic.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,7,4,813,4.67,2591380.8,2470999.84,36,1,,38,1,131 -sha256,board,2,ok,7,4,813,4.41,1919376.92,1798982.98,44,0,,45,0,131 -sha256,board,3,ok,7,4,813,4.98,1081572.08,961152.75,60,0,,61,0,131 -sha256,board,4,ok,7,4,813,13.73,11287201.05,11166797.55,47,1,,49,1,131 -sha256,board,5,ok,7,4,813,11.82,9299736.14,9179338.59,42,3,,46,3,131 -sha256,board,6,ok,7,4,813,3.51,1682344.67,1561951.92,38,0,,39,0,131 -sha256,board,7,ok,7,4,813,10.31,8572265.81,8451872.44,44,0,,45,0,131 -sha256,board,8,ok,7,4,813,11.93,9280862.76,9160452.13,48,6,,56,6,131 -sha256,board,9,ok,7,4,813,11.22,8422957.74,8302569.37,39,1,,41,1,131 -sha256,board,10,ok,7,4,813,9.73,7966946.58,7846555.89,37,6,,44,6,131 +sha256,board,1,ok,7,5,573,4.69,2605644.45,2485182.62,35,1,,37,1,131 +sha256,board,2,ok,7,5,573,4.49,1926623.79,1806156.19,43,0,,44,0,131 +sha256,board,3,ok,7,5,573,4.99,1109375.75,988873.54,60,0,,61,0,131 +sha256,board,4,ok,7,5,573,13.78,11305510.09,11185032.66,46,0,,47,0,131 +sha256,board,5,ok,7,5,573,11.87,9322272.04,9201784.92,46,3,,50,3,131 +sha256,board,6,ok,7,5,573,3.59,1684567.93,1564101.32,39,0,,40,0,131 +sha256,board,7,ok,7,5,573,10.3,8557388.52,8436912.38,44,0,,45,0,131 +sha256,board,8,ok,7,5,573,12.69,10053979.06,9933487.34,48,6,,56,6,131 +sha256,board,9,ok,7,5,573,11.19,8436296.91,8315821.55,42,2,,45,2,131 +sha256,board,10,ok,7,5,573,9.69,7965055.39,7844588.67,37,6,,44,6,131 diff --git a/results/intermittent/sha256/schematicO3.csv b/results/intermittent/sha256/schematicO3.csv index ed1c1bf9..f9a5d1a0 100644 --- a/results/intermittent/sha256/schematicO3.csv +++ b/results/intermittent/sha256/schematicO3.csv @@ -1,11 +1,11 @@ benchmark,capacitor,trace,status,region_boundaries,compilation_time_ms,profiling_time_ms,replay_seconds,execution_time_us,wait_time_us,saleae_wait_count,saleae_wait_deaths,runtime_region_boundary_calls,runtime_wait_count,runtime_recovery_boots,result -sha256,board,1,ok,6,2,1008,4.69,2533685.53,2431750.36,33,1,,35,1,131 -sha256,board,2,ok,6,2,1008,4.22,1647106.81,1545173.7,32,0,,33,0,131 -sha256,board,3,ok,6,2,1008,4.6,657337.08,555405.61,32,0,,33,0,131 -sha256,board,4,ok,6,2,1008,11.19,8636676.93,8534735.6,32,2,,35,2,131 -sha256,board,5,ok,6,2,1008,8.71,6258860.66,6156923.79,32,2,,35,2,131 -sha256,board,6,ok,6,2,1008,3.4,1625429.1,1523500.72,32,0,,33,0,131 -sha256,board,7,ok,6,2,1008,7.28,5540701.11,5438769.75,32,0,,33,0,131 -sha256,board,8,ok,6,2,1008,8.2,5523271.75,5421332.62,32,3,,37,3,131 -sha256,board,9,ok,6,2,1008,11.0,8225261.47,8123322.34,33,1,,35,1,131 -sha256,board,10,ok,6,2,1008,9.59,7895315.85,7793382.43,32,6,,39,6,131 +sha256,board,1,ok,6,2,582,4.6,2537746.16,2435763.04,32,1,,34,1,131 +sha256,board,2,ok,6,2,582,4.19,1676273.36,1574290.42,32,0,,33,0,131 +sha256,board,3,ok,6,2,582,4.57,671581.74,569592.21,32,0,,33,0,131 +sha256,board,4,ok,6,2,582,11.18,8676223.03,8574237.75,32,1,,34,1,131 +sha256,board,5,ok,6,2,582,8.81,6286784.13,6184799.72,32,2,,35,2,131 +sha256,board,6,ok,6,2,582,3.39,1604823.03,1502843.74,32,0,,33,0,131 +sha256,board,7,ok,6,2,582,7.3,5686581.39,5584600.03,32,0,,33,0,131 +sha256,board,8,ok,6,2,582,8.19,5511616.6,5409624.49,32,3,,37,3,131 +sha256,board,9,ok,6,2,582,11.1,8323495.34,8221513.19,32,1,,34,1,131 +sha256,board,10,ok,6,2,582,9.67,7896366.1,7794383.12,32,6,,39,6,131 diff --git a/results/intermittent/summary.csv b/results/intermittent/summary.csv index 5da3c1d6..0b588ede 100644 --- a/results/intermittent/summary.csv +++ b/results/intermittent/summary.csv @@ -359,46 +359,46 @@ sensor_fusion,schematicO3,7,ok,yes,yes,613,613,15,0,2070533.0,2037389.71,14,0,3. sensor_fusion,schematicO3,8,ok,yes,yes,613,613,19,0,927987.6,894840.14,17,0,3.58,1 sensor_fusion,schematicO3,9,ok,yes,yes,613,613,15,0,3346582.54,3313442.26,14,0,6.08,1 sensor_fusion,schematicO3,10,ok,yes,yes,613,613,12,0,152986.94,119850.22,11,0,1.7,1 -poly1305,milp,1,ok,yes,yes,68,68,132,4,10185522.5,9691945.98,127,4,12.3,2 -poly1305,milp,2,ok,yes,yes,68,68,131,2,9704329.28,9210732.93,128,2,12.21,2 -poly1305,milp,3,ok,yes,yes,68,68,129,1,5158572.24,4664948.59,127,1,9.09,2 -poly1305,milp,4,ok,yes,yes,68,68,133,5,36678855.67,36185245.19,127,5,39.17,2 -poly1305,milp,5,ok,yes,yes,68,68,138,9,29774359.11,29280767.41,128,9,32.38,2 -poly1305,milp,6,ok,yes,yes,68,68,131,3,11922830.53,11429242.57,127,3,13.78,2 -poly1305,milp,7,ok,yes,yes,68,68,128,0,22962988.22,22469397.29,127,0,24.69,2 -poly1305,milp,8,ok,yes,yes,68,68,148,18,28597603.49,28104006.68,128,18,31.2,2 -poly1305,milp,9,ok,yes,yes,68,68,139,10,33339672.33,32846074.15,128,10,36.09,2 -poly1305,milp,10,ok,yes,yes,68,68,152,24,31671427.12,31177854.23,127,24,33.38,2 -poly1305,rockclimb,1,ok,yes,yes,68,68,322,9,23532335.06,22746348.91,312,9,25.58,4 -poly1305,rockclimb,2,ok,yes,yes,68,68,407,7,27996715.05,27210578.99,399,7,30.6,4 -poly1305,rockclimb,3,ok,yes,yes,68,68,651,6,24230100.76,23443576.48,644,6,28.17,4 -poly1305,rockclimb,4,ok,yes,yes,68,68,518,0,116068284.53,115281980.76,517,0,118.62,4 -poly1305,rockclimb,5,ok,yes,yes,68,68,407,25,79376036.5,78589878.42,381,25,81.89,4 -poly1305,rockclimb,6,ok,yes,yes,68,68,383,6,32610174.65,31824062.98,376,6,34.47,4 -poly1305,rockclimb,7,ok,yes,yes,68,68,385,0,60110341.36,59324252.29,384,0,61.71,4 -poly1305,rockclimb,8,ok,yes,yes,68,68,564,55,85522662.27,84736258.39,507,55,88.1,4 -poly1305,rockclimb,9,ok,yes,yes,68,68,362,0,83403334.19,82617315.39,361,0,86.21,4 -poly1305,rockclimb,10,ok,yes,yes,68,68,386,57,75011310.64,74225274.7,328,57,76.79,4 -poly1305,schematic,1,ok,yes,yes,68,68,269,8,20228395.28,19538872.67,260,8,22.21,4 -poly1305,schematic,2,ok,yes,yes,68,68,281,5,20345723.31,19656161.52,275,5,22.9,4 -poly1305,schematic,3,ok,yes,yes,68,68,335,3,13011525.95,12321853.67,331,3,16.91,4 -poly1305,schematic,4,ok,yes,yes,68,68,298,1,68901889.17,68212277.06,296,1,71.4,4 -poly1305,schematic,5,ok,yes,yes,68,68,291,19,60779195.02,60089606.19,271,19,63.31,4 -poly1305,schematic,6,ok,yes,yes,68,68,287,7,26862479.85,26172939.58,279,7,28.67,4 -poly1305,schematic,7,ok,yes,yes,68,68,276,0,43825711.54,43136162.81,275,0,45.58,4 -poly1305,schematic,8,ok,yes,yes,68,68,316,37,57766472.42,57076861.62,277,37,60.4,4 -poly1305,schematic,9,ok,yes,yes,68,68,301,20,68360575.75,67670995.74,280,20,71.12,4 -poly1305,schematic,10,ok,yes,yes,68,68,307,48,63054810.33,62365275.85,258,48,64.83,4 -poly1305,schematicO3,1,ok,yes,yes,68,68,185,5,13504204.79,12952900.15,179,5,15.59,1 -poly1305,schematicO3,2,ok,yes,yes,68,68,191,3,13844204.01,13292874.61,187,3,16.2,1 -poly1305,schematicO3,3,ok,yes,yes,68,68,241,2,9215343.01,8663916.14,238,2,13.07,1 -poly1305,schematicO3,4,ok,yes,yes,68,68,189,0,50594541.07,50043200.82,188,0,53.1,1 -poly1305,schematicO3,5,ok,yes,yes,68,68,214,14,43454015.59,42902638.26,199,14,46.01,1 -poly1305,schematicO3,6,ok,yes,yes,68,68,207,5,20099002.63,19547656.33,201,5,21.92,1 -poly1305,schematicO3,7,ok,yes,yes,68,68,191,0,32952166.26,32400833.43,190,0,34.69,1 -poly1305,schematicO3,8,ok,yes,yes,68,68,244,28,43960866.03,43409458.28,214,28,46.51,1 -poly1305,schematicO3,9,ok,yes,yes,68,68,203,7,48355517.26,47804185.29,195,7,51.09,1 -poly1305,schematicO3,10,ok,yes,yes,68,68,216,33,43482013.03,42930674.25,182,33,45.21,1 +poly1305,milp,1,ok,yes,yes,68,68,132,4,10187580.04,9693839.97,127,4,12.28,2 +poly1305,milp,2,ok,yes,yes,68,68,131,2,9764689.68,9270900.14,128,2,12.29,2 +poly1305,milp,3,ok,yes,yes,68,68,129,1,5188182.16,4694380.68,127,1,9.09,2 +poly1305,milp,4,ok,yes,yes,68,68,136,8,37325521.46,36831746.63,127,8,39.81,2 +poly1305,milp,5,ok,yes,yes,68,68,138,9,29736633.32,29242854.36,128,9,32.2,2 +poly1305,milp,6,ok,yes,yes,68,68,130,2,11951776.2,11458008.3,127,2,13.72,2 +poly1305,milp,7,ok,yes,yes,68,68,128,0,22946817.75,22453028.14,127,0,24.69,2 +poly1305,milp,8,ok,yes,yes,68,68,148,18,28644861.5,28151074.6,128,18,31.21,2 +poly1305,milp,9,ok,yes,yes,68,68,135,6,33416389.69,32922610.5,128,6,36.21,2 +poly1305,milp,10,ok,yes,yes,68,68,152,24,31641792.92,31148027.46,127,24,33.41,2 +poly1305,rockclimb,1,ok,yes,yes,68,68,323,9,23577696.45,22790796.63,313,9,25.68,4 +poly1305,rockclimb,2,ok,yes,yes,68,68,417,7,28093586.12,27306524.77,409,7,30.69,4 +poly1305,rockclimb,3,ok,yes,yes,68,68,673,6,24661288.7,23873789.18,666,6,28.59,4 +poly1305,rockclimb,4,ok,yes,yes,68,68,525,0,108201901.69,107414611.84,524,0,110.69,4 +poly1305,rockclimb,5,ok,yes,yes,68,68,408,26,80639172.96,79851963.23,381,26,83.18,4 +poly1305,rockclimb,6,ok,yes,yes,68,68,385,7,34494712.52,33707541.61,377,7,36.28,4 +poly1305,rockclimb,7,ok,yes,yes,68,68,384,0,61024424.45,60237267.32,383,0,62.72,4 +poly1305,rockclimb,8,ok,yes,yes,68,68,566,57,88664771.32,87877331.34,507,57,91.28,4 +poly1305,rockclimb,9,ok,yes,yes,68,68,365,0,85865285.34,85078159.97,364,0,88.61,4 +poly1305,rockclimb,10,ok,yes,yes,68,68,398,60,78811841.43,78024647.74,337,60,80.52,4 +poly1305,schematic,1,ok,yes,yes,68,68,267,8,20170911.0,19480895.31,258,8,22.27,4 +poly1305,schematic,2,ok,yes,yes,68,68,285,5,21022394.67,20332306.19,279,5,23.57,4 +poly1305,schematic,3,ok,yes,yes,68,68,349,3,13153955.91,12463715.27,345,3,17.07,4 +poly1305,schematic,4,ok,yes,yes,68,68,285,1,68947698.03,68257533.0,283,1,71.49,4 +poly1305,schematic,5,ok,yes,yes,68,68,291,19,58993955.94,58303752.69,271,19,61.43,4 +poly1305,schematic,6,ok,yes,yes,68,68,276,5,26940858.79,26250687.0,270,5,28.81,4 +poly1305,schematic,7,ok,yes,yes,68,68,274,0,44827211.59,44137007.48,273,0,46.57,4 +poly1305,schematic,8,ok,yes,yes,68,68,328,37,57818212.09,57127883.5,289,37,60.48,4 +poly1305,schematic,9,ok,yes,yes,68,68,302,20,70840249.21,70150011.97,281,20,73.58,4 +poly1305,schematic,10,ok,yes,yes,68,68,306,48,63081158.17,62390999.62,257,48,64.79,4 +poly1305,schematicO3,1,ok,yes,yes,68,68,184,5,13525051.64,12973361.23,178,5,15.59,1 +poly1305,schematicO3,2,ok,yes,yes,68,68,196,4,16302426.25,15750694.85,191,4,18.9,1 +poly1305,schematicO3,3,ok,yes,yes,68,68,244,2,9219188.3,8667387.05,241,2,13.09,1 +poly1305,schematicO3,4,ok,yes,yes,68,68,190,0,53048626.8,52496920.57,189,0,55.58,1 +poly1305,schematicO3,5,ok,yes,yes,68,68,211,14,43480024.6,42928315.61,196,14,45.98,1 +poly1305,schematicO3,6,ok,yes,yes,68,68,206,4,20171317.52,19619672.63,201,4,21.99,1 +poly1305,schematicO3,7,ok,yes,yes,68,68,197,0,34342645.69,33791013.11,196,0,36.09,1 +poly1305,schematicO3,8,ok,yes,yes,68,68,248,30,46965229.35,46413517.98,216,30,49.59,1 +poly1305,schematicO3,9,ok,yes,yes,68,68,199,3,48406728.22,47855108.21,195,3,51.18,1 +poly1305,schematicO3,10,ok,yes,yes,68,68,217,33,43466849.43,42915232.63,183,33,45.09,1 cuckoo_filter,milp,1,ok,yes,yes,4048,4048,13,0,175871.02,130232.53,12,0,2.3,3 cuckoo_filter,milp,2,ok,yes,yes,4048,4048,14,0,651645.92,606004.55,13,0,3.22,3 cuckoo_filter,milp,3,ok,yes,yes,4048,4048,16,0,233521.49,187876.87,15,0,4.2,3 @@ -439,46 +439,46 @@ cuckoo_filter,schematicO3,7,ok,yes,yes,4048,4048,22,0,3485738.4,3428082.09,21,0, cuckoo_filter,schematicO3,8,ok,yes,yes,4048,4048,25,1,2395531.47,2337868.51,22,1,5.01,5 cuckoo_filter,schematicO3,9,ok,yes,yes,4048,4048,20,0,3428663.78,3371012.52,19,0,6.2,5 cuckoo_filter,schematicO3,10,ok,yes,yes,4048,4048,22,3,3968274.66,3910620.9,18,3,5.73,5 -sha256,milp,1,ok,yes,yes,131,131,18,1,872692.95,773372.19,16,1,2.99,8 -sha256,milp,2,ok,yes,yes,131,131,18,0,746531.66,647203.93,17,0,3.3,8 -sha256,milp,3,ok,yes,yes,131,131,18,0,343609.96,244282.74,17,0,4.24,8 -sha256,milp,4,ok,yes,yes,131,131,19,2,5237944.71,5138618.63,16,2,7.7,8 -sha256,milp,5,ok,yes,yes,131,131,18,1,3185576.5,3086253.34,16,1,5.7,8 -sha256,milp,6,ok,yes,yes,131,131,17,0,1135516.34,1036190.25,16,0,3.0,8 -sha256,milp,7,ok,yes,yes,131,131,17,0,3093229.95,2993908.11,16,0,4.78,8 -sha256,milp,8,ok,yes,yes,131,131,20,1,2411920.61,2312595.77,17,1,5.02,8 -sha256,milp,9,ok,yes,yes,131,131,19,1,3438962.32,3339635.91,17,1,6.19,8 -sha256,milp,10,ok,yes,yes,131,131,20,3,3993632.56,3894308.92,16,3,5.7,8 -sha256,rockclimb,1,ok,yes,yes,131,131,74,2,5137376.57,4933454.62,71,2,7.22,11 -sha256,rockclimb,2,ok,yes,yes,131,131,99,1,5598049.91,5394087.42,97,1,8.14,11 -sha256,rockclimb,3,ok,yes,yes,131,131,172,1,4962880.96,4758793.77,170,1,8.9,11 -sha256,rockclimb,4,ok,yes,yes,131,131,130,0,24433894.22,24229894.12,129,0,26.92,11 -sha256,rockclimb,5,ok,yes,yes,131,131,98,6,18639535.11,18435558.92,91,6,21.2,11 -sha256,rockclimb,6,ok,yes,yes,131,131,91,1,6614513.14,6410557.03,89,1,8.41,11 -sha256,rockclimb,7,ok,yes,yes,131,131,93,0,14866982.92,14663027.36,92,0,16.63,11 -sha256,rockclimb,8,ok,yes,yes,131,131,138,12,19379136.53,19175102.42,124,12,22.01,11 -sha256,rockclimb,9,ok,yes,yes,131,131,91,0,20831192.41,20627229.82,90,0,23.54,11 -sha256,rockclimb,10,ok,yes,yes,131,131,87,12,15897152.83,15693213.53,74,12,17.61,11 -sha256,schematic,1,ok,yes,yes,131,131,38,1,2591380.8,2470999.84,36,1,4.67,7 -sha256,schematic,2,ok,yes,yes,131,131,45,0,1919376.92,1798982.98,44,0,4.41,7 -sha256,schematic,3,ok,yes,yes,131,131,61,0,1081572.08,961152.75,60,0,4.98,7 -sha256,schematic,4,ok,yes,yes,131,131,49,1,11287201.05,11166797.55,47,1,13.73,7 -sha256,schematic,5,ok,yes,yes,131,131,46,3,9299736.14,9179338.59,42,3,11.82,7 -sha256,schematic,6,ok,yes,yes,131,131,39,0,1682344.67,1561951.92,38,0,3.51,7 -sha256,schematic,7,ok,yes,yes,131,131,45,0,8572265.81,8451872.44,44,0,10.31,7 -sha256,schematic,8,ok,yes,yes,131,131,56,6,9280862.76,9160452.13,48,6,11.93,7 -sha256,schematic,9,ok,yes,yes,131,131,41,1,8422957.74,8302569.37,39,1,11.22,7 -sha256,schematic,10,ok,yes,yes,131,131,44,6,7966946.58,7846555.89,37,6,9.73,7 -sha256,schematicO3,1,ok,yes,yes,131,131,35,1,2533685.53,2431750.36,33,1,4.69,6 -sha256,schematicO3,2,ok,yes,yes,131,131,33,0,1647106.81,1545173.7,32,0,4.22,6 -sha256,schematicO3,3,ok,yes,yes,131,131,33,0,657337.08,555405.61,32,0,4.6,6 -sha256,schematicO3,4,ok,yes,yes,131,131,35,2,8636676.93,8534735.6,32,2,11.19,6 -sha256,schematicO3,5,ok,yes,yes,131,131,35,2,6258860.66,6156923.79,32,2,8.71,6 -sha256,schematicO3,6,ok,yes,yes,131,131,33,0,1625429.1,1523500.72,32,0,3.4,6 -sha256,schematicO3,7,ok,yes,yes,131,131,33,0,5540701.11,5438769.75,32,0,7.28,6 -sha256,schematicO3,8,ok,yes,yes,131,131,37,3,5523271.75,5421332.62,32,3,8.2,6 -sha256,schematicO3,9,ok,yes,yes,131,131,35,1,8225261.47,8123322.34,33,1,11.0,6 -sha256,schematicO3,10,ok,yes,yes,131,131,39,6,7895315.85,7793382.43,32,6,9.59,6 +sha256,milp,1,ok,yes,yes,131,131,18,0,894845.76,795431.21,17,0,2.89,7 +sha256,milp,2,ok,yes,yes,131,131,18,0,773747.61,674329.95,17,0,3.29,7 +sha256,milp,3,ok,yes,yes,131,131,18,0,343721.06,244296.01,17,0,4.29,7 +sha256,milp,4,ok,yes,yes,131,131,20,2,5243781.25,5144352.97,17,2,7.79,7 +sha256,milp,5,ok,yes,yes,131,131,18,1,3202298.09,3102880.09,16,1,5.71,7 +sha256,milp,6,ok,yes,yes,131,131,17,0,1139104.97,1039680.93,16,0,2.99,7 +sha256,milp,7,ok,yes,yes,131,131,17,0,4425226.83,4325807.29,16,0,6.19,7 +sha256,milp,8,ok,yes,yes,131,131,20,1,2411641.89,2312224.25,17,1,5.09,7 +sha256,milp,9,ok,yes,yes,131,131,18,0,3434232.57,3334813.94,17,0,6.19,7 +sha256,milp,10,ok,yes,yes,131,131,20,3,3975832.58,3876411.94,16,3,5.6,7 +sha256,rockclimb,1,ok,yes,yes,131,131,75,2,5164089.19,4959726.85,72,2,7.28,11 +sha256,rockclimb,2,ok,yes,yes,131,131,98,1,5613684.68,5409275.76,96,1,8.17,11 +sha256,rockclimb,3,ok,yes,yes,131,131,177,1,5014394.38,4809875.8,175,1,8.81,11 +sha256,rockclimb,4,ok,yes,yes,131,131,134,0,26989786.33,26785343.12,133,0,29.41,11 +sha256,rockclimb,5,ok,yes,yes,131,131,100,6,18676062.13,18471648.27,93,6,21.11,11 +sha256,rockclimb,6,ok,yes,yes,131,131,88,1,6639079.04,6434704.45,86,1,8.4,11 +sha256,rockclimb,7,ok,yes,yes,131,131,96,0,15550089.44,15345665.4,95,0,17.31,11 +sha256,rockclimb,8,ok,yes,yes,131,131,136,12,19405891.14,19201427.87,122,12,22.01,11 +sha256,rockclimb,9,ok,yes,yes,131,131,94,0,20824114.54,20619733.05,93,0,23.58,11 +sha256,rockclimb,10,ok,yes,yes,131,131,90,12,15897202.4,15692824.84,77,12,17.59,11 +sha256,schematic,1,ok,yes,yes,131,131,37,1,2605644.45,2485182.62,35,1,4.69,7 +sha256,schematic,2,ok,yes,yes,131,131,44,0,1926623.79,1806156.19,43,0,4.49,7 +sha256,schematic,3,ok,yes,yes,131,131,61,0,1109375.75,988873.54,60,0,4.99,7 +sha256,schematic,4,ok,yes,yes,131,131,47,0,11305510.09,11185032.66,46,0,13.78,7 +sha256,schematic,5,ok,yes,yes,131,131,50,3,9322272.04,9201784.92,46,3,11.87,7 +sha256,schematic,6,ok,yes,yes,131,131,40,0,1684567.93,1564101.32,39,0,3.59,7 +sha256,schematic,7,ok,yes,yes,131,131,45,0,8557388.52,8436912.38,44,0,10.3,7 +sha256,schematic,8,ok,yes,yes,131,131,56,6,10053979.06,9933487.34,48,6,12.69,7 +sha256,schematic,9,ok,yes,yes,131,131,45,2,8436296.91,8315821.55,42,2,11.19,7 +sha256,schematic,10,ok,yes,yes,131,131,44,6,7965055.39,7844588.67,37,6,9.69,7 +sha256,schematicO3,1,ok,yes,yes,131,131,34,1,2537746.16,2435763.04,32,1,4.6,6 +sha256,schematicO3,2,ok,yes,yes,131,131,33,0,1676273.36,1574290.42,32,0,4.19,6 +sha256,schematicO3,3,ok,yes,yes,131,131,33,0,671581.74,569592.21,32,0,4.57,6 +sha256,schematicO3,4,ok,yes,yes,131,131,34,1,8676223.03,8574237.75,32,1,11.18,6 +sha256,schematicO3,5,ok,yes,yes,131,131,35,2,6286784.13,6184799.72,32,2,8.81,6 +sha256,schematicO3,6,ok,yes,yes,131,131,33,0,1604823.03,1502843.74,32,0,3.39,6 +sha256,schematicO3,7,ok,yes,yes,131,131,33,0,5686581.39,5584600.03,32,0,7.3,6 +sha256,schematicO3,8,ok,yes,yes,131,131,37,3,5511616.6,5409624.49,32,3,8.19,6 +sha256,schematicO3,9,ok,yes,yes,131,131,34,1,8323495.34,8221513.19,32,1,11.1,6 +sha256,schematicO3,10,ok,yes,yes,131,131,39,6,7896366.1,7794383.12,32,6,9.67,6 stringsearch,milp,1,ok,yes,yes,20,20,14,0,183881.2,141362.92,13,0,2.3,4 stringsearch,milp,2,ok,yes,yes,20,20,19,0,693636.08,651107.68,18,0,3.22,4 stringsearch,milp,3,ok,yes,yes,20,20,24,0,295217.57,252680.6,23,0,4.19,4 From 6026b393da44e365662c5256503ab7124c1608b7 Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 12:51:13 -0400 Subject: [PATCH 12/14] Regenerate plots after the sha256 and poly1305 re-measurement --- results/intermittent/normalized_time_box.pdf | Bin 32199 -> 32898 bytes .../plots/execution_time_10uF_normalized.pdf | Bin 44156 -> 44150 bytes .../plots/execution_time_50uF_normalized.pdf | Bin 46320 -> 46311 bytes .../plots/execution_time_5uF_normalized.pdf | Bin 44725 -> 44721 bytes ..._region_boundary_calls_10uF_normalized.pdf | Bin 44600 -> 44600 bytes ..._region_boundary_calls_50uF_normalized.pdf | Bin 43373 -> 42968 bytes ...e_region_boundary_calls_5uF_normalized.pdf | Bin 56972 -> 56972 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/results/intermittent/normalized_time_box.pdf b/results/intermittent/normalized_time_box.pdf index 9520620729218a7189c805659b9c65e87b8c3298..ddd4aa643c16044f70d0f08659f95290d2ff41ab 100644 GIT binary patch delta 28951 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 diff --git a/results/plots/execution_time_10uF_normalized.pdf b/results/plots/execution_time_10uF_normalized.pdf index 8083ea8933e957bd5259d400c0f37fc2c2d7af0c..9b6e0c96e87c7802d1d74c7189592f20f8289cae 100644 GIT binary patch delta 38739 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 rX8*96nIisSGe34beXDHhVE{V{LbM0 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 NHtyPW9Cu>l{{Yt#^QQm+ diff --git a/results/plots/execution_time_50uF_normalized.pdf b/results/plots/execution_time_50uF_normalized.pdf index 118d371c8cb06bbc5b19426b0351ccc29eb78ee5..68107c322df8490f417df728dc8ba6e05fab2927 100644 GIT binary patch delta 19111 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 b`+e2!>+kK8cb7-_#@lPnmMwcj32Xif;`Z6} diff --git a/results/plots/execution_time_5uF_normalized.pdf b/results/plots/execution_time_5uF_normalized.pdf index 154e1d57648f30c1751601e204f57e057f6cfe32..a7e7ce7e612265d52b33b3b09a350ab139656f71 100644 GIT binary patch delta 41123 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 WjgA=_XZuz|wj1u$(6Do|-}!%b#Iywf delta 41143 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 vI?y?>{hyD)) delta 50 zcmdmShiS(hrU_=M7DnbqMyBQ_CYoIOzWFIGi6yBD8ZK5w21aHEaJh}qch>>{id+vM diff --git a/results/plots/runtime_region_boundary_calls_50uF_normalized.pdf b/results/plots/runtime_region_boundary_calls_50uF_normalized.pdf index a0149e2024657ed7345e42f474b31caa632c7d36..a8477e7e4831203aaa61a8167dc14c44f79410e2 100644 GIT binary patch delta 37350 zcmZ^~by!s07d9-2AT22&p)`_`(g@Ps5+aBoAdTd}p#SKj&faU?_r3SVkbe#%NAS|U^!_=?ypUcAOAopLP=G}eHxF9N^~mFO)t zlTA43kYMMBi>tC}u9O}ZXZz)6hEY`q#aG=ier{tweqr3;6U?alfx5j5ksTd;rk+Vm<)m@ zdweNR6$NZqep_9NMk2g07IoolyES4%!QClI%TOEC_f3Nkr5C` zL3Gl-5P7JDgY1C{M1M?>&^dw@LM8RNE=Mn&+I)Aq8oO&hD(0XgRD>aEbUA9lo8;FY zr6=N1Fpq@Mk=t4k@i8c?Cj(b}4ur~-y9!GFud1T5Ee#?3U6U;R%Sc=?!aQiZM?L&LoaJ~)OB?Dvz0fcf}pX7SpU^| z5u^AYr_MM&L09;>I?c*`1N~0421W|d16sqLuMm>qt2rQ!|LARl!&)-{D1Q;U5u`R< z_`SBgNcW{_cgh~T>I`0-#iLQ?WK{nC7;kYs>}R-PLj_eUpnUco{6g=q_1WrahH3n! z_zy6Y|Dx6rd3JvV{kcP~f=-^E&o#v(E*qz#t;J{T)RgCju+S@Zu!%?&8+hZt(G6cg zN&!0bvpW4ALS8j}*PqH4fbef>6YDUsZKqSn9=SP){L2|k zp0W_s2ctreECXzO@zDj^spSGGF^=reNzw#E4gn@z@}xA5lGD%k@LR%^+C@K!`t!+m zCoMIG_n_GQd}t{2vYn4F9L5U%zIwZmu=1lajf>9oYz>Dq9eR6oWjOK_)?&bO0+ZjW zF<5fMCNyyzEO(};B@AM!@iwZexqfy7FCI^p!Ti|YDZ=IrPyLKwlh0p^?|(xM*c<|k zA+#1gWo(QWoqV|(4*GBC?TN5Krznf5+R7xnj+3u*!#MuL5_j60af;ycU>lrD_c457 z&P{qe@FMc-$M28JO*_or#xXeVUhT+_+9qYc?l7;fB%y*vUA71)tr3I=tNoZaPVCj> zUc%Jjf+Xt;XTI4SWr}$)b1g>_Cl~@8Mlu#2Z$V^Rx|p(JI0n8Ac0o6@kPN>kVdq~M zDkMCCPX{TIg<7r*KFCI@0=rfj{kUBSiKiLj%fm{?Z_MIQenXfBdr(||Fl!dU;OJXM zCHOn{jILAU(_I)0ZPV=JN7!GE)Y{J<4Lqr$cnr2qtNj4(S(Q0}Lh1uh7)HL}|6u+M zXWlM3ss3B1gb4m5;6}iK5{v7ro*R%kdzc%nf1^Rv;>FVzE`m#tv-=s6Av+!IlQm4k zk?{OppY%#0`mK>7`*jDg0M~^O1(kR2WSLl1y3r4q@4C?|088XkNIPzv^fHY$o^QD1 z44w#U&{11W!NfaPftH6rF%A9Poapqr6_!yI^R~86CYhABpD>~TBA`_Tg=}qfZ!5AOpo{l zTdW&TJ&qm}lX`NbP#ET%CNL&Qu`-e<`Fra>cql^WvuuJ)`1t}r1+8DCP^35XYPzVj zB7*LiJ9O2x+8U#a^U3O9xoczoN8gS?KXZwAwu*LK9ETof8%v}G7E((eDvFISlS3B& zd{NmhUD}S8j^Acv+FqV1AFq>(8d(3Hv^wpc&0r``2jb4a-S-G%V!|h;cYy$4B%o^} z#6>x5(BQEh1=2#nooiEiEMMh#9gJX{%J1(=@6l30la|I0HAU(=nR)mJDdgM7m!jF< z{iw9IB}*6q17;mTr{~8OxKSWG<_rt(j1FL90M^MrWpYK2k5v2;__P(p{*LY%JAFO{ zl^$zeDWPl5#{+qmy3z}41Bq-eOwj6Wr30CMFjM}cwT$Cjdd7=fN?!Bx@0DIS0Z2&C zE72aYBLnd-!gb_;hV5;&@NHP`EB1N~d5v3xBEd#A5DGf*c&-6Tj8lLxx2`mz2FMg08l9QW&Dhq@j&h5DE3SBZL3gI~+S)5hi6LF#{bBw7o5XnL zzpwK3K!x_Dnr___6OFJ5CqPQu!}u+9LKiBxu6S-%b497H6_t0zr|zn=$v1uxb--?q7!j+n^wFU$OJd6nn1Bc9PT?5MA)4%B;G$$7Da zvL0~7ABi|H9dNPpG=m{r4dymk?PDaJC+>^z4VAm5Z_n!5$!*VHg-UT{;51%Ms_%?Q zWm)7Dos$|^gt*eF4a;dTm!$;d4hB`aq;F^P?J@}+aLv0{TJu|juQxkS^I7=0- zNMbL*KKR4geZ-?#z8+U-ZgWbwXI})CJBQX1bM?JxBVXVN&smhbaAc97>i+%RQsdr` z=a5Nvs0v-Iwp6Fu92#YK8LW?Z(~b(R27Zs4UmbEaDZzeOhYLWMsM1$CF@O5AhwdKI z-Uu%coU})r`^oRW4U_Ero(e{&#hy$NwYuzzM*C+dJ0L82+L;4>!9#A z)Pa{@*8Wi25%3(onj@^zPK&hOsV^y zr%JAs{7|>m75b!XD%`ZseMB_xXcuU|^dQM-efG6sDJAWyW@%oQ{1Vzs%PcSIyjJhX zV(a|}RRnWIYI6NYXL4sVm5nOVS92!GwY`1pVg zF<-Q)Q@$w~j#76`V|B>NM!cz#V$#bl9*6KTp6WJQX|=9G!=k$Lw5+;Bjl(J7qF3*g zZc<&N>+-8|FjJzP(1n>+r`R8&oCkKMP8`O>p4iEa^%TldEe+wPr*R(%@f5DD?L#a{ z>6rOwcUrcN6%2}7vj3cZ6i*JC#ZU!U)s!O>;Y{i_#f=Jw%Pk*DbI1z|`$MlIW=1K& zfhd_L*;1ca`=v#=n=T1%;}5QB#=DoRU)ZjJJMjHX-M@*JR*K~qkYk&tOkm5a{CasJ zjhJxggb8a{mJ^tjr$w??3!k^d+8I1+sYHQ z8zF&y$>ZzP^N;b7{KPCGMF)&cSj% z_}zJouBPv+#lWS=mroK!R9jO2WMP%3C->*$Mv4zsdwGASP;CVeRn2kTUzCmiNnci^ zxO>I_4Z9HZ@!^^Fs28}s!fsTalmnhJ2}t$AL<9$yG}rw%1b)pH@;g_=dllA z!iZKv8I4LQjo!i7n?E+#mjGU_NrZ7$G zXpMrPb%1<~SJbwW?dSug@I(3_hH~MLU39t)qr7}hb`kCt;N+E>U2En!M2W!_@sY!( z>^zGgmb?$`bCk|r4<6teuSN*kD`P_#=07Gk)zYVZ@Ah^)#M7{VQP)V* zQImn`EV}2lmyyq)*Q_s5W(FLovVzZdPW}EOlPupa`hya2)p6@8Bu}{43}t^%P}^Pl zh-8e&HT9qPQ$5KD%WjRnB6|WXqoD<%TO~5q@$0JCdhse{K0BWP=S5gepSz{XL>0MJ z1lf~}J*3w`i1GwX=BVkp$r~K)ax%8=Sv?6#;dM+s$RW3iKA+0NHfZ1nvo5jO`?7d< z^?|5TTas6yqkH)?Lc;u|FfOin-Ng%~2K5i<9lGh!#d6r{urokK3dd$56il4e%jw@S z6RD<{r7`$@yvtg zSO~v_CFdUUbsi+JYUlec=N{hy@cBXqOSz@MmT;844zIFia#-`h{g(B8D~O!SVl4`z zg~;#uh#e2A54=T&e@)T&kkNN=3K;n@z$r^Z7_ezkzGs}uP=^;cQgZxV)l0*fMg=T< z%g({>bLM+Ru!T{;(txh3;YdR$+bf;YWh~5iXN%URDh5!@g^B$)?xSJvf*X*F{Tk4V z{TlI#{nlw#^j%Zz`P$X*hJ7-1?qS^gPYSQ9AGmXcY;9rXenxqOUwnv(=N@*g)Vq^| z<%a^(91`sR^xDt*mptzkVI9W7bfHqJI&7mp?Z&}(y%sLXiYG!0y#Ag)Ko_wS!UV4C zxK7q!1^xr(!P$l1fNjbWpOHZ-y#;x-ztAncBI`>U@@$D*Lu1~K^T7w4B130ur(vCA zq2D1)aU)hN@9R;xOrgFGB2S%dKo}y&F7!3tchSGrFx<&9@}5Q$a5ZJm(|J{^8oG}E z{lHFRh+z!?`LprWa!;!8F#+~08EM;+= zg>^wJ{H0;l0;OO7S#i5x_#|nKjfas1=py-4>m8jrY8_QPLQ6QK0JwiC!az%u z3cZf|GnpCuR_NeForlXz;4eE|s){HmF!Lzrb#%<#t!Y@I3VI5U8hL~wC@?X`igA%a0Zw;YMOIo60wqQw4 zAoNVA2?(sG0gSsC+X@@kLHZ6J zxrQAM`I$<@r*G=2z+JRS;t;K3G~YU+(Z3)j(saLcp`zUQf&g9U;dWCWUR7oexN2eq zSC)dH6Bw$btVDce{*kbT#-8~U1!xJ};WKcfJ)?J=CBH`2cYKHmrzi;n*1>4y{HoFD z704U(4O9w21D68!Kt6ZG@>?C~-Bkrv^j|Rr+CZCBPZq=|R2l7gqmKu$X+I|P)Nv=F z%pG3-5mmAAhObx{izQF<&JXxQ;&;u1_wZevj^X;)+_M zNx6G^L0((w|yPQ|I;kSr7bk zqoLBRV2X3Z#QBf?V`&Wwgh{chme=%M?77ix!m-Awi*ZtUBCU_(044hD6TaO)-CrY= zQ#QCWXYVbo1Wi3*>YgboKC!v%sQsZ& zP)GNpy9?kk=M~x_aaR+74n^$)NagNqHQF2FLB;%=)Og7u)Y9_hI9l;en$E^S=Sq`T+^e2&lVo$B zQL&k*hiJihW%jMoV?buu3?25$szsyC+L${E#n?1fFN9H6TLJWG8PKn$l&N;fQ!>IPS??C+s7fP zWc#OhrjmZ6`DQaIXi6U^H`PQNBKBIe(8|Vxf7bfFu5~@0M`}peFuXC z-DaN&o3jY|An|vP7$@_Ek(mjY8zJ}9-h6325ZFYeFwfvq$D?URLXv1kqJH0uBuc!1%(-dgeZx3C_o>gT% zBiEy;qi~~sA4r1a~_eD6@pA$fOH%8&Pu(v06NP_{zxN(^WBugEz^ixyhvN;wd7t>o z7S^BYB10BQ32nf_I5Losy=_J^`STmPud!2jZ(mM{GO3E&@A|G+UIa5Zii@ld`7Qk! zmx_;Z6kAzw_-8HA81{8&Z5iZA2pl%^7TaPdLr^Jub*#7Q&EAOF8ozBxaBT2LG4s$a z&xDvw@!(x=3bV5CCwuyfXLwI_BqYo(qKS{sog%|n46ei`BYrbUk=P2Z>bk{4~`=sx2@ALWM zW^09tgbHw7bLg4?@m1Gt_d2~ptvr5CK{SL}fs_-wcE(O`to71zH^;aK&+_P%;Is$C z!3jzHZOThu4@#j+6?^8(K{F=|5PA!*%_S|)g=5jq>BiAFuOPw^SOvA6wjNQTWshAm zEfl}O-Ka@blrKbOyQiT|%%xNQzE8gOE8|n~R1XQB3XpmNDRAj=c7v#(^S74GIQhr& zkUdqKeOa=ws1WZPM_@+t^dj~4l!O4s5`ZLucBAI$uc zt8lG22jA8Vdcf!rCKXZl`3>na>*qnwjky;B`haVy7dXdC*x03cozCxm#ufic;%ZIe$>@yYVNU9e$Io}zNBb&q76Rk`r<{O-TF5l7} zL-Bx{+qN2|)2i|CK2bWMy2Epl%J8YO0*S3WCq4y&V~IIIyh-YPEB`}Q>w?{lyc#|Q z<5Tq%B|k3g4Sq`z!!g5y{MX+KhhrqyWnq2M@A~qbOt`)c%S6K44- zTOdXdGewr7Hb8ahnASsIo}9>j!-l@)lJhV&Cu;MJEW@xvl-l<{PaW0^52m>KA!vZL z#vo4>SD*f3^x`-IhLhbG>NlrjLIcOeSuK2mr~i}i?j}!_VBg$gsqEeiPyJ`b7s^_Z zMGwx)bE?M$1AM=iFo;Kh>X|0Ojbm7Lof3}Fp*|QVaPNG z-Ra9BY^j6e&uzM|*pzb(%i&N01JFbTjV~|oh)*~i(y=-%E#r*m>-P(nJWbbHAf-vC z&eITt48LHleX@$FbBaY4bq#A~Xu9Q++?J-sIO;g}YSUj}BoM)`mV~=)K_N%WvV~6Y zv=6%0FS`+lhZB5(;F43-zA5d&%(8pC7@JKDIu+E69_|~=+{7gX+5-O?)5FJc7TsS_ z5%R3N2xBBU!6`Ws2FO3O-*I=DSr`YQcr6qy43GiVo;yNSsm%RVWlP!SIQpVe8G(qs zD`#_wSj@!v=MPbk5LWKhNryP|`gIaSX?wN(Ss5haP9XvqN8`J9AzQLOqC5347@`5v zQH1e=HcX(JZ|e2?f#O4WSlsVIH@K8BWs;x@9&jvjGj;s$3~ zMfzl|lkx+M^-YAd5Zb{bn0>fTgg1eYv7V$wl~BifZ=|r}*h3>%S|%I=dXVaVlA@;a zq~Sg}YSe%wQ@eC~09#qSj3~LzSiEPRTE_?lWmqucCxGzGualTyrIfRajZ4(ygfTw# z{iS~2df1C)8l!Pyn}E#6Y5x{hV)l~nAs-+LdPNZ&j)`9Vdc{0WX&jDdH5_#D+TZ-b z{jd$*mb?;7`EbX|3JT$qkCGUYwvsp4{W3-rLQq+-W}EunvRIWVFM>~pZJ;E29}sky z53o+D36M6XAzOXE`u^A0E#dDL`tP2&xQ{yDlKsB@?mcOg8VG3$c2wKUyrJY*`&E1_ z*(fRmiRefce*eQm)Fnj$WWl%9E!eRsH^0|kSxLl$ggIHm$&*-Ikz5er+k}xs+(qt^ zf+o^9<3Zos`;wA)1;3KEksSz`>)o@bC5K3j?9(8f>0P{=!A+~+Y6OHnqKuNH8!5ux z?{bOj9=hl}BqY=`e21WXhac96;Ex3N2c8MLsQ%FX<1+Fvi&LZ{X&J4f4}}!o)A6c2 z;~hUyzy@;05vh0w)K8oz%`{In7q!FnKd-CB1AZcm!NW-%CP+ndKA zR^XEK<13m?^h~ikXpTpIM^n$6A)rH+#&%pM!(~ghN6*vos;*={YOI=@&S+YcU-kG( zJqkM{ox&3R>4889tA3*$v<-7RMq+yPn<1)BuxZ3ZLh|3PdL+#75SA#SmqH330kG#L zp9m?6jE}r7MMg=-1Bd03t^Zu5t&%o<(`69zZ_5JBcbCX>!1}b)5hiygBk{QYUIBy} z^6MLdaV8jVo1I|AHW=1)sWdD0T6_+1`sE@2=xQEve1lITGHFZjo382Cx)|{VIM1h1 zsu!2k2No_Qnf65bB?0TMeD6Cjl_MpN8nxW@9Wo&yR(|^(nT*brlEm>7=WK;Cw_#Z_ zvA4ul$sYk1_%2r=IxjC$S$WKs8EXSW>?o3>qYyTE54k0&dnl0HoF9p*p2(2*4h6I3 zXBEeKcl;g2?;wBx7Wp-(O}ZT`pPswO?zj*Yko(*LeG#d*tcM9M70ZpFXH$>#JXK8l z4s?=UO|K;cWgm!y0@C}^kRtC7&uZIi-y#qt-*s_h7MbJZ8%9PQO8+)}BpHw72Et$Sx_kqY~pkIKhA$K6) zzYz2m^I7FTqNWo>*F-DpeSE!UaRq7&WMP~)UI)uCvcpWQIOtq(*(HehVE(xZ(n>vY zqzwNU*_l}E#%Dk97|Qhq`WWOHI%#xi?dUPD(`koH=-vi3)^1*WIc2A@bFbK0NU`Eg zcM4Y#Aa#kZ1D^_|UnPi^dXA51!zm>d zn`GxaqnKSb@UERJg@PKZF;`;vLiA*b$j_a7!)K8J>c=?#V0N@WkrUkbhO)CHO`}3e z&Hu>MPOxyrI!@Y-0l|8Kn{!dbF0FXlr#LikciIngmk+#`ZX;Zx1Wam$WSSb+#aBv< zqg+}DkA!HhHiQ^9Xb)Dhn#!6v%(~ZR3*Ao2B?d&D0l?`8dE{CUR zLj*Rwlf%L#>jZtHU+=G_e_{oaLbRG!8NqaAe}=X8S_1cvofwS@n(SPUQq#=Qw7b)Q z;^$EZV9ijLNGLuP%vwB#t?TOwrEfpt=&E(?IjYW09UqS#4Se9`o2<(ayN%Yc3;x;; z+C^(rXsLB=%MzV)TM|0AXjFi#t2OwkS8>8W#S|MkR*-x*Dy9N(R_j)m8Vh)GcL|ZZ z*kET1>>DK);JzFndoaZA-)l5MRPtGtx!%l54!=J7E_>- z5Ew*KY$XWu%t)C({S?-hg8y+>J?{wUog*{p-O7E;Uiw-o?y&bJ&L;6{I6QO8nR&U$I@T7g0u&Jc?m@n&6Ilm;tS6N$(dU9GCe3B4)CoM?sM>Tlw zH@~ZjoGch=?gRgD7XRh?@u{w`0=o8|9(?!-7lzsm4d#EWn1^c*_zS|4+sHT=N9z>d z%je8@SEPiv+Nd-%DnHxFoUT*E051z}t#?=OKx!qiHjNNV-!z!kEq=`n04114)f+t@j~s}VSf)|E$@jJN zU5j2&ESx%jleb>;0m0lHcq|eu^h?B?Sre{#P=UG4IvQvy5BQaNBtXU*nIHJKXhA`LuA*FZ3nC+91v4@N$iY?G2-<7& z11a%^b0pt-eK?^AzOo_=mq@d|N)`^*W{dW-FIv1}VGPBA)d-X}-=^JQWn$tIe=(tc z1up^!?_3q7nABCh7-<>Lp1;Ms_bKEb__E?Ok-CK6g8=72*VN;`@}|r{wKR7 zw{21?S@o0(+5`M@g%CitD4BU2DOtxIb~*2ekrEs9rJ8CJ;qGcNjaZQ$<-ev&fti+| zOJPYu!hq7hI}-F44FpRZw!H))IrWiv45op?V4{2LY0xx3fQ@oJAj9IvXV85~Tk$B( z<&@yQto~yLsJ|@?h|+ne-1Nv<^gI`(zCs$`h?AYPl(IIlloDV7D?=H6G6KFwCK+Ll zr*+^T|Dma!^nqHGzFX`!#HCXL?L7h;e7?rF*|ak!#20u>}`Xe;;r=D+D6j!uH z$z!g&rZ8icS~FFA>+~9_5sP@DMumU|(rvCbgX}X$RnY7#TBD5wWeM1Q`=3p$22g>= z5_zr1uHe%IDmA9!nUxfaTtq9fnYEOQbhrv%fsRr&>`c|VunQk`&i{ICcO_567pgMR zWq|jk-^G$D)^7JPiqDnAitLU{ztUyh(<0way)N2A2-8~WnN-*u&zFLzTI?)2Yu4;e zGsyN@>1i76A#KT=R**%cn^a;oAlW5U>vJwp`YCeOrd-O(QMssLPfd+9us`@nr90xP z>n-@N<1MO*5No0QPN@^)k%Vcy`-phnoWpILt0PaCBdc}jP`tu*-mXRRsQAW(BI%|3 z)G74qOl<wKo10uOz%K`a^ktc9lT@FdYgt~E zGtl+v8wS_&K$Gfu{4Hp|_|FzRwPSAiU5{9mWd&_TC9QB*BwMbQ30it-)I-J zvVI?_`GxDhM#u!(&R4zDMm}xrAc+yK_1s75aNzm)&e9v?fOa@VL1rh$U=9YK(=lOa(&nkpOb=HU~;C#F3ZOVo)Yc#LxC=jda+MPi99>of!aOqn{&_@pMd+ z3#lfFy>v~gTw3j-7xgB}5pP!EN@k5_XyX_g$?t~g4BOM>oxq)WuioUSQ14!0n>l|A zt{k^58K^`S6~I=wvuD7-Q1Weu>ASPdKy{x%6mFN)YwxM~j@v@0Vm>Z$qkxPNs05|1 z>^@9YB3@Iv{|?Y86^{S?m%*EH=!+ps30S?#ki4J&6wLFp$G;;6+uEC$Fa;Id>(BJR z5!`KVABO1&Ku2E=eDOI`0ua&-rTYYz?_ray_aM$>_ZIEJAQ}3rLWj z3OwD}ULv%!pifhY$JR&~_W4L0EPykYeINl?^nju2foyG``3R`Q77c%ijZj;pq9ST3 zTgs5U9~pu3r<*A+s_9{Mev~3D5m!04R}V0ms>2 z?;gC(Tm>GuqwP{@0`9JkWZX#6t?k;i_h9qp_aFmZ$FF%EeaGLScLcD_Af+Jz+we`4%ss`>9=y)aym~)*PeufPI25+c?FbYn zsm+^WTj0N82-zM(gA{C@Huule+FTe1dGEk!ukl_K`!#B_J8{JeQNN}@WM z7M4lP_C;7G)^ICsmzF~2_G-F+c$8n)h({p(jy&il$z zA^WxZMo|2}BRbz@s=N+#G&SIT=`o#O56u5ZVx*UjJ{CMMJe8U8^Afqk!5KVM0K$8p zUaw1BS^KS4Oc{C}-DQZN9^U+&&mb9ST5)ceTElgM4IyUWW>aD8MhaAgN-o$5x{omnhS&>5T0YW9baBN2Ul(jS*4ElEXmqT zdBoZs4z3ePpit@od8DH$SwmVQ5OPP~+aGDS1O^w;y~M^0!JiLc1J8_LfinYh0B!Ql zak&7^U&k>IK@SM2)dTWn7hSRjP{ugJ^}n{rOpF59ciq+!CU(pKf?T&4e^gYfY4eSY zRI{q@*~B5lR$xp=;?6xE7@V_nGL5Fn@>Tq4d3R}t{u%9FA zJ$1x{B9la*Jir(tSIjSdV4ObJUt3V1JC=V5w(?Gwzv~Y;zi8;(Een5=5}{ofdws?J z2_gxS++RTI@r)t5OXg*DMeyS@`976|QXrl7o7s`Fv zjTVZebglMUSevY5v)cnmq3S-({oAUPySscz5Qi5>^mf_1n61D7j{;5Jb>jT ziMg%YSI?tq-I_x>nA&b-EXn?G9gt(CuROXC2}+irg3^FqZUT%8YWMBo(6uRsXi#-r z8!YvHiQQK2(e?d&6j>(^4kj>Z<|;H^j-kG=lZ&9GTt*-dr6A6bkJ2UzURfK-kGf+8 zn9p*UW2o{`#231z7_9-1!j-BV43Tuj+cZ#%%vQ8g#jcqGro3SB%qC0JNUzBVN}O?} zr48mf##Ko{?BRE84AMT!A(Je{d4c0Zk86~OHDfm8A(J6SJz8eA)IPbgDxDc!Y*Y1| z?8-xd!WYSN@+UV#zng;x9{!R<R;mpOdVouBo&VIM~B> z^>xsB>0q%JqN_Gs@^y#dP<`V|V0u}vEj+PiX-l5r3FLKnGs9ag!PlDg)uo0j``Ag0 zIOk6I>|MD9%+ojr>~`mvY(dF&wb3q>Z&=TryvaR;N~CTJhle9Nn^QZJyA(Z0f9}CC zR!X_3I$7s{S=pu;Ic<;FWRp?t4~RsTcz=&}fkkP5p^m@F=%9wW$ar-@Y2}9&s3xk5 z^*q@lK_s%i?t&oHGb>AEvzK+3$8~q$^x7)rC^w8NiubLc^H?vdEI@HCW>GFsUHkN@)KQ-tZSF4t zx`8Tv%pYkW&rzcUW||3%Z=fdPHA=Ez!9MkG!7k;l>8)m!8udZ9w7Dn(6a}?_rXDIW zrIK0HhWRL1z=r*&qfRIuYx`_$n6VLIb#F z_+f`0Lh@cYA6*lu4QwtB2Jp}fPu5pKo6(YTe>L*(aUJ}f|-mzwYT8&Ce|kD&*vZ+sR2d7RJ#^xECi9$ayQ zXAint(TPb~ozW%bMDVMGWK=MbMXFgNcH+=L;Me8dwI8UzjO)R-o>o^aXVq0H7sBwZ zpUk!t6d&+Ksit01{}=fUk)BopkJ8l&#o0DeN)}p)i(9+iyI+s-2txbOHG-o+Dr8sr zFGdW6^qeZ|5P(fZq(MGbqdq?Csw9IY50RJ=w)g(1gb`1t!{(2`MCi`+&MT-@E30|% z_v-U@RZJ>$T}oQ+qS2L0bp(C^om;WHApmCuYd9U4zm~Hy_Ojx>qpp4S(BiHm+I_sh zNx@VqIsoGDhjq8;&zGIytfqIP3>ODQxJfL-bp!5$soME#G)8gK1n=$u8fuofH)+c~ zlKFFy4DunnMM`Ny{Xu6cL3I>Hup5~vHDiSv%IHFXW3B6#|@ z#sl%BE#ItX* zO@fYzW5MYLd;jboc{d0@foXzO2r(f`c)J+Lc7R79fdDq}tRE}0%Y?~)5wzlZP98Wt zYAy35?KAko7Lt-qdqzya9+%GzZ7Y*`_KOHEDl6G22jV%zz6Zhl5kYhd;l+8g_!p7Y zP7L=!pyqP^jMwgdMdwvywdd;MHv$-lsz=w=I>a;LfETg*sk*AG%E&-y#m)fGCE&x8 zZ?bvAz86HNWWRg0iGbC^$;@w&D>~amAIYbfOnV{L+GJTG%!iIXuU<^;Ls!l~G)KOOUsCEIv=)U>wqQ%nX}X{%35usc^||WD1j%oD4uu`y+_yZ0x~QH!KgPY)o3LMxzHG zP|$hy$CLz9s}C(h`aXpRxbijZWRoYRzo66ovKO-8@OHF#3@42kOSuh;z;z}DpRuQl z!j9@&-89Y@Mx3%obZ>*BNnXbG4Ac$+ z^8o-&nQzcYe9jV0?@=ubLv`f`S446j_k&@+F*(7MChQY>_&e>A;UH*s29*4`!Z-o<-}gt zv$sa0Y)g{5<}ql%%A~Nt$C|zPA&^?V-3-!Kyr=i!Ged0OHT?_2$F7nJa@w*g5oMY8P#x-Pp8uoj?N4K)hJd$22CDNh@xk-MFI`#~WY!yPqTfDyFiiEq z1$Hg31A{OW{h9FDjK*zl++4a~83*iHT|C>9mU>zigE1b`t2qDn<$=3*U-fvh$ zNXSJbH=t$FgCO?f_i0hzO)jPr4|*A@{T9W3pI3`ix3(zYA>e-ij1IgQvP;i%MU5;{ zjXymdcrw8r>4>Vw-FX;S8WC*+dGU2IWx zh7x*s#;lHRvKx(VrWV|)hlnVPob0D&4_AU4{?;)%2u)mpVE)l8-;RpP@2j44wtFB2 z3MMCJR3f*INMO9J9^~PFrNx;CT;i9ovoHbhyuj^YKITJk6G}^5!es_KEMo!~Ij^-@ z#ru(QDVoM6ruO>^vGo3IboM+)=16eAp2uXklT7z7G$X=Am?ENGXeLqi-!lb|2h^A8 zdwku(7fc%?KToXxP=7>EeIcXq$9$7X_{jVqK;z(waom0vQ9pwx7Z&l?+HFotz~d<3 z$%Vhig#i#HIx&L%-=-bsEjH-2xc`wQ5nu1MNv|ZL-)3Y{rj2F)|DA#&?-OfQ#uJaf zH0)pg;}jM{x$M4(1{o+p6#9z?`l0j;Y4r}`_Xip7=R~fcrku1>^n}k`1htMETMAlr<_sSXMGCMQ@EQY@>Wz zl7A>Z1Y~U@uzk=m8ko2X2D$IvO4>;b&oV5qSTktOh3|qM%pnoy{SJh+tr~X9J)l{m zKv1Lem+ZP&jm##(>4R^bGt*Y~c6!rnGNn0*?%o_Si?K=QS=1iAm_BUHbEhiNIJb%1 z$68uE1g=b_D}9(m&X4I^JDU~pc#gFI#MP%btva<}wMN>xXR|F&^qSv@)j5=*blslh zQ*%qVwa$r;?#gL*k!nhDvqzBoSN-g|%*PY>>^#rQT$1aUp4+6ae0lr!Js;%6Nq6N3 zs@#5TWAm&V-;Y4?@Rc~SIn&k9{^SyumC?n_G-ug@vMZ)JiIK*hZVs}ov z54WO8%E+t@oAWF5Zgdg?k9Wqpv~)5ZP-&qa7?hs)e?-TBV0~e{lprX5-i%H>e~wQ) zKMkTK)mtrV>Y^lS^YY*!Jp;;lJ|qA1JlQt+8WgB>C4}?Qg9q$yj9f}zpMTDZdq}mw z2A{wU&^V7$rMHilK34>j!Sg8AWw*vhxt<&t_Uxn_EYn$60*8YD3ZSA&JRg7O*LSCO zs|E3JH<`$TkKq!UrFfgX7D<}rs7I=cg%41`7_u)9->16|5|OM8Htk8vv)lh4SAQK> zRTH(3!zv=EAkrn>(%m4Pf|Q7qbc1xWDM16Y%0t^>b)@P3}>`@Vmi zkB99#v)8PdJu~ZC*IN6n;#NfaVMArDy@PH?tyajvE?B>yB^5#rrjsZ;=)$qVkb@s^ zE>=T79QqIx?)Ketz}EZpplUXdQIwb62OtD05=1|LY!Mv_3^N)P0t zSk$UwQByP0%4>qSD&vPVOc1+D@M_D$#LT{~`oVWoh&YK=Ia^!0*af)VYb^CD8c(Dj0gR`k?U#9@J*A{{X{T<^Tf_@WiJMI&oY5B;F3XF95h? z@KDXNSh0fG|9TgPy}wEaXnF~r_n)5M{|SNSGE#qE;A?RgI{2}-efcNsr?com#j2mA z>istO&z~`HWIL-IJ#11;S*+l(_~e=dQm5U^1Kt<#^r)kGqh6#3dc-M$P)Y(RsB!Pb zWYDv*k08eSFaSVp_+e@#X5|YOVchtcN z^KZUrJ9&(Je;9)uCy&=)pWrHdX9ZRGpIoXkOw2zwRfv~yjV@PnK@}7p^1^>CRL9xJ zsvM8>o}EP){nG&eX94JxQBz~Bjp2Z~#VhMJG_nK@;1dh3NhY}kEW2C|y#FcjN+_cc4C~0#_JOncCn${60Y07y zTn?9`kzMX@ z^j>S|T6z4CpH@&;d3;yVoSF0rOdC@7^W~i)2JQp~a~J2#%D!FiPJEP{jmcncR7g3! z;BM5q6eNl}h|sRLA3Rtz`c=Mqjt7{maHMPD&jLIL$`; z3P>l*P+Ux!t3qdFs5U8My$LaPTk;+q5am`%tjxvon_=2&>QNJ@_p=EbO}c+*H=1;= zf+=jsG}Jpcssg-0By75wl8J|H!mUwPr`f4s5L$61ZxD0%Kr3o_@0Hc#CrDoz$T{Av z7*&tOPFrlB$JhC^J*Gq_ApNU6wJp0>-3ilt1DBxyWndiFZ(mW0B1Dq-Ak1@Yy}@u5 z4!gsHZXJ?ZlYM<8*mI(HzQN>jNTrc;jIPS|@A_^zJyn@6e@jlmvO7G8ptPlm^@afh z*HSt2=A!gv&Ajc4svxr_=zicXB5J?2aAUTcQl+6SesJ?j`4{Z{_^*p-o-RNtti4(2vjL#?1BS@ zmuVohsYnXN)fW)?XeK64h_&{T6#(hb2TaH$@Mx{}2ePHCqDG3|dqdDU`zs9J(QrWF zmdQYp5q*)G*J2=+cHsLT6-hGWUZ$YtbtmYWtpM;t19O)PxJu{9foK!1KIrq!Yrp=- zMVc`EEBqX633f0Wc>B!%qUs+od3xiusZ23$icb4n_!PEk^6opH#|`_F z^*zqscc)LcJBMn6nWOYc7oUds@VH;#eOLIjbV!U46r$)3aA&(MNrBW>Vgy!jb7(%)^gUhP(ClXDyAc8r zJ9iXun&Ly}2p{Pd5yU*a?;uxT!hjUCw%68897y~scdmVdfXRW6{1INBwLmd%o2P^an0Be{Gz( zzB^u^{THe0Z5aj!=NLwfg>}>Nuc{NMZj!f9vB%cJ%i13$hs;Z1rD?HhVYt5~>q}xI$0nePpyq&&Ce9)L#OTMOs`CnnK4gmB7 zg;iI*ik+F~t!r9ZJ-CD6#S(Nbr=HJVQ)@&=1lul&CZaAW#>dz@+2MbX=51wp(Fd(W zC3UBkBWG-3>5G$I2xEf^#?M)ZPH?gKjgvS>-uM-RMerbyId7fKPT9iKPFW$+%@=(N zrEAbwfqFHcKA%#lns|pH;;9>z5idK$Vw10R+Am^L`vXBd1kO|9I{jgpP_ zwlCI3i+;foN;MM=hzo#rYqKB)y0!{&NATEMRaRuOv*PGggb>%W!{44Bpo9!shuM4%-UZfiuaJPEYKm672;*B?O4tKSH-wK#71Pp{!rHw zT1;iOHL0fFh$(Dn&3m!Nb|_ch8qHf7zSH9+zLFuX+9V?F+iKKB@b zxv1pE49j`#*XVWbD2kHAkksr46!^((Ur4q-v1dHKRma%xd7!kc-EW4Bel zbudb`EsG1l1pJYVD8c3J_{WMboTpu3n-Q3Yo3|WUJOW;O8x}}_Es_lh4ZP)Wuw~j; zhvZ0eXHQ)lUF8wd49}%8$15`*352{snF@YViL2u_`txg-hQI{m z6M5CX85uJDmS~W5{p7sN?Co2LJ^L8fedh{p&TYh7T}(A1*GvMLjlqWcb6zl!tgPUz zxzyf?FTHbC7to*`L(>%c>sHrZO*L}bq`Eg^uPSMfLgz0$lPRgFzt28)XRGgOi1cJ0 zQ)r2;c6ZB}KdET^P0ASNfmw^PC*}zT9pC2Lp)7lyj!b(#xL1-A?ZNhpZsOwwn0fQr z;g`SKRD9%Gk$dXb;l(0aSgxo@O9K)ZY-*?l<9PrW&{N|(4!X)x)m$(Dx4ltb__p`) zLSQ+y-JkXaW;L;BiT-uOd;J(+;3+{WF_V9hL?7$Vi?=6MW_NiaMvCa#e z|2VitqrA_-rr`S?p9$PsAGL#f>+zkd{x(tr&q?Z0ZGd}l?*&iCg5(MjnQNVYl6mWB;Q>e{xaVuT#U|pw z?TLni*qzZRP)GX+Vzd4yQ@-uB7O@uSOO2$oh{^q{UjSzAkT(2iK^pMw7||xy0%9Ju z*V=tmqDFb!?;E0Qj@K~eY#LQ|y)$dhOG@kqFi{|M0xb+pTY z8T_7sao^Dg`ooHI;Th$uO72hOZ5?UsCSz8x4v4hV6UL?uP^ zw!mBuA!5P__+jONh3l_M(g5O%j9liRb#F$hpVm7od%R3Uyc$77S$mK)f#;f4Oy|e^ z|FsEcdjA>s?Eps9@CH2vxC;LxmX#|#UkYUUqxo=mb`O$xqyZHY><1 z0Udf|UwF3wdazr3V7I7l!xO>63z*{03(jrK<#GfKt9;voL>E8l9z-ad)SCne+aUQwv9f)} zbBqRLOkF<^W&$$?{O|BQP=1Bi0gt#Gu>ZGX_Q-E_vwW=x>A;S`MctNlhZ}dB?S6bx@{{8IMp#~NEVYNw z>Zu~-aFw3m4`?@-%Bae%>S3^px>rcbO@(Uc3jFSzY^y;9=K4P(Q?0F2U9D1+xlyxn z2SG>&d_-RyenBj1!&{s9Bkb3tX3p{HAWPWzjHJ0x7BAviYt~w($hT=82|v!C=^bBD zwoOMCCmyxg&-76- zxsL+5!A_+gE&$519cPI88UJ&N?OM^+5aEw7rn|cCRFy-#zg}t?Fe~AM48@NQ0hLe8 zU^9KG(3HNsXHc&2DlI~z;QpR;{TlQ_&WgX9yyu#xsDwAM2KWAPUBS%!0O?TZ*AkG1 z$1v~&A-hcLTy*AL%>h%%YMjt!^=I$n=?HaGbP5adQ6TAhU*F0Kv{Wt)g+YC;frOFZ zJ66s6PkWj)<5Sm@`b#Sj)$H%@KDiH9kqBof4j3n0xCq|st%?i-)22}&3_@`@@1GBV z+3|rDu(d3Q(U=cx@)1R?r5DX<r@6vOa+$JSJQAhU7LSc7Rs z`vb#(cm6Q zKDs;F&Opnz$uGlVn&rAXckySR7rJVNO58;!SD7_D1?GplSF_duh#rG>#g(-C+Q)*h zPPqW3YXJ_bxAh}243N&=dld*>JxL*dv|uzxrHZI(<+DMF@EeV=7w=`L zG{h`eru)8#2u^RwosaxN+(}&v^IE6soc{{VUwQ&#y0LxknbpQ;dG|?-!shN%b?bgF z`zh4-*Vm7vCBlR=0DC>=)i~))PgI;mRxv4xgVp28u#qQ4s*3q#VF!?2ub>`ZMi~{~ zUnJ0LJ&kASZ51di@2)TJ-EL}f2dq~cobQ4UqdY!Ta38o-eNxz?45r5^I)0s}g(5Z+ z!)sWap&SdO`5jbW+qGmAQ&5#A@v=9UH;%qz=J;uAw$|i+47fV?N*7NLu*VdN#m?z0 zW=MuI1c_TYUCNDD=jixw@Z;m3a1uJd(w7>UIT}@I^*<)4;VbWs$CmeFj%WETWQdw@ zaGCjd<)$8^Yfen~>`#eAc$~ZDjsw-;#ZCs%d8JXCrdbxf2Bo{{^1dba>G@Ixz1d7` z)t)SY?{i)aOn}!3B4F3@m1?}OEZaVU%G`kpG5eL+2SU`&$X}tKPe;Q#BMA+|?wWIK zb9B}Za4ct9P|s65>iwD5#U$4_JldGt>z|EtI#9M5BH*2)WG~P3#X)2H8lOTZ!#Q*< zj8LQ88U-GI-nFjZuiaw!6ulwKCtf|xF$oMW0Pap2!*BV`>Iaf2YyJ#s z>Kh3}Pk&5tS#CH*ch-n*dj517pe`@r1FK}Ro-&d#7^jyfKEfo zJwoUT(1q*XU@TbfFv`mk0A;3xq~&^oe?_%6FCv1+G!s(0tu8UBdP@kML3);L`ZL?) zo}d-U-dw&&v5P%QonQ-Fv1N2_{RIo7_X~apj(H`t$IA0Ua|K%Se8z4V&MOj#w$0nt zQ(bZ@r>m;(=j$c5o9lAiM>MA8xErV!pT^+r$oK{Em`Q+_k|@Ng|fm zJ84y}bw+&Guc;_(0{%KC`Gja5L1zV$)BJ8|6$7;w9u2PqaAhbS zRwfagtQVj4neIk5nA79ShxBX6^bqoYSM@N#wlXMn31i znB5{hYrz%X@NuK1NaEVWK3#MZL4rG*E~*QkhKGZkYL?o|Ag(iSkyR0I*X6FBFOtbHxO@NU^&m~_;G?pFl&o;857N zOeuWUrr7p~{Xl-gz^M1KS}#>%w_hMcYj-KK^STckSEF)h?!h?eNP;7C@_nl!TTurCcO1KAM<}6lH2SMn%CHT^W@h3cw^ln zKyK$iX;TNu@(FKvOBAG6vBLC>G|sS|ZHBELLqiS{>eS`2tMIux$-x>Z7oYT^pYuYk z*0XArG$AuYEzNGv;;r8^I%9ZQ*jCA~hPq7;R!A7;Un4rz>1&)BV2p9ikjeVDOfjK- zPE{@w?@*BZe`iiWYHWG+cg7Zh&u!}+EQWuLhyoaPikE-;Tslf-E)vJhM_85^>Ddoc zGHX2tPOO|w19#^LzR%Oe$!g>VwX|V;LZf zTLQy0!SSZQW3eENe1Jgklv?;MFqP z*MnYtuwX3uVt)iT$w|rB-16HxW6uw$br`Y%^m^+tM?)2|c2t{AOHoirAGi^ku!ROF z{QRA8_+Gt2T1Uhr=xU3qVO#bElzzM?Os~&SlKpZ^EbhZFHxpEQEo@a*aQgtKsnXMC z+WBOixFzNcE0bcgCoz0L=Ky%@SnEI;042OoTVRh`?>8J+lQm?NVVgxiDd9JpF#lcO zjiGVVJacZ5k7{w_?0_Tc1BQ3s*QMp#dab8`)K@my0m@;?_cw0E?xB| zkYvk`cP1FoLqWJJg>TCD;#0ejX5yIiiwlSF$Lxx9*uuHkj*M-!BbI?^OY>DVO7Z%? z@k}?@X!)-j&ntA@PKCfl zzS30dDWq0mAgXmch7wwucL3rYwGg^r)%##tEhkyz<}BD!GkbR-6sxEW>(Ak=ue5@o zMH-l0Te9p1e)R`l+^L+?M@qoHfZ_fc%Mwo8#+?@=SAjL`kR#Nf_!UFN`8bNXw+G9e z+zMa)blo4*6a`R%iGb>qpF)H9SzDGueweC})-v%>>jcyDETGszPNM6yIgi<)r6FIz z-yiUddVM9Ko_)TW*p=eGhdVnsCVr#D^Hhnaq@o#f$^xjcwE1c2iYvZ+8S2_t_jXP( zwY$V{#&)#Ahx_sR7K!&Utv2e4q+A?PN*rp_j0h)c<~xijv`CUEG@inoO%M#v(sIM` zvq@(s6Fwj&<*lxjZ_?0`(tV7y3<2n}8g;=5-@)$wHo)>(NM4h;kP@0%aT?1|`E|d|Obx6y!y>&zP}Z@R+9>6-b4GfZ|msh zu`HH-*|F)Y+#TLRXtuH^GB#FJ z9Vq=nlZY&Q3FN^z{Y=pB%xk`DskaB5eLZ*?{{wMNrA6SBBJm6pd^#g zDKGUI$sJu?3~3Ic%v&po83fpJX6s2eg2tDZqoPY?JcV)B&_3tU3SRkz-fF!b|FUy@ z)TaQIrvH)E@a%070?DoV^vvJTO_MVnUAf*^r9reZROiQIoHwy^Z{pKtn z`Dp{!I$e|f#kBf=jdlr*FL7jjlghmg_sowNALyi@(Jt^BSdN1EV70irtchhG^=h>y7E4E{eNSbgEAuz&#D6(4GH2L-!gHWyk1 zd^|uzNMsjF!r|f#F}^vAVfk~Eo6Kj*Y9dGYB70)6_w2vSwic1Uewkj{ zBBylB2zlL-zMIEft7S5bHhd1SV6cZ2sXPBxu*+mUUcrSo_A) zL>71Tx{v4>Q0$i+>MB|}=Uw|eyf@D?_Jnkb9nY+}uM;^j|I$@`1U_mKTzMcnwZ&8L4cFEXFyz#go5C|~}W?Hdz2 zuP~sG4T-@_T{3~Ql~jr)RE}O;6Lbw_+D3ql)w;8FuZ{^N>4zHzSEdqo(SbB4UFV8! zgqBg9B1%nxU|g%m8#F!?8mmv;LpMIrCmQS~&&N9z3xsGw8B9nneFqjalKI#1Jx|A7A}t#@HP-eJ(CU;H_p;`;3Ff5$TnE!X zOHjOs0HPnkV9kmf55@YroG3o%QZyYgDt`^;`jAk=?lm$r_zb<~I*#oTFUw(e3WR{xI_bD7*v>TKPqP%Ih&Q-{L!6grNP zf)GOR&&b`BS!=nTPbVp?PQd$~5z>5-HrdI#v!|;UiTp3;p>N!&?Ln}OZe)Y5C$Wu_ zPsaUtj!|O^i-3C8ZJ0_T_51vxgzr7nUKc8#H*cO7IJPUZG49TkX82avXwfag2xOK2 zVpmjIUB3Xlj@{B;3a(NH2)l${z0$*M36##DyqFM-StDbJ$;Rx~1*$(l)}qN+b7lkI zoK&g4q)K#{P<$?MjK&KbwY?VK{)&fx75HZS%iBC2u%=Xf=JmCRq!7NZN}*>TtD+qE zW0|Sq7SFybKPfaxrQ?F0&^@tmbJAFqH(=Q(Vi}l%mLEOwUP3S8`UU-vH)yM$@8IM^}<#=21$VQo34+54PoaZj%8WP$@P)FxRRD)V9DRYlSKpsNejO|DD2i5HH4Sf( zI3!9L;XHoWScUMYWb;#~2i8xxsKjGX6wuEmkbaP@lTvOS`+)PmvOg3~guC^-vcALC z%kjv9w{&=MDE_lUmp0`3M?l4=P*veCz?CHz=OV|w3PX=){F}iMaMKV*{*l8Y{=&HK zaHkywO|Km#h4!uxk)1LvlTexHrVms&K@YBQn*rJ@09h65PX<2XQ9glu2{GzOkh}QV z<0nUslOKYg^$9ReWIm<_m*7QkYbhrZH(M2#Ty)5Ird-sk?~th_<7wslXRPOW!J>sy;U2o!_ZD(?f}y7r-8%j>{%lYYN+san!+|B8%&HV zwF(1YHIU2i!S!R-A?ZF<@x5~!;7oXamF^f!-f(s|O!Gc z+uhNOrFoOt9Y53bA-RaTgWoX{m8V}tWQ&M~^isM<-yApX%WcA#Z>OmJqSw!i$o~D` zjLeKY&I1K{9m+gY8QJUG7j*H3T=e(J$l-=%pfhu5v7))}^%8LE(vJlZNfZK_5Mt8%Cqn zO6bW8fZ0l_>%@t#at;gkJx%UEvtJ>99BH)piWv8zh>pP?Eg(u{%`xzrpq+*7txN!Z z!#-~$MHG~U0#A}MKJnPG^Lt(~x*&o*3+?DgNi@SDa=@r3IsK<6xEK}Gfj#P9CL%_> zvr9LSnVnPQgX1C%ep?5X*zzV^yozhGROCBbYygISfO$}rJ#2?x@bKRpZl7_Mf?qPk zJKxw*u@M++L0MK`1fWB6+*;uO=IJ81_2jg(f5`M{toX2Ki`cmp7rzn5vv%4~lt3mm z5kb#ET2Q3nOI1VceRXOU?0Ft~MNT7AY)*{s-b_(mnCPNs?%5@w0QofW^qxIPZKwOvL~`rQVXmFhzsol;TzP!U|-9lGm4bl zX~C3SX^?P3n}C^O?6!Vr``qawF768jxC*mAegU!G?#h@^J|BR3wcksC)j2*6dipl` zpd4{0U{Jzj)`nI-vUMl3d^=970HbGF=>?LYOtoRK+LsqcXbbj=7d9>TU`e%-6@a_+o83^%ca7gs zmonGraxGhj_pn@dZ<~S`@;C)UnjDSUMi5qay3i7vcln+eofmNL3qqTiL&c=+hVd0H?ydi|2dmMgt7fDtJX1g?fKI~Tf8HNpX$TII1_ z!uQO_)N5NKi=L+=sK8@zPvmSKRT*0~5jh=2y?IRCo4^@7p!3z3IUl6+_E(0DPJ!>)rP}YCxG*BDt@#C*DoJ&|F2fP`| znAi9tyWtYUlC)ZNy4%ko@U7U3k0?j*YCn#_;RPzD%+m%^<({Eo^7i|+`ZB{@73=Eg zfDC(l0<(h@`SrYz=}q^M6!In4je<9B-52+57`zNcjMa_X zeN3~NfFFBYnU_Ta)QvQXYiV@N_^&zu1Vqb;=vi;(tzbGDPb})&z4pYvAl35sSZIfT zTH$iRfN@9|xU-O8I{z7?6O=xCF1!|`IsreW7Plx~&iJw0A}R6Z1crKapqYQ#si=3O zIEWfQ9sdZV=%T}DOPq|9 zKN>faLzRr7FH}U!^f+SdjPQSYmRJZkVbTOzY9QKEw*~dsM5QBv!hjqFO>>riM*~hx zb8le$k84BO|I;emgIHp_ZIk}6qypX=&o(~$E;l2Ik@FqwpQHhJ|H|w3lOvJF_nwzH zYQiqWYD>zSEJ7Gl!8>Dqw7NMN2T=lw7dQ9$s9@hTz@J^Fe;&)R84dN_#IK{a{4_>I z5=76b?H1`nj}0VoE^N6r^jha}{dw7-4BOY!5z0n-(!6hR?XK;mCB^pH7fUfkAaNVC z1kF@vUtSBMvft)R%Zj4aA6MT}8Q7NV<-7D+Po+2bh{IXn0IoshY5K7z0+Al4UE@fj zrkdP9c&mLjpEnqv`E4#E_$;0?J|FB8L>vD(4vkI({ZER5CA0jV=)@QTf#Gx1m*dY; zX||HaBS5QxZr>%&5G~lhP8AwOW4?c;AW$?`2K!V~cBx|ElA3Pu5j231X>CDS3*t`W zrq6X8pKEh1CTNRJKku^NADm@C70$l>YxZF<3OTheaSYc|k-*8x0IadE$iBxVe(Dh& z&>(j#Fjp3o&UGXpqMqOCB1Jw?ic{@~umk$?^G*fGFiV>RTRygpG4)7a3|j^ z-zBdOo=dcI-t6jcjof^qootj~7rRNeZ}hx_eScjJ$L_L1 z%P7P#hE9oSGpvME{@o!#Ns$=5B;-Drch{w7|8AcUE`)z6E zp59-K1vgjDfslc84MKg{GJ4jWskIVk+{#p&1oueweSQ!)CsL)Dxd`y20l{GfI5Yley@rjS>Dbjj4*&PDZjDk$HuR(&dkDp0a{a?mO>2FCxqfS#Km$jqoV;`8BKL$$<<^xp-rWH9v}18 zctr)BLCtaVscepA1?OrzTgG&l9upENn9mNVx2Xl5;p%?GeI_40U(6@5hq;}ggZrg0 zVY1Ve+7n8rGT;s^A<3O-P}bB^e>>6e{j>YkF@Xjy7LkXBcG=`c!zsDL_!*=be9s3J zzr~<}+&Qq2fITJgnqAkwjF1vRXj0;}3fns^nU7M74H)02V&4_7o=WS`g8|5Lq{s!u z@a^}nxgqLpReMEt@;2Uh35yQRxPACL=GK?R3eX)lpKVlowBy_s2a~d@Xiqd(M0pT$ zJzgh{wC_V_Y1V@oG1q#VL4K&^efK0s$R+&pLLT78LP)UQV)Nb(5PFheUBF1p7Gutt z8OLnF`b_sALst{E6gR;dPx#T8U0IaD=eUzMV|FE}1`X(4gSC_1W*QC-^4$Ndef)~T ze}e71<}=#?QtQnzhA3xJdJ!$@9uInv`FEx04y7jF#^qEW>&MjoKGUHz&{lg;8E{h? z#@--a3-jDAoS~nvTzUack@?O#2Q{7oGv;{jq8Gc&?pJp5g!LNH!P7KsUp^m*jQ^Y= zi8+} zQ!ZF;c7_CvmlPw%sF2vc6bW&YI zMebI!LhdCNb0%eRKRwR@a~km5$12Zra|7@TGI%K%ZO-IyP1?{uX}{9hjtY9FaK$$s zXEWgYYu+RR!!}K@U-QX$(qW}8%Ewvve3^qvDM8%5EI;hvgXoN~;DFscM7bK9=a-T3 zM6Smb6o-PYjce~DEup4u<<;9^G#kmyL0giQIH!vuHVeVkfLLNJ{cOBdvazQXlKv+2 zec3LN$Kv|UgdWX-dLVYaE)my;m!pLDzPh@{w3j1|I{6_48YL~Ycm&%?Dg&>UShhCo zSl&!ji`VFC4_JU-xGY<*^%=&vnyIZ?8zxWc<~LE7IZ0nF%(u+@uF9Sh#m}kd%}c%; zuETIkl?Eh!@w0ugP_h2_F7r3j1&Eq8HZLzn zu0}?N!f+xlQj3{*BhfXLReL8LYy@B(U(LC+D_Qq~E#u6eZF(=O1>K_8D6R z*y>!o{B0H#q}}y%?DRnG@UMdrZUk|(95j-WYs7saPUXbHF zHJn>Nn`msbUa;QUH=AMQ8IMm98o#a>3;e9>bp2s>K!L>Eb7ottgqhzn|I8>4t=f0* zG^2)w-_z9abj|5{q>n?3NUx6X_B3OC*Dqi_4=saTkt9=`0)-$rO-S4dMXDsA7hs)Q zhzI`?jCiCXC{^tjCP|DKZn=aWfOu{91}F5?@kIW7?R>TS;1F$UVQOL>!kApjp0v3= zc}(P~up*$nF)45vinJHH5ygl7S6&~}Vn8D+ z{;pY=rmtnVT@QKd&3R?5E>Kehq&bg`Q{$GJ7bd&R&|Tr6d9Qt>dZsF!ilK-F6=SY> z1vR;>NfhX|r8yW|Fg54Z(4}*%9g8Nb-^vLltC!tVpiJ{0WE7U}#tvmQxe|sr$IHbV z6x^@|QBPq$r?8h3=gTIib%|+K6q7tQh_toN48mqYs)_WlzN4-0SKyxl#?SleH^%9> z{mHK8z){kQp>>guENNaE2Jc4Q-R)so}Um#l80jeXVif+1t^=Z&J z8dB+TVal}K&up)E1hNn*)2i3c?cE}ze$gZ7_4{B_?lw!x9B$*i*#zH`7H`=>q9L5I z_jfH-I+cdNq{cC702b*13^0Hh8DuW!yZA=yPU-SQz1eH4wvoZ~zaggVIA#3(XI7U& z+(iODd&G-{_}IM5?kdbZtD%f?LRrg-rPnAGCvr0ap>Lv%RvtrnkZ`{-OC9mrRj^~o z3adm&2hc0LOBC;5ZoT%OyS*GjOM}e;>Wc@pWnL#Pr!IB_hs>t{$(05V3T@z43z%W- zx<7?$qYFE)Y`xt#VbACGb zTW49g@o!)E?g^fpG~&T;UGxz{97E^~ zwbCC}W#C)u$?pc>)g98+i+hM`PGg^FG;-aPo5;K74fL-h*EfbIVU(o5!E-;O7+E!)DEYw#gxyN*u`7DOw_O_?!hJ zYSIS+{lqlTdpDVTEFEl1jRe?{lqu=SFk}ai@^DKZZQMjvKBJo_VzT7}gtk_{j9F z_oN(?DMvlb8l_?6e5)EXNF05KaNoW1T|~x7R&Q&OM|#N1{Il2>$q_oAx&0RUTXiga zD*Nj`wjxack5;Mfdb#DIM~08yopj$0=f378|3LrfR+&bqHZ>I?x0~c&h*F2==Il3@>=_8b?UyZZ>?+Z&ab?8Fy?<; zN5o$iX$8AwRx)heDwf-K4A40nBmlY;;EN|DrRi^Ev&cc#&@O zLg42W9#-$t2``Ygg&Hw@#hn-+EG!_&NOI;zywS2G^k$naI{Wm(CSvs9%0}dX!W?+Sf!Y9i>QsdA`lkE|9sZfT`7d^W$oKIeck9gtw$pw+)yBBrO{?eK&|&LU z9`j=V+4)t3@Ey#i<>oHW2Ds=3fSVoR+oAp|)}!-|b^vlsxaQRwK}iy#C^ydftuE&xQiM zA7F8=dATlE3%zB!N`?c5(>yK5UxC~6z(8`~{>Kt}u}AH_t9kRT42jp?{8MVo;LOP-urm=ht+ye}#A#5Q zwELkY&%ecE-~>p4WF;?6+9(}g`q`s*M~2Z~2&IfK@RnTu7;^;QB3Fh5y!ZEV<=fO0 zsJl1cyuB3fmqU+8)d{&P8s32vRUa5cRu;vczI#+&I46fdv@~Ue;7&c;7#cLtwA(Bc)A~?ivwMYvcFC8>fo;( zhB_B6s#{kb zV(N+4ak7n#Reu=dA||2_?Fy>VmT0FpSswp1c=5Lr`e=HS) z9Y)s}^V+C2^KH^)fL8s6t(+zq8$s-TlifklyozGYthU0YZ=~u;OBIzJ<4D^h*i8x( ziTxE!acVBi3r}Coh;~=FG;BGRhie~d#nI_@lN?7^LZA&A1o%XbCcQN!)|@G4rA-Re z{BsgaMjVS7a|>je`G&Z1xXm%#+hG*~1TzLKB&-{X*#|p`KqD&(w9}vUEM7j|+q1_a zMh`{NoAu~z0PP%WPZOi|=@Xmrn*s)FT!7s1rE9+P8t&c`&&XHW?G`aJh>BlukIb7@ zYUaMVYBp>kF6KKk$(b_WiL;a)PZM*rPV0>1QD{3-l_^c?9Ia(8_^Zz$7`eOaEygjq zX?KO}4pqo+1C8W8dqGF?&)cO?WWLdaLM8d+;)}4trf56yQXkR$K@1?}|AO*g^A{=_ zPeAEEPmjIH)^J&#{ig_AWz3@|Vv$5F0spDYA5Wz}n2M~RO3a#lB@tR6B(JUwedrw1 zY{|#o*M>-;WHz8dn1Ge;Gf9neMiQOJ26t;mmWh5;0X4MvtTiE_VF@~vY)r0Uj3O#O(!2(J_K&(o&151W@gph2QuHMbF-{W1yyTlU3_l|nJ|LN_Qx8&gw1 z21S9+=nyCR1=exi0}jw6*<#E`lFf=5hW?YcMIW}9sw`2k-DnqNm@{z4NF-h-Z6{bo zF%F3q3Ct|fR~-*LTN0ZZThekPeZN(DO4|IbB{A)k2l*ZIscO=pbF4G_ed+Ow^$0n$ z9rj2e5yfnk)`IQWE9Up{Dea;ZDaRLQ;=O=_;Be}8)b`D*8y6Uf+tVAArtmipP=VbxqUYVLOajca`M#@aye=ONxFo@234hGb;& z0GwAS=msx0gT9L_l8J;8^Xa=R^I))gnbzQ6-G!aTZciWx&n7^n2&-;KCEp8I>5Y+C z&G#dbd|3~S_<8MvR(|alQGWdmt>QWmh+w;E3rvLlSsiRS@-YT3r8|*4@|Tf>CXWzF zEHC{cxICVWC6~BK(Rj4xRipNK&Mcz6xenhi?vHP(?d*4|V({#8(pslBvDs8(S@%k} zb9-r(+i!(=AXRww($68nD}N_{#$lL(S+}|DbaAbgb|}}Ji9?Ps!d=XD3#qTP zfI+MGwb>*y%5TO=n@TUAt1R8ROQ9RY{zLxRTH9ytDkQ~D3>(76U5cx+-TGczG}L1z zL6??$+>-Z{M1NtalUyTPQ=@360P!MP{;Neaj$aA7oH6Y;j~TNr5I!RFJxt-QE`n!RUubSYnH4v^`BEA5h$c)A7!{-m&h%y!GdA z1vVX@H1}Y7n%wbb-u8RdR1Rh7?w6xB-o>8H%mi#-B$B|qPRVqD9fKyotLVzJ1+7*1 zN@!=yL*Hz)B^FkA)#Wbbp?Y4qfw|nvEXRxv>|_z81)E)*3_EmPxPP8&i)op^@uA~7 zcj7Xt8Jb%*KQKS6kkZH^%n*3sn-W1`W@@~%=hKU=f-zT0bgyZ~FihSFYzA!7Jr-VmoRR=6J{L)L&g7A|b)hXb&zPvB*c;uAN=fxp`|q}S#;b)02Ds7NU?Xg;BvxBqmWfMcj}Z=#aC@@^_4{D?`h&1y z{Snwt{c%{8{xqyke;y{Vp+lj~CTOyeMl~QMJU6p3T6R7ipnVU$-m~mHy%~(~625+2 zCVa-K(>itw2rUIJrFoE?nF*n<-blbk${G~+&`F|U#aH5&e?zvXf-hA__AgcC8`FSX z_0QWtZVqblOdrOzkJ!}6uU8AA{PWy%qZOyvvwvHz1T&0;98kT!EZusIu#vbS2_L7= zfHRc+GK0O605;yT@9qP_Mqlo>a9^x+kv&>NMD6v=_aSU zn&AjEZh|>wDccLFTSV)-#*)Lj`do;x;7}s1`~Po;e!2Wi>2}koPXuNGO;8q4zLvic zISZ6;S%0Ta;!Qj#0yMx8kP>_#JP{ZHdtGb9zDX~xpS16?-rV%4+Ya>${}|x( zll?dAmGc{bR;29@@a&KH-~9K`(eF3)1L|g9+~-^d+)vfsb5%yZ`9A-F^AGfn9Q|{_ z-)Gt5>LerCzsFw8U!uIP{{H1#Y;1q6elease0%1r2X6}s#NUNFOYV{7?{hEbEqzdz zP*AfgYK8N6<->peahMg@o1A&?F1<@$`q}sF0}a0q9{iZmFHvN_N}||)wM2>io!ou) zzd(FL_5GUj=gfTepa1jX`(pn3kH22W z=u3W4{PMd-zOMdL?Um&}U3%V&e|6sf%C69@rUX_B?N|DD#ogLY^zyss^IvuVt2FuD zzqcw(I46H^*RPkd8-~0=vA1+(Zx@Y-0 z`|M5Qo6Qf6O7FW&_~>K)^})>lp7m<$ej8S4Eb={O+-q?FcyD3Mj%MIgd9+~ap2dRy zO+T;psa~F0;;^_;=W*q-i=T}D1MfxnZ%`xCsy}DT&zX;Vc4tl3E8qNrQ^EGrH}m*^ z$MyeTj{pB^`g^}ye{NQO^PXLB;`8k*WImFL%uD6Roqm z%pd>9_wVO^QQ$~0BV(8i*XHEeI=uGAmWB!jAfS+^zy)R)Tbh`gVu+bqm}7{U85vAI hx584~*brU4iIJ(f(PX)mF5E_DW|my4s;>TSTmV629$o+d delta 37752 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 Y5^%V}oa!CRd@wj)n|14UQph&{0F#T*Z2$lO diff --git a/results/plots/runtime_region_boundary_calls_5uF_normalized.pdf b/results/plots/runtime_region_boundary_calls_5uF_normalized.pdf index 4f3be27c7f3647d1b6a180734f5121b8c99222fe..482b04ecba53e5b4429ccf39fb0768b9639da349 100644 GIT binary patch delta 50 ycmeC#%iOb Date: Sat, 5 Sep 2026 13:10:09 -0400 Subject: [PATCH 13/14] Decompose intermittent execution time with the INTERMITTENT_BUILD continuous reference --- results/intermittent/continuous/milp.csv | 6 +- results/intermittent/continuous/rockclimb.csv | 6 +- results/intermittent/continuous/schematic.csv | 6 +- .../intermittent/continuous/schematicO3.csv | 6 +- .../continuous/uninstrumented.csv | 28 +- results/intermittent/decomposition.csv | 521 ++++++++++++++++++ results/intermittent/decomposition.tex | 12 + results/intermittent/report.md | 14 +- results/intermittent/summarize.py | 23 +- 9 files changed, 583 insertions(+), 39 deletions(-) create mode 100644 results/intermittent/decomposition.csv create mode 100644 results/intermittent/decomposition.tex diff --git a/results/intermittent/continuous/milp.csv b/results/intermittent/continuous/milp.csv index c0bd2632..ff63294a 100644 --- a/results/intermittent/continuous/milp.csv +++ b/results/intermittent/continuous/milp.csv @@ -2,10 +2,10 @@ benchmark,capacitor,status,basic_blocks,edges,abstract_cfg_blocks,abstract_cfg_e aes-board,board,ok,26,35,9,10,4,228,47936,508,107746.96,24,0,0,3,regional,2475,10033,61,133,yes,49,0,,38,107,1 crc-board,board,ok,11,15,6,6,3,26,35264,429,30481.74,6,0,0,2,regional,135,486,13,26,yes,0,1,__local_main.result:6,5,20431,1 rsa-board,board,ok,114,169,54,71,15,1356,101440,429,54501.19,76,0,0,8,regional,10268,42953,1531,4300,yes,26,2,__local_main.qn_arr.i:25;__local_main.qn_arr.i34:21,1129,32,1 -dijkstra-board,board,ok,17,24,9,12,3,43,40560,397,231298.79,91,0,0,5,regional,975,3937,137,307,yes,38,0,,19,33447,1 -qsort-board,board,ok,17,24,12,15,5,22,37952,417,1149893.9,657,0,0,2,regional,324,1264,47,115,yes,7,0,,8,27023,1 +dijkstra-board,board,ok,17,24,9,12,3,57,40528,679,27854.03,11,0,0,5,regional,975,3937,137,307,yes,38,0,,19,3788,1 +qsort-board,board,ok,13,18,6,6,3,10,35952,575,30079.35,17,0,0,2,regional,130,470,4,6,yes,0,1,g_checksum_sink:2,2,9987,1 activity_recognition-board,board,ok,16,22,8,9,4,45,40080,524,35864.41,16,0,0,9,regional,533,1986,153,336,yes,5,8,lfsr_state:4;__local_main.features.i.sroa.0:4;__local_main.features.i.sroa.4:4;__local_main.features.i4.sroa.0:4;__local_main.features.i4.sroa.4:4;__local_main.stats.sroa.0.i:4;__local_main.features.i13.sroa.0:4;__local_main.features.i13.sroa.5:4,27,64,1 -bitcount-board,board,ok,61,92,36,51,17,197,65184,428,4547878.03,1034,0,0,2,regional,5750,25057,619,1828,yes,16,0,,84,52382,1 +bitcount-board,board,ok,49,74,24,33,9,198,53472,551,29634.02,12,0,0,2,regional,2666,11455,493,1403,yes,16,0,,140,14121,1 chacha20-board,board,ok,11,15,4,4,2,23,36656,409,51746.57,11,0,0,3,regional,495,1907,22,45,yes,30,0,,4,79,1 sensor_fusion-board,board,ok,177,268,4,4,2,19,38160,401,27324.66,17,0,0,2,regional,431,1696,17,34,yes,0,1,g_output:4,4,613,1 poly1305-board,board,ok,7,9,4,4,2,35,36032,428,493705.38,128,0,0,3,regional,559,2135,31,68,yes,0,0,,4,68,1 diff --git a/results/intermittent/continuous/rockclimb.csv b/results/intermittent/continuous/rockclimb.csv index b61595cc..732e561c 100644 --- a/results/intermittent/continuous/rockclimb.csv +++ b/results/intermittent/continuous/rockclimb.csv @@ -2,10 +2,10 @@ benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time aes-board,board,ok,373,552,15,6,32832,0,550975.62,3626,107,1 crc-board,board,ok,225,309,8,2,24192,0,216194.95,1593,20431,1 rsa-board,board,ok,206,293,32,2,25040,0,1447878.49,11649,32,1 -dijkstra-board,board,ok,17,24,4,0,22784,0,14830271.82,121836,33447,1 -qsort-board,board,ok,27,36,5,0,23456,0,13831691.2,106371,27023,1 +dijkstra-board,board,ok,17,24,4,1,22720,0,1804548.29,14855,3788,1 +qsort-board,board,ok,27,36,5,0,23328,0,358764.96,2747,9987,1 activity_recognition-board,board,ok,1466,2021,8,19,33744,0,161195.62,1049,64,1 -bitcount-board,board,ok,72,107,14,1,24048,0,155062022.16,1246544,52382,1 +bitcount-board,board,ok,72,107,14,1,24048,0,979311.72,7871,14121,1 chacha20-board,board,ok,11,14,4,3,26592,0,129703.22,641,79,1 sensor_fusion-board,board,ok,1458,2165,2,7,31280,0,29768.17,18,613,1 poly1305-board,board,ok,148,219,4,5,26416,0,790667.08,2177,68,1 diff --git a/results/intermittent/continuous/schematic.csv b/results/intermittent/continuous/schematic.csv index 52e49424..97a718d3 100644 --- a/results/intermittent/continuous/schematic.csv +++ b/results/intermittent/continuous/schematic.csv @@ -1,13 +1,13 @@ benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,runtime_debug_save_reg_calls,runtime_debug_restore_reg_calls,runtime_debug_store_mem_calls,runtime_debug_restore_mem_calls,result,candidate_globals,enabled_checkpoints,loop_decisions,paths_analyzed,runtime_calls_inserted,run_attempts activity_recognition-board,board,ok,224,301,6,24,30720,477,109225.35,192,2688,0,192,96,64,95,6,24,1,15,1 aes-board,board,ok,126,165,11,11,30928,473,1309159.77,1410,19740,0,2177,0,107,272,10,39,1,28,1 -bitcount-board,board,ok,38,52,2,3,29088,488,12916178.17,32008,448112,0,0,0,52382,25,1,6,1,2,1 +bitcount-board,board,ok,38,52,2,3,29104,681,82800.15,208,2912,0,0,0,14121,25,1,6,1,2,1 chacha20-board,board,ok,36,45,2,3,29616,533,95450.99,64,896,0,0,0,79,49,2,7,1,2,1 crc-board,board,ok,28,35,3,3,28960,530,319344.63,590,8260,0,0,0,20431,19,1,5,1,3,1 cuckoo_filter-board,board,ok,79,102,6,14,29712,461,285503.27,236,3304,0,0,0,4048,81,3,12,1,6,1 -dijkstra-board,board,ok,32,41,2,3,28992,449,927277.45,1251,17514,0,0,0,33447,22,1,4,1,2,1 +dijkstra-board,board,ok,32,41,2,3,28992,718,113710.17,153,2142,0,0,0,3788,22,1,4,1,2,1 poly1305-board,board,ok,41,52,4,5,29968,428,691648.29,512,7168,0,512,256,68,123,4,7,1,9,1 -qsort-board,board,ok,21,25,5,1,29424,423,1458861.9,780,10920,0,0,0,27023,14,2,4,1,5,1 +qsort-board,board,ok,21,25,2,1,29376,659,45441.15,96,1344,0,0,0,9987,14,2,4,1,2,1 rsa-board,board,ok,252,341,12,62,30880,542,107859.18,137,1918,0,0,0,32,116,10,40,1,12,1 sensor_fusion-board,board,ok,381,563,1,3633,32544,464,34677.81,25,350,0,50,25,613,28,0,1,1,4,1 sha256-board,board,ok,65,86,7,4,29920,462,120388.13,83,1162,0,0,0,131,87,7,14,1,7,1 diff --git a/results/intermittent/continuous/schematicO3.csv b/results/intermittent/continuous/schematicO3.csv index 519e8112..6bd481d3 100644 --- a/results/intermittent/continuous/schematicO3.csv +++ b/results/intermittent/continuous/schematicO3.csv @@ -1,13 +1,13 @@ benchmark,capacitor,status,basic_blocks,edges,region_boundaries,compilation_time_ms,peak_rss_kb,profiling_time_ms,execution_time_us,runtime_region_boundary_calls,runtime_debug_save_reg_calls,runtime_debug_restore_reg_calls,runtime_debug_store_mem_calls,runtime_debug_restore_mem_calls,result,candidate_globals,enabled_checkpoints,loop_decisions,paths_analyzed,runtime_calls_inserted,run_attempts activity_recognition-board,board,ok,12,16,8,1,29296,445,39998.59,40,560,0,3,3,64,11,6,4,1,14,1 aes-board,board,ok,20,27,2,1,29568,464,126187.14,125,1750,0,0,0,107,3,2,7,1,2,1 -bitcount-board,board,ok,44,67,17,2,29248,546,5085973.18,1510,21140,0,0,0,52382,2,9,13,1,17,1 +bitcount-board,board,ok,44,67,3,2,29104,617,30400.1,13,182,0,0,0,14121,2,1,13,1,3,1 chacha20-board,board,ok,9,12,1,1,29040,440,61651.26,31,434,0,0,0,79,3,1,3,1,1,1 crc-board,board,ok,7,9,3,1,28816,502,38322.05,7,98,0,0,0,20431,2,2,3,1,3,1 cuckoo_filter-board,board,ok,18,26,5,1,29056,460,58137.16,33,462,0,0,0,4048,3,3,4,1,5,1 -dijkstra-board,board,ok,14,20,2,1,28928,469,245195.83,135,1890,0,0,0,33447,5,1,3,1,2,1 +dijkstra-board,board,ok,14,20,2,1,28912,594,29866.03,16,224,0,0,0,3788,5,1,3,1,2,1 poly1305-board,board,ok,5,6,1,0,28976,440,551378.65,255,3570,0,0,0,68,3,1,2,1,1,1 -qsort-board,board,ok,10,14,7,0,29424,460,1419780.36,678,9492,0,0,0,27023,2,4,4,1,7,1 +qsort-board,board,ok,10,14,1,1,29280,597,41362.26,94,1316,0,0,0,9987,2,1,4,1,1,1 rsa-board,board,ok,104,155,14,19,30448,471,57767.12,82,1148,0,1,0,32,8,10,25,1,15,1 sensor_fusion-board,board,ok,174,264,1,505,30256,453,33430.86,49,686,0,0,0,613,2,1,1,1,1,1 sha256-board,board,ok,29,42,6,1,29536,439,101808.97,33,462,0,0,0,131,6,6,10,1,6,1 diff --git a/results/intermittent/continuous/uninstrumented.csv b/results/intermittent/continuous/uninstrumented.csv index 5a394e77..f62463ed 100644 --- a/results/intermittent/continuous/uninstrumented.csv +++ b/results/intermittent/continuous/uninstrumented.csv @@ -1,14 +1,14 @@ -benchmark,status,compilation_time_ms,execution_time_us,run_attempts -aes,ok,781,101393.22,1 -crc,ok,520,29595.65,1 -rsa,ok,365,43693.48,1 -dijkstra,ok,348,217097.52,1 -qsort,ok,353,1029821.93,1 -activity_recognition,ok,389,33577.58,1 -bitcount,ok,337,4379029.27,1 -chacha20,ok,501,50961.77,1 -sensor_fusion,ok,367,25029.82,1 -poly1305,ok,457,475495.65,1 -cuckoo_filter,ok,445,41990.8,1 -sha256,ok,379,88640.11,1 -stringsearch,ok,324,33559.5,1 +benchmark,status,compilation_time_ms,execution_time_us,run_attempts +aes,ok,781,101393.22,1 +crc,ok,520,29595.65,1 +rsa,ok,365,43693.48,1 +dijkstra,ok,303,25736.26,1 +qsort,ok,654,28484.89,1 +activity_recognition,ok,389,33577.58,1 +bitcount,ok,377,27948.58,1 +chacha20,ok,501,50961.77,1 +sensor_fusion,ok,367,25029.82,1 +poly1305,ok,457,475495.65,1 +cuckoo_filter,ok,445,41990.8,1 +sha256,ok,379,88640.11,1 +stringsearch,ok,324,33559.5,1 diff --git a/results/intermittent/decomposition.csv b/results/intermittent/decomposition.csv new file mode 100644 index 00000000..600dd913 --- /dev/null +++ b/results/intermittent/decomposition.csv @@ -0,0 +1,521 @@ +benchmark,algorithm,trace,t_total,t_exec,t_checkpoint,t_recharge,t_rest +aes,milp,1,0.96441681,0.10139322,0.006353739999999997,0.8564534399999999,0.00021641000000011124 +aes,milp,2,0.89171175,0.10139322,0.006353739999999997,0.78374774,0.0002170499999999964 +aes,milp,3,0.56256075,0.10139322,0.006353739999999997,0.45459879999999997,0.0002149900000000815 +aes,milp,4,6.09341374,0.10139322,0.006353739999999997,5.9854502599999995,0.00021652000000044191 +aes,milp,5,6.2039409,0.10139322,0.006353739999999997,6.09597938,0.00021455999999991926 +aes,milp,6,1.2472563799999998,0.10139322,0.006353739999999997,1.1392973400000002,0.0002120799999996703 +aes,milp,7,5.32929416,0.10139322,0.006353739999999997,5.221329900000001,0.0002172999999992542 +aes,milp,8,5.4291373,0.10139322,0.006353739999999997,5.321176400000001,0.0002139399999992464 +aes,milp,9,5.86820123,0.10139322,0.006353739999999997,5.76023614,0.00021813000000042715 +aes,milp,10,4.08071636,0.10139322,0.006353739999999997,3.9727604,0.0002090000000004033 +aes,rockclimb,1,13.44137824,0.10139322,0.4495824,12.89665198,-0.006249359999999093 +aes,rockclimb,2,16.3769752,0.10139322,0.4495824,15.832145720000002,-0.006146140000001132 +aes,rockclimb,3,13.2114083,0.10139322,0.4495824,12.666336869999999,-0.0059041899999980885 +aes,rockclimb,4,63.693389200000006,0.10139322,0.4495824,63.148525119999995,-0.006111539999989368 +aes,rockclimb,5,46.578013420000005,0.10139322,0.4495824,46.03323581,-0.006198009999995868 +aes,rockclimb,6,20.176720120000002,0.10139322,0.4495824,19.63198427,-0.006239769999997868 +aes,rockclimb,7,36.42883874,0.10139322,0.4495824,35.88408949,-0.006226369999997594 +aes,rockclimb,8,51.73319194,0.10139322,0.4495824,51.188272979999994,-0.00605665999999605 +aes,rockclimb,9,50.859215049999996,0.10139322,0.4495824,50.31456681,-0.006327380000006322 +aes,rockclimb,10,43.49728777,0.10139322,0.4495824,42.952659,-0.006346849999997239 +aes,schematic,1,35.29294651,0.10139322,1.2077665499999999,33.99175231,-0.007965570000002309 +aes,schematic,2,40.87192274,0.10139322,1.2077665499999999,39.57064108,-0.007878109999999161 +aes,schematic,3,32.14547836,0.10139322,1.2077665499999999,30.84386212,-0.007543530000002185 +aes,schematic,4,146.72123587000002,0.10139322,1.2077665499999999,145.41986968999998,-0.007793589999969264 +aes,schematic,5,117.82280951,0.10139322,1.2077665499999999,116.52151134,-0.007861600000004465 +aes,schematic,6,51.11499211,0.10139322,1.2077665499999999,49.813779350000004,-0.00794701000000142 +aes,schematic,7,88.63204304000001,0.10139322,1.2077665499999999,87.3308452,-0.007961929999985351 +aes,schematic,8,125.57277622,0.10139322,1.2077665499999999,124.27131156,-0.007695110000006444 +aes,schematic,9,123.36988189,0.10139322,1.2077665499999999,122.06872859,-0.008006470000004207 +aes,schematic,10,110.47117757,0.10139322,1.2077665499999999,109.17005025,-0.008032450000007962 +aes,schematicO3,1,3.39734334,0.10139322,0.024793919999999997,3.27184734,-0.0006911399999999512 +aes,schematicO3,2,4.454920990000001,0.10139322,0.024793919999999997,4.329413639999999,-0.0006797899999987644 +aes,schematicO3,3,1.37192622,0.10139322,0.024793919999999997,1.2463765800000002,-0.0006375000000002073 +aes,schematicO3,4,14.55244359,0.10139322,0.024793919999999997,14.42692523,-0.0006687800000008404 +aes,schematicO3,5,12.40079926,0.10139322,0.024793919999999997,12.2752866,-0.0006744799999999496 +aes,schematicO3,6,5.202566780000001,0.10139322,0.024793919999999997,5.07705753,-0.0006778899999996535 +aes,schematicO3,7,9.996464060000001,0.10139322,0.024793919999999997,9.87096483,-0.0006879099999991534 +aes,schematicO3,8,11.61938643,0.10139322,0.024793919999999997,11.49385705,-0.0006577600000003125 +aes,schematicO3,9,13.39757357,0.10139322,0.024793919999999997,13.27207191,-0.0006854799999988226 +aes,schematicO3,10,11.89784587,0.10139322,0.024793919999999997,11.77234971,-0.0006909800000009236 +crc,milp,1,0.09518239,0.02959565,0.0008860899999999991,0.06471995999999999,-1.930999999998767e-05 +crc,milp,2,0.42364127,0.02959565,0.0008860899999999991,0.39317693,-1.7399999999966054e-05 +crc,milp,3,0.11947484,0.02959565,0.0008860899999999991,0.0890128,-1.9700000000004436e-05 +crc,milp,4,0.83856884,0.02959565,0.0008860899999999991,0.80810663,-1.953000000006616e-05 +crc,milp,5,0.09495381,0.02959565,0.0008860899999999991,0.06449178,-1.9709999999999173e-05 +crc,milp,6,0.6670841999999999,0.02959565,0.0008860899999999991,0.63662171,-1.925000000010252e-05 +crc,milp,7,1.86039906,0.02959565,0.0008860899999999991,1.82993683,-1.9510000000076688e-05 +crc,milp,8,0.84822929,0.02959565,0.0008860899999999991,0.81776558,-1.8029999999967516e-05 +crc,milp,9,0.8967488,0.02959565,0.0008860899999999991,0.86628569,-1.862999999998477e-05 +crc,milp,10,0.09515414999999999,0.02959565,0.0008860899999999991,0.06469458,-2.217000000000885e-05 +crc,rockclimb,1,5.05078373,0.02959565,0.18659930000000002,4.8376141200000005,-0.0030253400000004593 +crc,rockclimb,2,4.79611951,0.02959565,0.18659930000000002,4.58292874,-0.0030041800000002727 +crc,rockclimb,3,4.580761389999999,0.02959565,0.18659930000000002,4.3674417000000005,-0.002875260000001295 +crc,rockclimb,4,22.4198214,0.02959565,0.18659930000000002,22.206586350000002,-0.0029599000000020415 +crc,rockclimb,5,17.351051050000002,0.02959565,0.18659930000000002,17.13786913,-0.003013029999996225 +crc,rockclimb,6,6.32569118,0.02959565,0.18659930000000002,6.11253211,-0.0030358800000003516 +crc,rockclimb,7,15.54234356,0.02959565,0.18659930000000002,15.32917268,-0.0030240699999984078 +crc,rockclimb,8,19.24818749,0.02959565,0.18659930000000002,19.03496441,-0.0029718700000012366 +crc,rockclimb,9,18.34498409,0.02959565,0.18659930000000002,18.13181819,-0.0030290500000001164 +crc,rockclimb,10,15.80338131,0.02959565,0.18659930000000002,15.59020027,-0.0030139099999997587 +crc,schematic,1,8.57168532,0.02959565,0.28974898000000004,8.25488728,-0.002546589999999904 +crc,schematic,2,12.17862809,0.02959565,0.28974898000000004,11.861760720000001,-0.002477260000001147 +crc,schematic,3,8.98413926,0.02959565,0.28974898000000004,8.667121230000001,-0.002326600000001955 +crc,schematic,4,42.749186380000005,0.02959565,0.28974898000000004,42.43228045,-0.002438699999995686 +crc,schematic,5,34.10069279,0.02959565,0.28974898000000004,33.783821270000004,-0.0024731100000077166 +crc,schematic,6,12.021859130000001,0.02959565,0.28974898000000004,11.70500438,-0.002489879999999056 +crc,schematic,7,26.21307602,0.02959565,0.28974898000000004,25.89623461,-0.0025032200000014715 +crc,schematic,8,34.703039049999994,0.02959565,0.28974898000000004,34.386093130000006,-0.0023987100000122386 +crc,schematic,9,35.8351421,0.02959565,0.28974898000000004,35.518316,-0.002518529999999908 +crc,schematic,10,31.58521056,0.02959565,0.28974898000000004,31.26837726,-0.002511330000001033 +crc,schematicO3,1,0.11340513,0.02959565,0.008726400000000002,0.07497767,0.00010541000000000716 +crc,schematicO3,2,0.53957824,0.02959565,0.008726400000000002,0.50115012,0.0001060699999999512 +crc,schematicO3,3,0.13765299,0.02959565,0.008726400000000002,0.09922517,0.00010576999999999809 +crc,schematicO3,4,1.45234116,0.02959565,0.008726400000000002,1.4139126100000001,0.0001064999999998914 +crc,schematicO3,5,1.8346935,0.02959565,0.008726400000000002,1.79626566,0.00010578999999998756 +crc,schematicO3,6,0.69911015,0.02959565,0.008726400000000002,0.6606836700000001,0.00010442999999992625 +crc,schematicO3,7,2.0252344,0.02959565,0.008726400000000002,1.9868073,0.000105050000000044 +crc,schematicO3,8,0.86780382,0.02959565,0.008726400000000002,0.82937635,0.00010542000000001578 +crc,schematicO3,9,0.91486139,0.02959565,0.008726400000000002,0.8764356999999999,0.00010364000000006451 +crc,schematicO3,10,0.11350011,0.02959565,0.008726400000000002,0.07507488000000001,0.00010317999999998745 +rsa,milp,1,0.21729172,0.04369348,0.010807710000000005,0.16281203,-2.1500000000007624e-05 +rsa,milp,2,0.7397468100000001,0.04369348,0.010807710000000005,0.68525885,-1.322999999989194e-05 +rsa,milp,3,0.36166846,0.04369348,0.010807710000000005,0.30716467,2.600000000047009e-06 +rsa,milp,4,6.01413274,0.04369348,0.010807710000000005,5.95963098,5.699999999497773e-07 +rsa,milp,5,3.20215366,0.04369348,0.010807710000000005,3.14765719,-4.719999999874824e-06 +rsa,milp,6,1.1087803799999998,0.04369348,0.010807710000000005,1.05429456,-1.5370000000208828e-05 +rsa,milp,7,3.09155296,0.04369348,0.010807710000000005,3.0370660299999996,-1.4259999999627349e-05 +rsa,milp,8,2.39177479,0.04369348,0.010807710000000005,2.33727706,-3.459999999982921e-06 +rsa,milp,9,3.4020737999999997,0.04369348,0.010807710000000005,3.34758667,-1.4060000000398754e-05 +rsa,milp,10,3.96859394,0.04369348,0.010807710000000005,3.91410907,-1.6319999999986345e-05 +rsa,rockclimb,1,32.80170991,0.04369348,1.40418501,31.378816760000003,-0.024985340000003298 +rsa,rockclimb,2,39.81971713,0.04369348,1.40418501,38.39633106,-0.024492420000000514 +rsa,rockclimb,3,35.764049299999996,0.04369348,1.40418501,34.339788490000004,-0.02361768000000719 +rsa,rockclimb,4,150.14280890999999,0.04369348,1.40418501,148.71931231,-0.02438189000000701 +rsa,rockclimb,5,110.38894925,0.04369348,1.40418501,108.96556488,-0.02449412000000617 +rsa,rockclimb,6,47.584454799999996,0.04369348,1.40418501,46.161137200000006,-0.024560890000009827 +rsa,rockclimb,7,83.06927791,0.04369348,1.40418501,81.64579013,-0.024390709999997817 +rsa,rockclimb,8,125.6130634,0.04369348,1.40418501,124.18863508,-0.02345016999999583 +rsa,rockclimb,9,120.83566005,0.04369348,1.40418501,119.41109161,-0.023310049999998306 +rsa,rockclimb,10,106.4939921,0.04369348,1.40418501,105.06884541,-0.02273179999999453 +rsa,schematic,1,2.70427165,0.04369348,0.06416569999999999,2.59580958,0.000602889999999856 +rsa,schematic,2,4.30252196,0.04369348,0.06416569999999999,4.19404294,0.0006198399999998716 +rsa,schematic,3,1.30227491,0.04369348,0.06416569999999999,1.1937525,0.0006632299999999591 +rsa,schematic,4,13.93348205,0.04369348,0.06416569999999999,13.8249884,0.000634469999999776 +rsa,schematic,5,11.178451449999999,0.04369348,0.06416569999999999,11.06996261,0.0006296599999996988 +rsa,schematic,6,4.69177507,0.04369348,0.06416569999999999,4.5832913,0.0006245900000003135 +rsa,schematic,7,9.01610892,0.04369348,0.06416569999999999,8.907626789999998,0.000622950000002287 +rsa,schematic,8,10.14909125,0.04369348,0.06416569999999999,10.040577599999999,0.0006544700000007952 +rsa,schematic,9,10.92159594,0.04369348,0.06416569999999999,10.81311857,0.0006181899999992413 +rsa,schematic,10,8.0790095,0.04369348,0.06416569999999999,7.970531650000001,0.0006186699999989886 +rsa,schematicO3,1,0.8634899,0.04369348,0.014073640000000005,0.8061608,-0.0004380199999999834 +rsa,schematicO3,2,0.77497536,0.04369348,0.014073640000000005,0.71764107,-0.00043282999999999516 +rsa,schematicO3,3,0.58561154,0.04369348,0.014073640000000005,0.52824944,-0.00040501999999992266 +rsa,schematicO3,4,6.0629664299999995,0.04369348,0.014073640000000005,6.005613650000001,-0.0004143400000013453 +rsa,schematicO3,5,4.95895871,0.04369348,0.014073640000000005,4.9016201399999995,-0.0004285499999993614 +rsa,schematicO3,6,1.1686178500000002,0.04369348,0.014073640000000005,1.11127898,-0.00042824999999985236 +rsa,schematicO3,7,5.0817909199999995,0.04369348,0.014073640000000005,5.02445472,-0.0004309200000000568 +rsa,schematicO3,8,5.403669730000001,0.04369348,0.014073640000000005,5.34631647,-0.0004138599999989334 +rsa,schematicO3,9,5.82796863,0.04369348,0.014073640000000005,5.77062203,-0.00042052000000020184 +rsa,schematicO3,10,4.007792970000001,0.04369348,0.014073640000000005,3.9504534,-0.0004275499999992216 +dijkstra,milp,1,0.11467244,0.025736259999999997,0.0021177700000000015,0.08679619000000001,2.221999999999294e-05 +dijkstra,milp,2,0.54209664,0.025736259999999997,0.0021177700000000015,0.5142161,2.651000000006634e-05 +dijkstra,milp,3,0.13814239,0.025736259999999997,0.0021177700000000015,0.1102644,2.3960000000006892e-05 +dijkstra,milp,4,1.4561781399999998,0.025736259999999997,0.0021177700000000015,1.42830032,2.3789999999832695e-05 +dijkstra,milp,5,1.85141077,0.025736259999999997,0.0021177700000000015,1.82353215,2.4590000000077744e-05 +dijkstra,milp,6,0.7026165,0.025736259999999997,0.0021177700000000015,0.67473912,2.334999999995327e-05 +dijkstra,milp,7,2.02260299,0.025736259999999997,0.0021177700000000015,1.99472338,2.5580000000278297e-05 +dijkstra,milp,8,0.86986618,0.025736259999999997,0.0021177700000000015,0.8419830500000001,2.9099999999979836e-05 +dijkstra,milp,9,0.90719061,0.025736259999999997,0.0021177700000000015,0.87931149,2.509000000003661e-05 +dijkstra,milp,10,0.11467780999999999,0.025736259999999997,0.0021177700000000015,0.08680055,2.3229999999988676e-05 +dijkstra,rockclimb,1,40.52220224,0.025736259999999997,1.77881203,38.74054732,-0.022893369999998914 +dijkstra,rockclimb,2,51.34189867,0.025736259999999997,1.77881203,49.56013849,-0.022788110000000916 +dijkstra,rockclimb,3,44.7051607,0.025736259999999997,1.77881203,42.92271382,-0.0221014099999981 +dijkstra,rockclimb,4,189.47772743000002,0.025736259999999997,1.77881203,187.69571316,-0.02253401999998106 +dijkstra,rockclimb,5,138.27673025,0.025736259999999997,1.77881203,136.49636612999998,-0.024184169999970084 +dijkstra,rockclimb,6,58.43987922,0.025736259999999997,1.77881203,56.66015217,-0.024821240000001854 +dijkstra,rockclimb,7,103.97728822,0.025736259999999997,1.77881203,102.19765998999999,-0.0249200599999857 +dijkstra,rockclimb,8,157.86111694,0.025736259999999997,1.77881203,156.08194168,-0.025373030000011898 +dijkstra,rockclimb,9,150.83119281999998,0.025736259999999997,1.77881203,149.0527169,-0.02607237000002316 +dijkstra,rockclimb,10,130.22483359,0.025736259999999997,1.77881203,128.44669501,-0.026409710000010467 +dijkstra,schematic,1,2.74330828,0.025736259999999997,0.08797391,2.62751065,0.0020874599999998744 +dijkstra,schematic,2,4.33969362,0.025736259999999997,0.08797391,4.22386543,0.0021180200000002203 +dijkstra,schematic,3,1.38099942,0.025736259999999997,0.08797391,1.26512225,0.0021670000000000855 +dijkstra,schematic,4,16.4841102,0.025736259999999997,0.08797391,16.36826597,0.0021340600000004373 +dijkstra,schematic,5,12.41149481,0.025736259999999997,0.08797391,12.29566048,0.002124160000000208 +dijkstra,schematic,6,5.18173667,0.025736259999999997,0.08797391,5.06591958,0.0021069200000001786 +dijkstra,schematic,7,9.16641431,0.025736259999999997,0.08797391,9.05059644,0.0021077000000007673 +dijkstra,schematic,8,11.603642259999999,0.025736259999999997,0.08797391,11.48779232,0.0021397699999985975 +dijkstra,schematic,9,13.35334435,0.025736259999999997,0.08797391,13.23753545,0.0020987300000011033 +dijkstra,schematic,10,11.87439402,0.025736259999999997,0.08797391,11.75858955,0.002094300000000493 +dijkstra,schematicO3,1,0.12724053,0.025736259999999997,0.004129770000000001,0.09744633,-7.183000000000536e-05 +dijkstra,schematicO3,2,0.56624615,0.025736259999999997,0.004129770000000001,0.53645196,-7.183999999994459e-05 +dijkstra,schematicO3,3,0.18376046,0.025736259999999997,0.004129770000000001,0.15396374,-6.930999999999951e-05 +dijkstra,schematicO3,4,2.61895799,0.025736259999999997,0.004129770000000001,2.58916092,-6.895999999968414e-05 +dijkstra,schematicO3,5,1.86932625,0.025736259999999997,0.004129770000000001,1.83953027,-7.004999999994307e-05 +dijkstra,schematicO3,6,0.8797651999999999,0.025736259999999997,0.004129770000000001,0.84997048,-7.131000000005702e-05 +dijkstra,schematicO3,7,2.05382069,0.025736259999999997,0.004129770000000001,2.02402259,-6.793000000017077e-05 +dijkstra,schematicO3,8,0.89025966,0.025736259999999997,0.004129770000000001,0.86046213,-6.850000000003728e-05 +dijkstra,schematicO3,9,0.93125136,0.025736259999999997,0.004129770000000001,0.90145942,-7.409000000003704e-05 +dijkstra,schematicO3,10,0.11627962,0.025736259999999997,0.004129770000000001,0.08648908999999999,-7.549999999998877e-05 +qsort,milp,1,0.13879435999999998,0.02848489,0.001594459999999999,0.1087308,-1.5790000000022453e-05 +qsort,milp,2,0.56749581,0.02848489,0.001594459999999999,0.53743202,-1.5559999999963103e-05 +qsort,milp,3,0.16231043,0.02848489,0.001594459999999999,0.13224333,-1.2249999999984496e-05 +qsort,milp,4,3.40064554,0.02848489,0.001594459999999999,3.3705766400000003,-1.045000000015478e-05 +qsort,milp,5,1.88331217,0.02848489,0.001594459999999999,1.8532483100000001,-1.5490000000166482e-05 +qsort,milp,6,0.7223743499999999,0.02848489,0.001594459999999999,0.6923092900000001,-1.4290000000131975e-05 +qsort,milp,7,2.0451064,0.02848489,0.001594459999999999,2.01504183,-1.4780000000040594e-05 +qsort,milp,8,0.89082711,0.02848489,0.001594459999999999,0.86075727,-9.50999999998342e-06 +qsort,milp,9,0.9438391700000001,0.02848489,0.001594459999999999,0.91377521,-1.538999999988605e-05 +qsort,milp,10,0.12788579,0.02848489,0.001594459999999999,0.0978255,-1.905999999999436e-05 +qsort,rockclimb,1,7.71018572,0.02848489,0.33028007000000004,7.35614471,-0.004723949999999588 +qsort,rockclimb,2,8.73344849,0.02848489,0.33028007000000004,8.37935002,-0.0046664899999997456 +qsort,rockclimb,3,8.30189773,0.02848489,0.33028007000000004,7.947597190000001,-0.0044644200000003575 +qsort,rockclimb,4,40.14437643,0.02848489,0.33028007000000004,39.79015478,-0.004543310000000522 +qsort,rockclimb,5,27.96325252,0.02848489,0.33028007000000004,27.60917235,-0.004684790000000438 +qsort,rockclimb,6,11.45790836,0.02848489,0.33028007000000004,11.103771230000001,-0.004627830000001998 +qsort,rockclimb,7,20.88884625,0.02848489,0.33028007000000004,20.53477159,-0.004690299999998038 +qsort,rockclimb,8,30.07431854,0.02848489,0.33028007000000004,29.72015066,-0.004597080000001474 +qsort,rockclimb,9,30.842162719999997,0.02848489,0.33028007000000004,30.48805645,-0.0046586900000009646 +qsort,rockclimb,10,23.83890463,0.02848489,0.33028007000000004,23.48482558,-0.004685910000000737 +qsort,schematic,1,0.21949623000000001,0.02848489,0.01695626,0.17448843,-0.00043334999999998514 +qsort,schematic,2,0.73071533,0.02848489,0.01695626,0.68570315,-0.0004289700000000424 +qsort,schematic,3,0.34119784000000003,0.02848489,0.01695626,0.29617083,-0.00041413999999996565 +qsort,schematic,4,6.027990730000001,0.02848489,0.01695626,5.9829621799999995,-0.0004125999999986113 +qsort,schematic,5,3.1775257900000002,0.02848489,0.01695626,3.13250624,-0.0004215999999998693 +qsort,schematic,6,1.1318261299999999,0.02848489,0.01695626,1.08680861,-0.0004236300000001886 +qsort,schematic,7,3.48607885,0.02848489,0.01695626,3.44106046,-0.00042275999999992486 +qsort,schematic,8,2.4147245099999997,0.02848489,0.01695626,2.3696971600000003,-0.0004138000000006442 +qsort,schematic,9,3.41111444,0.02848489,0.01695626,3.36610062,-0.00042733000000012844 +qsort,schematic,10,3.95389586,0.02848489,0.01695626,3.90888373,-0.00042902000000007157 +qsort,schematicO3,1,0.19355909,0.02848489,0.012877370000000006,0.15245282000000002,-0.0002559900000000323 +qsort,schematicO3,2,0.70404302,0.02848489,0.012877370000000006,0.6629285,-0.0002477400000000726 +qsort,schematicO3,3,0.30476535,0.02848489,0.012877370000000006,0.26364202000000003,-0.00023893000000004688 +qsort,schematicO3,4,4.07941685,0.02848489,0.012877370000000006,4.0382944,-0.00023980999999952818 +qsort,schematicO3,5,3.16773407,0.02848489,0.012877370000000006,3.12661137,-0.00023956000000015937 +qsort,schematicO3,6,1.1167911499999998,0.02848489,0.012877370000000006,1.07567085,-0.00024196000000022838 +qsort,schematicO3,7,3.0606501,0.02848489,0.012877370000000006,3.01953325,-0.0002454099999996892 +qsort,schematicO3,8,2.38046666,0.02848489,0.012877370000000006,2.3393403999999998,-0.0002359999999995907 +qsort,schematicO3,9,3.3818089700000002,0.02848489,0.012877370000000006,3.3406921,-0.00024538999999981076 +qsort,schematicO3,10,0.19397182000000002,0.02848489,0.012877370000000006,0.15285943,-0.00024986999999997844 +activity_recognition,milp,1,0.14432948,0.03357758,0.0022868300000000036,0.10849128,-2.6209999999991795e-05 +activity_recognition,milp,2,0.61937518,0.03357758,0.0022868300000000036,0.58353473,-2.3959999999982606e-05 +activity_recognition,milp,3,0.17873529999999999,0.03357758,0.0022868300000000036,0.14289293,-2.2040000000021764e-05 +activity_recognition,milp,4,3.27305998,0.03357758,0.0022868300000000036,3.23721848,-2.2909999999924657e-05 +activity_recognition,milp,5,1.8987318999999998,0.03357758,0.0022868300000000036,1.86289117,-2.3680000000129986e-05 +activity_recognition,milp,6,1.03435934,0.03357758,0.0022868300000000036,0.9985161800000001,-2.1250000000132274e-05 +activity_recognition,milp,7,2.05831777,0.03357758,0.0022868300000000036,2.02247507,-2.1710000000112195e-05 +activity_recognition,milp,8,0.91812561,0.03357758,0.0022868300000000036,0.88227899,-1.7789999999955064e-05 +activity_recognition,milp,9,2.6291882,0.03357758,0.0022868300000000036,2.59334423,-2.0439999999836977e-05 +activity_recognition,milp,10,0.14443616,0.03357758,0.0022868300000000036,0.10859675,-2.5000000000004186e-05 +activity_recognition,rockclimb,1,2.73615077,0.03357758,0.12761804,2.57670108,-0.0017459299999997846 +activity_recognition,rockclimb,2,4.48356614,0.03357758,0.12761804,4.32407565,-0.0017051300000003877 +activity_recognition,rockclimb,3,4.0563804900000004,0.03357758,0.12761804,3.8967767400000004,-0.0015918699999999397 +activity_recognition,rockclimb,4,19.127260800000002,0.03357758,0.12761804,18.96772607,-0.0016608899999992488 +activity_recognition,rockclimb,5,12.46480586,0.03357758,0.12761804,12.305302359999999,-0.0016921199999986314 +activity_recognition,rockclimb,6,5.82803978,0.03357758,0.12761804,5.66854583,-0.0017016700000000995 +activity_recognition,rockclimb,7,10.02781682,0.03357758,0.12761804,9.86831433,-0.0016931300000004867 +activity_recognition,rockclimb,8,14.619806109999999,0.03357758,0.12761804,14.4602451,-0.001634610000000869 +activity_recognition,rockclimb,9,13.384105980000001,0.03357758,0.12761804,13.22459749,-0.001687129999999648 +activity_recognition,rockclimb,10,11.86062975,0.03357758,0.12761804,11.70113384,-0.0016997100000013532 +activity_recognition,schematic,1,2.65437786,0.03357758,0.07564777,2.54598445,-0.0008319400000003224 +activity_recognition,schematic,2,2.0880890500000002,0.03357758,0.07564777,1.9796749299999998,-0.0008112299999996214 +activity_recognition,schematic,3,1.27659337,0.03357758,0.07564777,1.16813447,-0.000766449999999988 +activity_recognition,schematic,4,13.90007694,0.03357758,0.07564777,13.79164669,-0.0007951000000003955 +activity_recognition,schematic,5,11.13870902,0.03357758,0.07564777,11.03028735,-0.0008036799999997651 +activity_recognition,schematic,6,3.7797490099999997,0.03357758,0.07564777,3.67133402,-0.0008103600000004679 +activity_recognition,schematic,7,8.98387181,0.03357758,0.07564777,8.87546693,-0.0008204699999998649 +activity_recognition,schematic,8,10.120970400000001,0.03357758,0.07564777,10.01253439,-0.0007893399999998746 +activity_recognition,schematic,9,10.880080130000001,0.03357758,0.07564777,10.77167383,-0.0008190499999978368 +activity_recognition,schematic,10,8.02634963,0.03357758,0.07564777,7.917956650000001,-0.0008323700000003736 +activity_recognition,schematicO3,1,0.18076926000000001,0.03357758,0.006421009999999991,0.14147839,-0.0007077199999999881 +activity_recognition,schematicO3,2,0.6450110600000001,0.03357758,0.006421009999999991,0.60571518,-0.0007027099999999328 +activity_recognition,schematicO3,3,0.25858499,0.03357758,0.006421009999999991,0.21928103,-0.0006946299999999669 +activity_recognition,schematicO3,4,3.4490939700000003,0.03357758,0.006421009999999991,3.40979694,-0.0007015599999998165 +activity_recognition,schematicO3,5,3.12933638,0.03357758,0.006421009999999991,3.0900362,-0.0006984100000003088 +activity_recognition,schematicO3,6,1.0959981,0.03357758,0.006421009999999991,1.0566993500000001,-0.0006998400000000557 +activity_recognition,schematicO3,7,3.03811382,0.03357758,0.006421009999999991,2.99881584,-0.0007006099999998169 +activity_recognition,schematicO3,8,2.3387864300000003,0.03357758,0.006421009999999991,2.29948127,-0.0006934299999994883 +activity_recognition,schematicO3,9,3.35860796,0.03357758,0.006421009999999991,3.31930929,-0.0006999200000000136 +activity_recognition,schematicO3,10,0.16982847,0.03357758,0.006421009999999991,0.13053804,-0.0007081599999999785 +bitcount,milp,1,0.10538678,0.02794858,0.0016854399999999999,0.07576493,-1.2169999999995379e-05 +bitcount,milp,2,0.54733424,0.02794858,0.0016854399999999999,0.51771087,-1.0650000000073795e-05 +bitcount,milp,3,0.11894755,0.02794858,0.0016854399999999999,0.08932361999999999,-1.0089999999993854e-05 +bitcount,milp,4,0.84967584,0.02794858,0.0016854399999999999,0.82005351,-1.1690000000081496e-05 +bitcount,milp,5,1.8392708,0.02794858,0.0016854399999999999,1.80964556,-8.78000000011439e-06 +bitcount,milp,6,0.7027992399999999,0.02794858,0.0016854399999999999,0.6731734300000001,-8.210000000136858e-06 +bitcount,milp,7,2.01303905,0.02794858,0.0016854399999999999,1.98341268,-7.649999999876506e-06 +bitcount,milp,8,0.88214804,0.02794858,0.0016854399999999999,0.85251942,-5.400000000006094e-06 +bitcount,milp,9,0.92275156,0.02794858,0.0016854399999999999,0.89312793,-1.0389999999988603e-05 +bitcount,milp,10,0.1055759,0.02794858,0.0016854399999999999,0.07595444999999999,-1.2569999999993003e-05 +bitcount,rockclimb,1,22.69578521,0.02794858,0.95136314,21.72957282,-0.013099330000000964 +bitcount,rockclimb,2,27.96673949,0.02794858,0.95136314,27.00028684,-0.012859070000002748 +bitcount,rockclimb,3,24.45179431,0.02794858,0.95136314,23.48498274,-0.012500149999999155 +bitcount,rockclimb,4,116.10608162999999,0.02794858,0.95136314,115.13946739000001,-0.012697480000015804 +bitcount,rockclimb,5,76.25122678,0.02794858,0.95136314,75.28465972,-0.012744659999997299 +bitcount,rockclimb,6,32.18878804,0.02794858,0.95136314,31.222083530000003,-0.012607210000003977 +bitcount,rockclimb,7,57.54927759,0.02794858,0.95136314,56.58247476,-0.012508889999994 +bitcount,rockclimb,8,84.07814263,0.02794858,0.95136314,83.11119326000001,-0.012362350000005295 +bitcount,rockclimb,9,80.89012731,0.02794858,0.95136314,79.92373746999999,-0.012921879999994945 +bitcount,rockclimb,10,71.03694837,0.02794858,0.95136314,70.07062416,-0.012987509999989544 +bitcount,schematic,1,1.01822136,0.02794858,0.05485156999999999,0.93632421,-0.0009029999999999039 +bitcount,schematic,2,1.68828099,0.02794858,0.05485156999999999,1.6063715600000001,-0.0008907200000001503 +bitcount,schematic,3,1.01189765,0.02794858,0.05485156999999999,0.92994223,-0.000844729999999877 +bitcount,schematic,4,11.24992671,0.02794858,0.05485156999999999,11.16800006,-0.0008735000000002213 +bitcount,schematic,5,8.05678103,0.02794858,0.05485156999999999,7.97486775,-0.0008868699999997898 +bitcount,schematic,6,1.60287876,0.02794858,0.05485156999999999,1.5209783000000001,-0.0008996900000000363 +bitcount,schematic,7,6.51837188,0.02794858,0.05485156999999999,6.43646838,-0.0008966499999998601 +bitcount,schematic,8,6.98504389,0.02794858,0.05485156999999999,6.90311784,-0.0008741000000001276 +bitcount,schematic,9,8.36656598,0.02794858,0.05485156999999999,8.28466076,-0.000894929999998767 +bitcount,schematic,10,7.893161940000001,0.02794858,0.05485156999999999,7.8112675199999995,-0.0009057299999988555 +bitcount,schematicO3,1,0.11726514,0.02794858,0.0024515199999999987,0.08690882000000001,-4.3780000000007147e-05 +bitcount,schematicO3,2,0.56815342,0.02794858,0.0024515199999999987,0.53779447,-4.1150000000003684e-05 +bitcount,schematicO3,3,0.14166532999999998,0.02794858,0.0024515199999999987,0.11130825,-4.30200000000186e-05 +bitcount,schematicO3,4,2.6204096299999997,0.02794858,0.0024515199999999987,2.5900508700000002,-4.13400000005143e-05 +bitcount,schematicO3,5,1.8752861200000002,0.02794858,0.0024515199999999987,1.8449266599999998,-4.06399999996615e-05 +bitcount,schematicO3,6,0.72482485,0.02794858,0.0024515199999999987,0.69446314,-3.8390000000013136e-05 +bitcount,schematicO3,7,2.02280728,0.02794858,0.0024515199999999987,1.99244692,-3.97400000000242e-05 +bitcount,schematicO3,8,0.89383427,0.02794858,0.0024515199999999987,0.86347171,-3.753999999996094e-05 +bitcount,schematicO3,9,0.92366074,0.02794858,0.0024515199999999987,0.89330436,-4.372000000003873e-05 +bitcount,schematicO3,10,0.11714839,0.02794858,0.0024515199999999987,0.08679362,-4.532999999999621e-05 +chacha20,milp,1,0.15946795000000002,0.050961769999999997,0.0007848000000000022,0.10756117,0.00016021000000002866 +chacha20,milp,2,0.62251998,0.050961769999999997,0.0007848000000000022,0.57060988,0.00016352999999996037 +chacha20,milp,3,0.20849003,0.050961769999999997,0.0007848000000000022,0.15658084,0.00016261999999999527 +chacha20,milp,4,3.3928553,0.050961769999999997,0.0007848000000000022,3.34094488,0.00016385000000001398 +chacha20,milp,5,1.8951273400000002,0.050961769999999997,0.0007848000000000022,1.84322215,0.00015862000000026882 +chacha20,milp,6,1.04023939,0.050961769999999997,0.0007848000000000022,0.9883312,0.00016162000000002202 +chacha20,milp,7,2.0795258899999998,0.050961769999999997,0.0007848000000000022,2.02761881,0.00016050999999988463 +chacha20,milp,8,0.91417211,0.050961769999999997,0.0007848000000000022,0.86226201,0.00016352999999996037 +chacha20,milp,9,2.50425092,0.050961769999999997,0.0007848000000000022,2.45234278,0.00016157000000010385 +chacha20,milp,10,0.15950356,0.050961769999999997,0.0007848000000000022,0.1075984,0.00015858999999999318 +chacha20,rockclimb,1,2.68660707,0.050961769999999997,0.07874145000000002,2.55797547,-0.0010716200000001619 +chacha20,rockclimb,2,4.31494343,0.050961769999999997,0.07874145000000002,4.18628877,-0.0010485600000004203 +chacha20,rockclimb,3,1.3850619499999999,0.050961769999999997,0.07874145000000002,1.25637829,-0.0010195600000001415 +chacha20,rockclimb,4,13.94153472,0.050961769999999997,0.07874145000000002,13.812893970000001,-0.0010624700000011478 +chacha20,rockclimb,5,11.18474494,0.050961769999999997,0.07874145000000002,11.05611003,-0.0010683099999994061 +chacha20,rockclimb,6,4.66726083,0.050961769999999997,0.07874145000000002,4.5386248600000005,-0.0010672500000005192 +chacha20,rockclimb,7,9.0267237,0.050961769999999997,0.07874145000000002,8.89809048,-0.0010700000000006815 +chacha20,rockclimb,8,10.17010129,0.050961769999999997,0.07874145000000002,10.04144826,-0.0010501899999993958 +chacha20,rockclimb,9,10.93756799,0.050961769999999997,0.07874145000000002,10.808941990000001,-0.001077220000001211 +chacha20,rockclimb,10,8.06149979,0.050961769999999997,0.07874145000000002,7.93288114,-0.0010845700000009506 +chacha20,schematic,1,2.52230289,0.050961769999999997,0.04448922,2.42690442,-5.2519999999875444e-05 +chacha20,schematic,2,1.6670223,0.050961769999999997,0.04448922,1.5716234,-5.2090000000046266e-05 +chacha20,schematic,3,0.76931133,0.050961769999999997,0.04448922,0.67389851,-3.817000000004567e-05 +chacha20,schematic,4,8.65280143,0.050961769999999997,0.04448922,8.55739728,-4.683999999975652e-05 +chacha20,schematic,5,6.26906583,0.050961769999999997,0.04448922,6.173664280000001,-4.9440000000830486e-05 +chacha20,schematic,6,1.60626949,0.050961769999999997,0.04448922,1.51087514,-5.6639999999927304e-05 +chacha20,schematic,7,5.6672433799999995,0.050961769999999997,0.04448922,5.5718431399999995,-5.074999999997443e-05 +chacha20,schematic,8,5.51711685,0.050961769999999997,0.04448922,5.4217097,-4.3840000000225365e-05 +chacha20,schematic,9,8.33089312,0.050961769999999997,0.04448922,8.23548447,-4.233999999868343e-05 +chacha20,schematic,10,7.883257179999999,0.050961769999999997,0.04448922,7.78785334,-4.715000000053704e-05 +chacha20,schematicO3,1,0.88795701,0.050961769999999997,0.010689490000000003,0.82618894,0.00011681000000006436 +chacha20,schematicO3,2,0.7763533100000001,0.050961769999999997,0.010689490000000003,0.71457949,0.00012256000000009093 +chacha20,schematicO3,3,0.36769704999999997,0.050961769999999997,0.010689490000000003,0.30591894000000003,0.0001268499999999423 +chacha20,schematicO3,4,6.036338440000001,0.050961769999999997,0.010689490000000003,5.97456345,0.00012373000000086287 +chacha20,schematicO3,5,4.97065462,0.050961769999999997,0.010689490000000003,4.908875559999999,0.00012780000000099656 +chacha20,schematicO3,6,1.18180287,0.050961769999999997,0.010689490000000003,1.12003242,0.00011919000000003288 +chacha20,schematicO3,7,5.0810276,0.050961769999999997,0.010689490000000003,5.019256980000001,0.00011935999999899971 +chacha20,schematicO3,8,5.382134059999999,0.050961769999999997,0.010689490000000003,5.320352,0.00013079999999963954 +chacha20,schematicO3,9,5.12335081,0.050961769999999997,0.010689490000000003,5.0615744000000005,0.0001251499999993383 +chacha20,schematicO3,10,4.00989243,0.050961769999999997,0.010689490000000003,3.94812106,0.00012010999999977068 +sensor_fusion,milp,1,0.10343959,0.02502982,0.0022948399999999994,0.0760286,8.632999999999558e-05 +sensor_fusion,milp,2,0.55217773,0.02502982,0.0022948399999999994,0.52476038,9.269000000000638e-05 +sensor_fusion,milp,3,0.17118959,0.02502982,0.0022948399999999994,0.14377064,9.428999999999688e-05 +sensor_fusion,milp,4,2.61523487,0.02502982,0.0022948399999999994,2.5878187,9.150999999996134e-05 +sensor_fusion,milp,5,1.84790326,0.02502982,0.0022948399999999994,1.82048586,9.274000000003557e-05 +sensor_fusion,milp,6,0.7098509599999999,0.02502982,0.0022948399999999994,0.68243607,9.022999999996895e-05 +sensor_fusion,milp,7,2.01966029,0.02502982,0.0022948399999999994,1.9922441100000001,9.151999999990057e-05 +sensor_fusion,milp,8,0.87801023,0.02502982,0.0022948399999999994,0.8505909899999999,9.458000000006628e-05 +sensor_fusion,milp,9,0.91954475,0.02502982,0.0022948399999999994,0.89213164,8.845000000001768e-05 +sensor_fusion,milp,10,0.1035326,0.02502982,0.0022948399999999994,0.07612246,8.547999999999889e-05 +sensor_fusion,rockclimb,1,0.12752444999999998,0.02502982,0.004738349999999995,0.09777752,-2.1240000000019577e-05 +sensor_fusion,rockclimb,2,0.56648986,0.02502982,0.004738349999999995,0.53673837,-1.6680000000005024e-05 +sensor_fusion,rockclimb,3,0.18403853,0.02502982,0.004738349999999995,0.15428396,-1.3599999999988621e-05 +sensor_fusion,rockclimb,4,3.4039476,0.02502982,0.004738349999999995,3.37419456,-1.5129999999877186e-05 +sensor_fusion,rockclimb,5,1.8719974,0.02502982,0.004738349999999995,1.8422483500000002,-1.9120000000275028e-05 +sensor_fusion,rockclimb,6,1.03976435,0.02502982,0.004738349999999995,1.01001251,-1.6329999999911693e-05 +sensor_fusion,rockclimb,7,2.0545025,0.02502982,0.004738349999999995,2.02475261,-1.8280000000273078e-05 +sensor_fusion,rockclimb,8,0.90105578,0.02502982,0.004738349999999995,0.87130175,-1.41400000000097e-05 +sensor_fusion,rockclimb,9,0.93136857,0.02502982,0.004738349999999995,0.90162089,-2.049000000005352e-05 +sensor_fusion,rockclimb,10,0.1274888,0.02502982,0.004738349999999995,0.09774311,-2.2479999999977518e-05 +sensor_fusion,schematic,1,0.17632645000000002,0.02502982,0.009647989999999995,0.14186183,-0.0002131899999999673 +sensor_fusion,schematic,2,0.63996915,0.02502982,0.009647989999999995,0.60549743,-0.00020609000000001293 +sensor_fusion,schematic,3,0.25469356,0.02502982,0.009647989999999995,0.22021878,-0.00020303000000001376 +sensor_fusion,schematic,4,3.44341214,0.02502982,0.009647989999999995,3.40893731,-0.00020298000000026212 +sensor_fusion,schematic,5,3.1119127,0.02502982,0.009647989999999995,3.0774392,-0.0002043100000001727 +sensor_fusion,schematic,6,1.07850076,0.02502982,0.009647989999999995,1.04402911,-0.0002061600000000316 +sensor_fusion,schematic,7,3.0315945099999997,0.02502982,0.009647989999999995,2.99712325,-0.00020655000000032592 +sensor_fusion,schematic,8,0.92658997,0.02502982,0.009647989999999995,0.8921160600000001,-0.00020390000000011094 +sensor_fusion,schematic,9,3.3576302599999996,0.02502982,0.009647989999999995,3.3231613199999996,-0.00020886999999999295 +sensor_fusion,schematic,10,0.17640713,0.02502982,0.009647989999999995,0.141942,-0.0002126800000000137 +sensor_fusion,schematicO3,1,0.15313529,0.02502982,0.008401039999999999,0.11999789,-0.00029345999999998845 +sensor_fusion,schematicO3,2,0.6399222,0.02502982,0.008401039999999999,0.60678073,-0.00028938999999999354 +sensor_fusion,schematicO3,3,0.24190619,0.02502982,0.008401039999999999,0.20875838,-0.00028304999999999997 +sensor_fusion,schematicO3,4,3.4365928500000003,0.02502982,0.008401039999999999,3.40343886,-0.00027686999999981116 +sensor_fusion,schematicO3,5,3.10070158,0.02502982,0.008401039999999999,3.06755481,-0.00028408999999989665 +sensor_fusion,schematicO3,6,1.06406054,0.02502982,0.008401039999999999,1.03091317,-0.0002834899999999904 +sensor_fusion,schematicO3,7,2.070533,0.02502982,0.008401039999999999,2.03738971,-0.00028756999999961924 +sensor_fusion,schematicO3,8,0.9279876,0.02502982,0.008401039999999999,0.89484014,-0.0002833999999999823 +sensor_fusion,schematicO3,9,3.34658254,0.02502982,0.008401039999999999,3.31344226,-0.0002905799999999778 +sensor_fusion,schematicO3,10,0.15298694000000002,0.02502982,0.008401039999999999,0.11985022000000001,-0.00029413999999999135 +poly1305,milp,1,10.187580039999999,0.47549565000000005,0.01820972999999998,9.69383997,3.4689999997616905e-05 +poly1305,milp,2,9.76468968,0.47549565000000005,0.01820972999999998,9.27090014,8.415999999983326e-05 +poly1305,milp,3,5.18818216,0.47549565000000005,0.01820972999999998,4.69438068,9.610000000009888e-05 +poly1305,milp,4,37.32552146,0.47549565000000005,0.01820972999999998,36.831746630000005,6.944999999242141e-05 +poly1305,milp,5,29.73663332,0.47549565000000005,0.01820972999999998,29.24285436,7.358000000018405e-05 +poly1305,milp,6,11.9517762,0.47549565000000005,0.01820972999999998,11.458008300000001,6.251999999812297e-05 +poly1305,milp,7,22.94681775,0.47549565000000005,0.01820972999999998,22.45302814,8.423000000029601e-05 +poly1305,milp,8,28.6448615,0.47549565000000005,0.01820972999999998,28.1510746,8.151999999989057e-05 +poly1305,milp,9,33.41638969,0.47549565000000005,0.01820972999999998,32.9226105,7.381000000500348e-05 +poly1305,milp,10,31.64179292,0.47549565000000005,0.01820972999999998,31.14802746,6.007999999874114e-05 +poly1305,rockclimb,1,23.577696449999998,0.47549565000000005,0.3151714299999999,22.79079663,-0.0037672600000013823 +poly1305,rockclimb,2,28.09358612,0.47549565000000005,0.3151714299999999,27.30652477,-0.0036057299999980863 +poly1305,rockclimb,3,24.6612887,0.47549565000000005,0.3151714299999999,23.87378918,-0.003167559999999181 +poly1305,rockclimb,4,108.20190169,0.47549565000000005,0.3151714299999999,107.41461184,-0.003377230000006559 +poly1305,rockclimb,5,80.63917296,0.47549565000000005,0.3151714299999999,79.85196323000001,-0.0034573500000134594 +poly1305,rockclimb,6,34.49471252,0.47549565000000005,0.3151714299999999,33.70754161,-0.0034961699999995766 +poly1305,rockclimb,7,61.024424450000005,0.47549565000000005,0.3151714299999999,60.23726732,-0.003509949999995765 +poly1305,rockclimb,8,88.66477132,0.47549565000000005,0.3151714299999999,87.87733134,-0.003227099999997929 +poly1305,rockclimb,9,85.86528534,0.47549565000000005,0.3151714299999999,85.07815997,-0.0035417100000016966 +poly1305,rockclimb,10,78.81184143,0.47549565000000005,0.3151714299999999,78.02464773999999,-0.0034733899999905837 +poly1305,schematic,1,20.170911,0.47549565000000005,0.21615264,19.480895309999998,-0.0016325999999973195 +poly1305,schematic,2,21.02239467,0.47549565000000005,0.21615264,20.33230619,-0.0015598100000000503 +poly1305,schematic,3,13.15395591,0.47549565000000005,0.21615264,12.46371527,-0.0014076499999993164 +poly1305,schematic,4,68.94769803,0.47549565000000005,0.21615264,68.257533,-0.0014832599999972107 +poly1305,schematic,5,58.99395594,0.47549565000000005,0.21615264,58.303752689999996,-0.001445039999996789 +poly1305,schematic,6,26.94085879,0.47549565000000005,0.21615264,26.250687,-0.0014764999999992146 +poly1305,schematic,7,44.827211590000005,0.47549565000000005,0.21615264,44.137007479999994,-0.001444179999989581 +poly1305,schematic,8,57.81821209,0.47549565000000005,0.21615264,57.1278835,-0.0013197000000000347 +poly1305,schematic,9,70.84024921,0.47549565000000005,0.21615264,70.15001197,-0.001411049999998193 +poly1305,schematic,10,63.08115817,0.47549565000000005,0.21615264,62.390999619999995,-0.0014897399999933558 +poly1305,schematicO3,1,13.525051640000001,0.47549565000000005,0.07588299999999992,12.97336123,0.00031176000000088244 +poly1305,schematicO3,2,16.30242625,0.47549565000000005,0.07588299999999992,15.75069485,0.0003527499999995687 +poly1305,schematicO3,3,9.2191883,0.47549565000000005,0.07588299999999992,8.66738705,0.0004226000000004948 +poly1305,schematicO3,4,53.048626799999994,0.47549565000000005,0.07588299999999992,52.49692057,0.0003275799999935547 +poly1305,schematicO3,5,43.4800246,0.47549565000000005,0.07588299999999992,42.92831561,0.00033034000000164987 +poly1305,schematicO3,6,20.17131752,0.47549565000000005,0.07588299999999992,19.61967263,0.0002662399999986409 +poly1305,schematicO3,7,34.34264569,0.47549565000000005,0.07588299999999992,33.79101311,0.00025392999999618304 +poly1305,schematicO3,8,46.96522935,0.47549565000000005,0.07588299999999992,46.413517979999995,0.0003327200000067254 +poly1305,schematicO3,9,48.40672822,0.47549565000000005,0.07588299999999992,47.85510821,0.0002413600000006344 +poly1305,schematicO3,10,43.466849429999996,0.47549565000000005,0.07588299999999992,42.915232630000006,0.0002381499999908332 +cuckoo_filter,milp,1,0.17587102,0.0419908,0.0036814900000000025,0.13023252999999999,-3.3800000000000496e-05 +cuckoo_filter,milp,2,0.65164592,0.0419908,0.0036814900000000025,0.6060045500000001,-3.092000000010087e-05 +cuckoo_filter,milp,3,0.23352149,0.0419908,0.0036814900000000025,0.18787687,-2.767000000000741e-05 +cuckoo_filter,milp,4,3.4294753399999998,0.0419908,0.0036814900000000025,3.38383178,-2.8730000000198874e-05 +cuckoo_filter,milp,5,1.9115078600000002,0.0419908,0.0036814900000000025,1.8658688700000001,-3.329999999995836e-05 +cuckoo_filter,milp,6,1.0549735500000001,0.0419908,0.0036814900000000025,1.00933147,-3.0209999999863957e-05 +cuckoo_filter,milp,7,2.0807236799999997,0.0419908,0.0036814900000000025,2.03508199,-3.060000000038032e-05 +cuckoo_filter,milp,8,0.92507414,0.0419908,0.0036814900000000025,0.87942921,-2.7359999999976292e-05 +cuckoo_filter,milp,9,3.3542858300000002,0.0419908,0.0036814900000000025,3.30864573,-3.218999999959893e-05 +cuckoo_filter,milp,10,0.17586643,0.0419908,0.0036814900000000025,0.130227,-3.2860000000023426e-05 +cuckoo_filter,rockclimb,1,10.11920086,0.0419908,0.38127397,9.70199255,-0.006056460000000541 +cuckoo_filter,rockclimb,2,12.179726,0.0419908,0.38127397,11.762428230000001,-0.005967000000000666 +cuckoo_filter,rockclimb,3,9.21089021,0.0419908,0.38127397,8.79328897,-0.00566353000000025 +cuckoo_filter,rockclimb,4,47.94484734,0.0419908,0.38127397,47.52745006,-0.005867489999997033 +cuckoo_filter,rockclimb,5,34.149712009999995,0.0419908,0.38127397,33.73240382,-0.00595658000000715 +cuckoo_filter,rockclimb,6,14.08837817,0.0419908,0.38127397,13.67115871,-0.006045309999999915 +cuckoo_filter,rockclimb,7,26.37756316,0.0419908,0.38127397,25.96033121,-0.006032819999998551 +cuckoo_filter,rockclimb,8,37.80274335,0.0419908,0.38127397,37.38535392,-0.005875339999999951 +cuckoo_filter,rockclimb,9,35.89416584000001,0.0419908,0.38127397,35.47696331,-0.006062239999995611 +cuckoo_filter,rockclimb,10,31.59061625,0.0419908,0.38127397,31.17341648,-0.006065000000000154 +cuckoo_filter,schematic,1,7.75064887,0.0419908,0.24351247000000004,7.46519454,-4.893999999971976e-05 +cuckoo_filter,schematic,2,8.558954779999999,0.0419908,0.24351247000000004,8.27347571,-2.420000000086242e-05 +cuckoo_filter,schematic,3,5.26784964,0.0419908,0.24351247000000004,4.98229704,4.932999999990306e-05 +cuckoo_filter,schematic,4,32.27658597,0.0419908,0.24351247000000004,31.99109071,-8.010000002445228e-06 +cuckoo_filter,schematic,5,24.89389225,0.0419908,0.24351247000000004,24.60839965,-1.0669999998713653e-05 +cuckoo_filter,schematic,6,11.40610809,0.0419908,0.24351247000000004,11.12064767,-4.2850000000316246e-05 +cuckoo_filter,schematic,7,20.432877079999997,0.0419908,0.24351247000000004,20.14740739,-3.3580000004251875e-05 +cuckoo_filter,schematic,8,25.51137806,0.0419908,0.24351247000000004,25.225857989999998,1.6800000000427584e-05 +cuckoo_filter,schematic,9,28.37779885,0.0419908,0.24351247000000004,28.09233239,-3.680999999794432e-05 +cuckoo_filter,schematic,10,23.83212255,0.0419908,0.24351247000000004,23.5466603,-4.101999999811534e-05 +cuckoo_filter,schematicO3,1,0.84027229,0.0419908,0.01614636,0.7826214499999999,-0.0004863199999999082 +cuckoo_filter,schematicO3,2,0.7400746800000001,0.0419908,0.01614636,0.6824179100000001,-0.0004803899999999764 +cuckoo_filter,schematicO3,3,0.35544528000000003,0.0419908,0.01614636,0.29778384,-0.000475719999999992 +cuckoo_filter,schematicO3,4,6.0117071200000005,0.0419908,0.01614636,5.954046610000001,-0.0004766500000001686 +cuckoo_filter,schematicO3,5,3.19642283,0.0419908,0.01614636,3.13876332,-0.0004776499999998643 +cuckoo_filter,schematicO3,6,1.13546226,0.0419908,0.01614636,1.07781031,-0.0004852100000001039 +cuckoo_filter,schematicO3,7,3.4857384,0.0419908,0.01614636,3.4280820899999997,-0.0004808499999999563 +cuckoo_filter,schematicO3,8,2.3955314700000003,0.0419908,0.01614636,2.33786851,-0.0004741999999995153 +cuckoo_filter,schematicO3,9,3.42866378,0.0419908,0.01614636,3.37101252,-0.00048589999999990724 +cuckoo_filter,schematicO3,10,3.96827466,0.0419908,0.01614636,3.9106209,-0.0004834000000000019 +sha256,milp,1,0.89484576,0.08864011,0.010109430000000003,0.7954312099999999,0.0006650100000001047 +sha256,milp,2,0.77374761,0.08864011,0.010109430000000003,0.67432995,0.0006681200000000775 +sha256,milp,3,0.34372106,0.08864011,0.010109430000000003,0.24429601,0.000675510000000018 +sha256,milp,4,5.24378125,0.08864011,0.010109430000000003,5.14435297,0.0006787399999997057 +sha256,milp,5,3.2022980899999998,0.08864011,0.010109430000000003,3.1028800899999998,0.0006684600000000096 +sha256,milp,6,1.13910497,0.08864011,0.010109430000000003,1.03968093,0.000674499999999939 +sha256,milp,7,4.42522683,0.08864011,0.010109430000000003,4.32580729,0.0006699999999995321 +sha256,milp,8,2.4116418900000003,0.08864011,0.010109430000000003,2.31222425,0.0006681000000004211 +sha256,milp,9,3.43423257,0.08864011,0.010109430000000003,3.33481394,0.0006690899999997335 +sha256,milp,10,3.97583258,0.08864011,0.010109430000000003,3.87641194,0.0006710999999999523 +sha256,rockclimb,1,5.16408919,0.08864011,0.11660293999999999,4.95972685,-0.0008807099999996737 +sha256,rockclimb,2,5.6136846799999995,0.08864011,0.11660293999999999,5.40927576,-0.0008341300000003216 +sha256,rockclimb,3,5.01439438,0.08864011,0.11660293999999999,4.8098757999999995,-0.000724469999999755 +sha256,rockclimb,4,26.989786329999998,0.08864011,0.11660293999999999,26.78534312,-0.0007998400000026606 +sha256,rockclimb,5,18.67606213,0.08864011,0.11660293999999999,18.47164827,-0.0008291900000010344 +sha256,rockclimb,6,6.63907904,0.08864011,0.11660293999999999,6.43470445,-0.0008684599999995157 +sha256,rockclimb,7,15.550089439999999,0.08864011,0.11660293999999999,15.3456654,-0.0008190100000007305 +sha256,rockclimb,8,19.40589114,0.08864011,0.11660293999999999,19.20142787,-0.0007797799999984534 +sha256,rockclimb,9,20.82411454,0.08864011,0.11660293999999999,20.61973305,-0.0008615600000005941 +sha256,rockclimb,10,15.897202400000001,0.08864011,0.11660293999999999,15.69282484,-0.0008654899999989141 +sha256,schematic,1,2.6056444500000002,0.08864011,0.031748020000000016,2.4851826200000002,7.369999999998211e-05 +sha256,schematic,2,1.92662379,0.08864011,0.031748020000000016,1.80615619,7.946999999999815e-05 +sha256,schematic,3,1.10937575,0.08864011,0.031748020000000016,0.98887354,0.00011408000000004415 +sha256,schematic,4,11.30551009,0.08864011,0.031748020000000016,11.185032660000001,8.929999999932048e-05 +sha256,schematic,5,9.32227204,0.08864011,0.031748020000000016,9.20178492,9.898999999993774e-05 +sha256,schematic,6,1.6845679299999998,0.08864011,0.031748020000000016,1.56410132,7.84799999997976e-05 +sha256,schematic,7,8.55738852,0.08864011,0.031748020000000016,8.43691238,8.800999999916681e-05 +sha256,schematic,8,10.05397906,0.08864011,0.031748020000000016,9.93348734,0.00010359000000040308 +sha256,schematic,9,8.43629691,0.08864011,0.031748020000000016,8.315821549999999,8.723000000035452e-05 +sha256,schematic,10,7.96505539,0.08864011,0.031748020000000016,7.84458867,7.858999999957317e-05 +sha256,schematicO3,1,2.53774616,0.08864011,0.013168860000000004,2.43576304,0.0001741500000003171 +sha256,schematicO3,2,1.6762733600000002,0.08864011,0.013168860000000004,1.5742904199999999,0.00017397000000030083 +sha256,schematicO3,3,0.67158174,0.08864011,0.013168860000000004,0.5695922099999999,0.0001805600000001073 +sha256,schematicO3,4,8.67622303,0.08864011,0.013168860000000004,8.57423775,0.00017630999999918018 +sha256,schematicO3,5,6.28678413,0.08864011,0.013168860000000004,6.18479972,0.00017544000000002669 +sha256,schematicO3,6,1.60482303,0.08864011,0.013168860000000004,1.50284374,0.00017031999999983505 +sha256,schematicO3,7,5.68658139,0.08864011,0.013168860000000004,5.58460003,0.00017238999999991123 +sha256,schematicO3,8,5.5116166,0.08864011,0.013168860000000004,5.409624490000001,0.00018313999999941544 +sha256,schematicO3,9,8.32349534,0.08864011,0.013168860000000004,8.22151319,0.00017317999999955092 +sha256,schematicO3,10,7.8963661,0.08864011,0.013168860000000004,7.79438312,0.00017400999999983569 +stringsearch,milp,1,0.18388120000000002,0.0335595,0.010302330000000005,0.14136292,-0.001343549999999985 +stringsearch,milp,2,0.69363608,0.0335595,0.010302330000000005,0.6511076800000001,-0.0013334300000000937 +stringsearch,milp,3,0.29521757,0.0335595,0.010302330000000005,0.25268060000000003,-0.0013248600000000527 +stringsearch,milp,4,3.47221953,0.0335595,0.010302330000000005,3.42968777,-0.001330070000000308 +stringsearch,milp,5,3.13940911,0.0335595,0.010302330000000005,3.09688421,-0.0013369299999999168 +stringsearch,milp,6,1.09623546,0.0335595,0.010302330000000005,1.0537063500000001,-0.0013327200000001899 +stringsearch,milp,7,3.06181813,0.0335595,0.010302330000000005,3.01928866,-0.0013323600000001573 +stringsearch,milp,8,2.3634300099999996,0.0335595,0.010302330000000005,2.32089717,-0.0013289900000002103 +stringsearch,milp,9,3.38724348,0.0335595,0.010302330000000005,3.34471744,-0.0013357900000001838 +stringsearch,milp,10,0.18423898,0.0335595,0.010302330000000005,0.14171779999999998,-0.001340649999999985 +stringsearch,rockclimb,1,47.92420107,0.0335595,2.08599114,45.83653618,-0.03188575000000071 +stringsearch,rockclimb,2,56.569666049999995,0.0335595,2.08599114,54.48175288,-0.03163747000000683 +stringsearch,rockclimb,3,52.43504268,0.0335595,2.08599114,50.34593046,-0.030438419999995858 +stringsearch,rockclimb,4,241.86619261,0.0335595,2.08599114,239.77796142,-0.03131944999998382 +stringsearch,rockclimb,5,163.0319334,0.0335595,2.08599114,160.94391488,-0.03153211999998007 +stringsearch,rockclimb,6,68.5607876,0.0335595,2.08599114,66.47279635,-0.03155938999999819 +stringsearch,rockclimb,7,127.34835129999999,0.0335595,2.08599114,125.26038587000001,-0.03158521000001713 +stringsearch,rockclimb,8,182.55731968999999,0.0335595,2.08599114,180.46872953,-0.03096048000000451 +stringsearch,rockclimb,9,173.34877135,0.0335595,2.08599114,171.26108052,-0.03185981000001448 +stringsearch,rockclimb,10,153.77850115,0.0335595,2.08599114,151.69088072,-0.03193020999998453 +stringsearch,schematic,1,3.4044229599999998,0.0335595,0.11188328,3.2595399300000003,-0.0005597500000005251 +stringsearch,schematic,2,4.48083497,0.0335595,0.11188328,4.33591912,-0.0005269299999997035 +stringsearch,schematic,3,1.3998466699999998,0.0335595,0.11188328,1.2548953799999998,-0.0004914899999999278 +stringsearch,schematic,4,16.368040710000002,0.0335595,0.11188328,16.22313906,-0.0005411299999986685 +stringsearch,schematic,5,12.479000560000001,0.0335595,0.11188328,12.33409301,-0.0005352299999989985 +stringsearch,schematic,6,5.833727519999999,0.0335595,0.11188328,5.688825690000001,-0.0005409500000015388 +stringsearch,schematic,7,10.04325866,0.0335595,0.11188328,9.898360380000002,-0.0005445000000021682 +stringsearch,schematic,8,11.63123021,0.0335595,0.11188328,11.48629585,-0.0005084199999993988 +stringsearch,schematic,9,13.399769289999998,0.0335595,0.11188328,13.25487894,-0.0005524300000010474 +stringsearch,schematic,10,11.90545522,0.0335595,0.11188328,11.76056573,-0.0005532899999993734 +stringsearch,schematicO3,1,0.21168259,0.0335595,0.014853110000000003,0.16350526999999998,-0.0002352899999999783 +stringsearch,schematicO3,2,0.72172124,0.0335595,0.014853110000000003,0.67353668,-0.00022804999999995884 +stringsearch,schematicO3,3,0.34495795,0.0335595,0.014853110000000003,0.29676523,-0.00021988999999997955 +stringsearch,schematicO3,4,6.0215808399999995,0.0335595,0.014853110000000003,5.97338487,-0.00021664000000080202 +stringsearch,schematicO3,5,3.17876847,0.0335595,0.014853110000000003,3.13057848,-0.00022261999999998588 +stringsearch,schematicO3,6,1.1226943600000001,0.0335595,0.014853110000000003,1.07451098,-0.00022922999999978183 +stringsearch,schematicO3,7,3.07820211,0.0335595,0.014853110000000003,3.0300163799999997,-0.00022687999999985303 +stringsearch,schematicO3,8,2.4047277599999997,0.0335595,0.014853110000000003,2.3565359,-0.00022075000000024853 +stringsearch,schematicO3,9,3.41326935,0.0335595,0.014853110000000003,3.36508456,-0.00022781999999991337 +stringsearch,schematicO3,10,3.95386833,0.0335595,0.014853110000000003,3.90568406,-0.0002283399999998617 diff --git a/results/intermittent/decomposition.tex b/results/intermittent/decomposition.tex new file mode 100644 index 00000000..7ddb7f30 --- /dev/null +++ b/results/intermittent/decomposition.tex @@ -0,0 +1,12 @@ +\begin{tabular}{lrrrrr} +\toprule +& & \multicolumn{3}{c}{power-on (\%)} & power-off (\%) \\ +\cmidrule(lr){3-5} \cmidrule(lr){6-6} +System & $T_{\mathrm{total}}$ & $T_{\mathrm{exec}}$ & $T_{\mathrm{ckpt}}$ & $T_{\mathrm{boot+restore}}$ & $T_{\mathrm{recharge}}$ \\ +\midrule +\tool & 1.0$\times$ & 8.0 & 0.7 & $<0.1$ & 91.3 \\ +\rockclimb & 18.6$\times$ & 0.9 & 1.8 & $<0.1$ & 97.3 \\ +\schematic & 6.7$\times$ & 1.5 & 1.7 & $<0.1$ & 96.9 \\ +\schematicO & 1.7$\times$ & 4.9 & 1.2 & $<0.1$ & 93.9 \\ +\bottomrule +\end{tabular} diff --git a/results/intermittent/report.md b/results/intermittent/report.md index 1532cfa0..1bf7bf1f 100644 --- a/results/intermittent/report.md +++ b/results/intermittent/report.md @@ -336,10 +336,10 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | algo | runs | total (arith) | total (geomean) | t_exec | t_checkpoint | t_recharge | t_rest | power-off share | |---|---|---|---|---|---|---|---|---| -| milp | 130 | 1.00 | 1.00 | 1.515 (151.5%) | 0.080 (8.0%) | 0.913 (91.3%) | -1.508 (-150.8%) | 91.3% | -| rockclimb | 130 | 64.04 | 18.64 | 1.515 (2.2%) | 47.572 (35.9%) | 62.603 (97.3%) | -47.648 (-35.4%) | 97.3% | -| schematic | 130 | 19.08 | 6.71 | 1.515 (23.8%) | 2.817 (32.0%) | 18.713 (96.9%) | -3.964 (-52.7%) | 96.9% | -| schematicO3 | 130 | 2.34 | 1.68 | 1.515 (125.9%) | 0.298 (23.6%) | 2.239 (93.9%) | -1.711 (-143.4%) | 93.9% | +| milp | 130 | 1.00 | 1.00 | 0.080 (8.0%) | 0.007 (0.7%) | 0.913 (91.3%) | -0.000 (-0.0%) | 91.3% | +| rockclimb | 130 | 64.04 | 18.64 | 0.080 (0.9%) | 1.378 (1.8%) | 62.603 (97.3%) | -0.020 (-0.0%) | 97.3% | +| schematic | 130 | 19.08 | 6.71 | 0.080 (1.5%) | 0.289 (1.7%) | 18.713 (96.9%) | -0.001 (-0.0%) | 96.9% | +| schematicO3 | 130 | 2.34 | 1.68 | 0.080 (4.9%) | 0.021 (1.2%) | 2.239 (93.9%) | -0.000 (-0.0%) | 93.9% | ## Decomposition per benchmark (mean share of each run's total: exec / ckpt / recharge / rest) @@ -348,10 +348,10 @@ Cell: `ok` = completed (stop pulse + __nvm_done) and return code equals the unin | aes | 6% / 0% / 94% / 0% | 0% / 2% / 98% / -0% | 0% / 2% / 98% / -0% | 2% / 0% / 98% / -0% | | crc | 14% / 0% / 85% / -0% | 0% / 2% / 98% / -0% | 0% / 2% / 98% / -0% | 10% / 3% / 88% / 0% | | rsa | 5% / 1% / 94% / -0% | 0% / 2% / 98% / -0% | 1% / 1% / 98% / 0% | 3% / 1% / 96% / -0% | -| dijkstra | 69% / 5% / 91% / -65% | 0% / 18% / 98% / -16% | 4% / 14% / 98% / -16% | 62% / 8% / 92% / -61% | -| qsort | 287% / 33% / 92% / -312% | 7% / 86% / 98% / -90% | 118% / 49% / 95% / -162% | 180% / 68% / 93% / -242% | +| dijkstra | 8% / 1% / 91% / 0% | 0% / 2% / 98% / -0% | 1% / 2% / 98% / 0% | 7% / 1% / 92% / -0% | +| qsort | 8% / 0% / 92% / -0% | 0% / 2% / 98% / -0% | 3% / 2% / 95% / -0% | 5% / 2% / 93% / -0% | | activity_recognition | 8% / 1% / 91% / -0% | 0% / 2% / 98% / -0% | 1% / 2% / 97% / -0% | 7% / 1% / 92% / -0% | -| bitcount | 1535% / 59% / 90% / -1584% | 10% / 345% / 98% / -353% | 173% / 337% / 97% / -506% | 1352% / 218% / 91% / -1561% | +| bitcount | 10% / 1% / 90% / -0% | 0% / 2% / 98% / -0% | 1% / 2% / 97% / -0% | 9% / 1% / 91% / -0% | | chacha20 | 12% / 0% / 88% / 0% | 1% / 2% / 97% / -0% | 2% / 2% / 96% / -0% | 4% / 1% / 96% / 0% | | sensor_fusion | 8% / 1% / 91% / 0% | 7% / 1% / 92% / -0% | 5% / 2% / 93% / -0% | 6% / 2% / 93% / -0% | | poly1305 | 3% / 0% / 97% / 0% | 1% / 1% / 98% / -0% | 1% / 1% / 98% / -0% | 2% / 0% / 98% / 0% | diff --git a/results/intermittent/summarize.py b/results/intermittent/summarize.py index 0d9655ef..1bb452ad 100644 --- a/results/intermittent/summarize.py +++ b/results/intermittent/summarize.py @@ -331,24 +331,35 @@ def per_algo(ds): ) L.append(f"| {b} | " + " | ".join(cells) + " |") - # LaTeX table for the paper: one row per system. + # LaTeX table for the paper: one row per system. Total is the geomean + # ratio to Bao (as in the figure); the parts are mean shares of each + # run's own total, so they add up to 100%. NAMES = { "milp": r"\tool", "rockclimb": r"\rockclimb", "schematic": r"\schematic", "schematicO3": r"\schematicO", } + + def pct(x): + return r"$<0.1$" if abs(x) < 0.0005 else f"{100 * x:.1f}" + T = [ - r"\begin{tabular}{lrrrrrr}", + r"\begin{tabular}{lrrrrr}", r"\toprule", - r"System & $T_{\mathrm{total}}$ & $T_{\mathrm{exec}}$ & $T_{\mathrm{ckpt}}$ & $T_{\mathrm{recharge}}$ & $T_{\mathrm{boot+restore}}$ & power-off \\", + r"& & \multicolumn{3}{c}{power-on (\%)} & power-off (\%) \\", + r"\cmidrule(lr){3-5} \cmidrule(lr){6-6}", + ( + r"System & $T_{\mathrm{total}}$ & $T_{\mathrm{exec}}$ & $T_{\mathrm{ckpt}}$ & " + r"$T_{\mathrm{boot+restore}}$ & $T_{\mathrm{recharge}}$ \\" + ), r"\midrule", ] for a, v in summary_algo.items(): + sh = v["share"] T.append( - f"{NAMES[a]} & {v['norm']['t_total']:.2f} & " - + " & ".join(f"{v['norm'][c]:.2f}" for c in COMPONENTS) - + f" & {100 * v['share']['t_recharge']:.0f}\\% \\\\" + f"{NAMES[a]} & {v['gmean_total']:.1f}$\\times$ & {pct(sh['t_exec'])} & " + f"{pct(sh['t_checkpoint'])} & {pct(sh['t_rest'])} & {pct(sh['t_recharge'])} \\\\" ) T += [r"\bottomrule", r"\end{tabular}"] (OUT / "decomposition.tex").write_text("\n".join(T) + "\n") From 56bba105a346663cfdd36ea6f712cb648fa3e8ff Mon Sep 17 00:00:00 2001 From: Byeongjee Kang Date: Sat, 5 Sep 2026 13:12:21 -0400 Subject: [PATCH 14/14] Generate the per-benchmark decomposition table --- .../decomposition_per_benchmark.tex | 19 +++++++++++++++ results/intermittent/summarize.py | 24 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 results/intermittent/decomposition_per_benchmark.tex diff --git a/results/intermittent/decomposition_per_benchmark.tex b/results/intermittent/decomposition_per_benchmark.tex new file mode 100644 index 00000000..76156fe1 --- /dev/null +++ b/results/intermittent/decomposition_per_benchmark.tex @@ -0,0 +1,19 @@ +\begin{tabular}{lrrrr} +\toprule +Bench. & \tool & \rockclimb & \schematic & \schematicO \\ +\midrule +aes & 5.9 / 0.4 / 93.7 & 0.4 / 1.7 / 97.9 & 0.2 / 1.9 / 98.0 & 2.0 / 0.5 / 97.6 \\ +crc & 14.1 / 0.4 / 85.4 & 0.3 / 2.1 / 97.6 & 0.2 / 1.7 / 98.2 & 9.5 / 2.8 / 87.6 \\ +rsa & 5.0 / 1.2 / 93.8 & 0.1 / 2.2 / 97.8 & 0.9 / 1.4 / 97.6 & 2.7 / 0.9 / 96.5 \\ +dijkstra & 8.2 / 0.7 / 91.1 & 0.0 / 2.2 / 97.7 & 0.5 / 1.8 / 97.7 & 7.3 / 1.2 / 91.5 \\ +qsort & 7.9 / 0.4 / 91.6 & 0.2 / 2.2 / 97.6 & 3.3 / 1.9 / 94.8 & 5.0 / 2.3 / 92.8 \\ +activity\_recognition & 8.3 / 0.6 / 91.1 & 0.5 / 1.9 / 97.7 & 0.8 / 1.9 / 97.3 & 6.5 / 1.2 / 92.4 \\ +bitcount & 9.8 / 0.6 / 89.6 & 0.1 / 2.2 / 97.8 & 1.1 / 2.2 / 96.8 & 8.6 / 0.8 / 90.6 \\ +chacha20 & 11.6 / 0.2 / 88.2 & 1.1 / 1.7 / 97.3 & 1.9 / 1.7 / 96.4 & 3.7 / 0.8 / 95.6 \\ +sensor\_fusion & 8.0 / 0.7 / 91.2 & 6.8 / 1.3 / 91.9 & 5.0 / 1.9 / 93.1 & 5.6 / 1.9 / 92.7 \\ +poly1305 & 3.2 / 0.1 / 96.7 & 1.1 / 0.7 / 98.3 & 1.5 / 0.7 / 97.9 & 2.0 / 0.3 / 97.6 \\ +cuckoo\_filter & 8.7 / 0.8 / 90.5 & 0.2 / 2.0 / 97.8 & 0.3 / 1.9 / 97.8 & 3.3 / 1.3 / 95.4 \\ +sha256 & 7.0 / 0.8 / 92.2 & 0.9 / 1.2 / 97.9 & 2.7 / 1.0 / 96.3 & 3.5 / 0.5 / 95.9 \\ +stringsearch & 6.1 / 1.9 / 92.2 & 0.0 / 2.3 / 97.7 & 0.6 / 2.1 / 97.3 & 3.9 / 1.7 / 94.4 \\ +\bottomrule +\end{tabular} diff --git a/results/intermittent/summarize.py b/results/intermittent/summarize.py index 1bb452ad..2de2856e 100644 --- a/results/intermittent/summarize.py +++ b/results/intermittent/summarize.py @@ -364,5 +364,29 @@ def pct(x): T += [r"\bottomrule", r"\end{tabular}"] (OUT / "decomposition.tex").write_text("\n".join(T) + "\n") + # Appendix table: per benchmark, mean share of each run's total as + # exec / ckpt / recharge (boot+restore is the remainder). + T = [ + r"\begin{tabular}{l" + "r" * len(ALGOS) + "}", + r"\toprule", + "Bench. & " + " & ".join(NAMES[a] for a in ALGOS) + r" \\", + r"\midrule", + ] + for b in BENCHMARKS: + cells = [] + for a in ALGOS: + da = [d for d in decomp if d["benchmark"] == b and d["algorithm"] == a] + cells.append( + " / ".join( + f"{100 * mean([d[c] / d['t_total'] for d in da]):.1f}" + for c in ["t_exec", "t_checkpoint", "t_recharge"] + ) + if da + else "---" + ) + T.append(b.replace("_", r"\_") + " & " + " & ".join(cells) + r" \\") + T += [r"\bottomrule", r"\end{tabular}"] + (OUT / "decomposition_per_benchmark.tex").write_text("\n".join(T) + "\n") + (OUT / "report.md").write_text("\n".join(L) + "\n") print(f"{len(rows)} rows -> summary.csv, report.md; {len(decomp)} decomposed rows")