| 228 | |
| 229 | |
| 230 | def execute(args, binaries, configs, result, roots): |
| 231 | for repetition in range(args.repetitions): |
| 232 | modes = list(binaries) |
| 233 | modes = modes[repetition % len(modes):] + modes[:repetition % len(modes)] |
| 234 | for scenario in args.scenarios.split(","): |
| 235 | config = {**configs[scenario], "events": args.events, "turns": args.turns, "serialize_stop": args.serialize_stop} |
| 236 | for workers in map(int, args.workers.split(",")): |
| 237 | for mode in modes: |
| 238 | row = measure(pathlib.Path(binaries[mode]).resolve(), workers, config, roots[mode]) |
| 239 | row.update(mode=mode, scenario=scenario, repetition=repetition) |
| 240 | result["runs"].append(row) |
| 241 | result["summary"] = summarize(result["runs"]) |
| 242 | pathlib.Path(args.output).write_text(json.dumps(result, indent=2) + "\n") |
| 243 | print(json.dumps({"mode": mode, "scenario": scenario, "workers": workers, "rep": repetition, |
| 244 | "wall_s": row["wall_s"], "verified": len(row.get("verified", [])), |
| 245 | "errors": len(row["verification_errors"])}), flush=True) |
| 246 | |
| 247 | |
| 248 | if __name__ == "__main__": |