)]}'
{
  "commit": "b315d00a8c14b43d211fe59968caf151fc3ffcc1",
  "tree": "4c24fa41391aba51005c2923cc1044deebf03f38",
  "parents": [
    "480cbbbf75488acc0b3fb7ab6c07fd8989e905de"
  ],
  "author": {
    "name": "maxbartel",
    "email": "bartel@roofline.ai",
    "time": "Mon Oct 05 20:18:53 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Oct 05 20:18:53 2026 +0200"
  },
  "message": "[iree-benchmark-module] Unify sync, async and dispatch execution (#24986)\n\n`iree-benchmark-module` had separate synchronous, asynchronous, and\ngenerated-dispatch execution paths that applied output processing,\nreplay capture, and profiling flushes inconsistently. Run them through\none batch lifecycle so discovery resolves each function\u0027s ABI and\niteration accounting once and every execution model shares the measured\nloop.\n\nThe shared lifecycle fixes several inconsistencies:\n\n- Retain asynchronous outputs for `--enable_output_processing`.\n- Supply fence arguments for discovered asynchronous functions.\n- Use the generated repeat count for dispatch benchmarks selected with\n`--function`.\n- Handle non-power-of-two `--batch_concurrency` without reading past the\ninvocation list.\n- Return recording devices from context setup so asynchronous fences\nparticipate in replay capture.\n\nErrors go to stderr with `EXIT_FAILURE`, matching `iree-run-module`.\nOutput processing requires a single benchmarked function, and\nnonpositive batch size or concurrency is rejected. Device profiling ends\nbefore output processing.\n\nAssisted by AI.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "015fce2da37cc4f3038ecb89c8072f95d7898915",
      "old_mode": 33188,
      "old_path": "docs/website/docs/developers/performance/benchmarking.md",
      "new_id": "ae78f69c3d4562f10065911f58e9d9d20c140d07",
      "new_mode": 33188,
      "new_path": "docs/website/docs/developers/performance/benchmarking.md"
    },
    {
      "type": "modify",
      "old_id": "580cfe80643a4ab5009103bf53c2951e06ff4509",
      "old_mode": 33188,
      "old_path": "runtime/bindings/python/CMakeLists.txt",
      "new_id": "1b0c83498942369f2dd4e11872c6d8e99240cd99",
      "new_mode": 33188,
      "new_path": "runtime/bindings/python/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6b12b113d2dbdda62f582fdea6df9207ab9c3b47",
      "new_mode": 33188,
      "new_path": "runtime/bindings/python/tests/benchmark_lifecycle_test.py"
    },
    {
      "type": "modify",
      "old_id": "e7b5b1991f0e608019f466fe6680a2b6e2109dce",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/tooling/context_util.c",
      "new_id": "4e10ab72ecd35934b3c14f9278190fb8af4ec5aa",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/tooling/context_util.c"
    },
    {
      "type": "modify",
      "old_id": "b080c000c56aeae400b284c7fe0c0f38493a3658",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/tooling/context_util.h",
      "new_id": "6dd186d4340feb9129b597b2fc30cc4552fb3979",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/tooling/context_util.h"
    },
    {
      "type": "modify",
      "old_id": "fbd32930fc7e2fd70ffef22399cf7da9d63809a8",
      "old_mode": 33188,
      "old_path": "tools/iree-benchmark-module-main.cc",
      "new_id": "c34cd0ea6626673f969a8532c0d1b33caf45df28",
      "new_mode": 33188,
      "new_path": "tools/iree-benchmark-module-main.cc"
    }
  ]
}
