"""Basic runner for the instruction count microbenchmarks. The contents of this file are placeholders, and will be replaced by more expressive and robust components (e.g. better runner and result display components) in future iterations. However this allows us to excercise the underlying benchmark generation infrastructure in the mean time. """ # mypy: ignore-errors import argparse import sys from typing import List from applications import ci from core.expand import materialize from definitions.standard import BENCHMARKS from execution.runner import Runner from execution.work import WorkOrder def main(argv: List[str]) -> None: work_orders = tuple( WorkOrder(label, autolabels, timer_args, timeout=600, retries=2) for label, autolabels, timer_args in materialize(BENCHMARKS) ) results = Runner(work_orders).run() for work_order in work_orders: print( work_order.label, work_order.autolabels, work_order.timer_args.num_threads, results[work_order].instructions, ) if __name__ == "__main__": modes = { "debug": main, "ci": ci.main, } parser = argparse.ArgumentParser() parser.add_argument("--mode", type=str, choices=list(modes.keys()), default="debug") args, remaining_args = parser.parse_known_args(sys.argv) modes[args.mode](remaining_args[1:])