commit - release 1

This commit is contained in:
2026-03-18 11:47:48 -07:00
commit 6f43807900
109 changed files with 14909 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
import argparse
import sys
from benches.loader import resolve_bench
from kernbench.cli.probe import cmd_probe
from kernbench.cli.report import format_report
from kernbench.common.types import SimEngine
from kernbench.runtime_api.bench_runner import run_bench
from kernbench.runtime_api.types import DeviceSelector, resolve_device
from kernbench.sim_engine.engine import GraphEngine
from kernbench.topology.builder import resolve_topology
def build_parser() -> argparse.ArgumentParser:
p = argparse.ArgumentParser(prog="kernbench")
sub = p.add_subparsers(dest="cmd", required=True)
runp = sub.add_parser("run", help="Run a benchmark")
runp.add_argument("--topology", required=True)
runp.add_argument("--bench", required=True)
runp.add_argument(
"--device", default=None, help="Target device: 'all' or 'sip:<N>' (default: all)"
)
runp.set_defaults(_handler=cmd_run)
probep = sub.add_parser("probe", help="Probe latency and BW for predefined traffic patterns")
probep.add_argument("--topology", required=True)
probep.add_argument("--case", default="all", help="Case name or 'all' (default: all)")
probep.set_defaults(_handler=cmd_probe)
return p
def engine_factory(topology: object, device: DeviceSelector) -> SimEngine:
topo_obj = getattr(topology, "topology_obj", topology)
return GraphEngine(topo_obj)
def cmd_run(args) -> int:
print("> Running benchmark with:", args)
topo = resolve_topology(args.topology)
bench = resolve_bench(args.bench)
device = resolve_device(args.device)
result = run_bench(topology=topo, bench_fn=bench, device=device, engine_factory=engine_factory)
topo_obj = getattr(topo, "topology_obj", topo)
spec = getattr(topo_obj, "spec", None)
if result.traces:
print(format_report(result.traces, title=args.bench, spec=spec))
print(result.summary_text())
return 0 if result.completion.ok else 1
def main(argv=None) -> int:
parser = build_parser()
args = parser.parse_args(argv)
return int(args._handler(args))
if __name__ == "__main__":
sys.exit(main())