Bump mlir-aie to 1.4.4.dev18 and llvm-aie to 2026091401 - #2003
Open
erwei-xilinx wants to merge 1 commit into
Open
erwei-xilinx wants to merge 1 commit into
erwei-xilinx wants to merge 1 commit into
Conversation
The pin has been at 10767b50 (2026-09-03) while mlir-aie moved on; this takes
it to f5196d8, the newest released wheel (1.4.4.dev18, 2026-09-18). llvm-aie
follows mlir-aie's own utils/peano-requirements.txt, as the comment beside it
asks: 2026090201+a36c62b9 -> 2026091401+a5d028e8.
LLVM does not move. mlir-aie at f5196d8 still pins LLVM_PROJECT_COMMIT
56bcc187 / DATETIME 2026080106, exactly what utils/clone-llvm.sh already
carries, so this is a pure mlir-aie + llvm-aie step.
No AIR source changes are needed. Built against the new wheel:
check-air-mlir 539 passed / 0 failed (7 expected-fail, 11 unsupported),
check-air-cpp 1/1, and both designs that use the memtile chain-lock path
(programming_examples/fused_decode and fused_decode_ple) compile clean.
MLIR_PYTHON_EXTRAS_SHORTHASH is deliberately left alone: nothing in the tree
reads it, so moving it would be churn rather than a bump.
One thing this pulls in is worth naming, because it changes what a
known-failing design does. mlir-aie #3702 ("Avoid sharing a stream-switch
arbiter between packet flows that can deadlock", merged 2026-09-10) lands in
this range. It diagnoses gemma4-e2b's decode hang precisely -- run its
pathfinder over that device and it reports the hazard at tile (2, 0) and again
at (2, 1) and (2, 2) -- but it cannot repair it: column 2 is oversubscribed, 9
masters against 6 arbiters, so the pass takes its "no independent arbiter is
free" fallback, keeps the assignment and warns.
What it does do is reshuffle. At (2, 0) the old router paired the four
projection-gather flows as arb1={W0,W2}, arb2={W1,W3}; the new one gives
arb1={W0, pkt12} and stacks arb2={W1,W2,W3}. Since the gather's lock chain
runs W0 -> W1 -> W2 -> W3, one 3-way hazard on arb2 has more ways to close a
cycle than two 2-way ones, and it measures that way on an NPU2 Krackan: the
pinned toolchain passes 3-7 of 20 dispatches at default power and 4 of 20 at
turbo, the bumped one 0 of 60 across both. That path is already
--expect-fail at every context in gemma4_e2b_q4nx/run_npu2_sweep.lit and is
tracked separately, so no gate changes state here -- but a reviewer weighing
this bump should know it moves an open defect the wrong way, and that the
diagnostics it adds in exchange name the tile.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
erwei-xilinx
requested review from
eddierichter-amd,
fifield and
jgmelber
as code owners
September 19, 2026 04:43
Contributor
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The bump changes stream-switch behavior on an already-failing gemma4 path, warranting final human review.
Review effort: Lite
Findings: None
What changed in this PR
Updates MLIR-AIE and LLVM-AIE pins for local builds and CI while keeping LLVM unchanged.
Changes:
- Bumps MLIR-AIE to
1.4.4.dev18. - Updates LLVM-AIE to
2026091401. - Synchronizes build scripts and CI workflows.
| File | Description |
|---|---|
utils/clone-mlir-aie.sh |
Updates MLIR-AIE source and wheel pins. |
utils/build-mlir-air-using-wheels.sh |
Updates the LLVM-AIE wheel pin. |
.github/workflows/nightlyPerfBenchmark.yml |
Aligns nightly benchmarking with the new dependency. |
.github/workflows/buildAndTestRyzenAI.yml |
Aligns Ryzen AI CI with the new dependency. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The pin has sat at
10767b50(2026-09-03) while mlir-aie moved on. This takes it tof5196d8— the newest released wheel,1.4.4.dev18, 2026-09-18 — and moves llvm-aie with it, as the comment beside that pin asks (2026090201+a36c62b9→2026091401+a5d028e8, from mlir-aie's ownutils/peano-requirements.txt).LLVM does not move. mlir-aie at
f5196d8still pinsLLVM_PROJECT_COMMIT 56bcc187/DATETIME 2026080106, exactly whatutils/clone-llvm.shalready carries. So this is a pure mlir-aie + llvm-aie step, four lines across four files.MLIR_PYTHON_EXTRAS_SHORTHASHis left alone on purpose — nothing in the tree reads it.Validation
No AIR source changes were needed. Built against the new wheel:
check-air-mlir539 passed / 0 failed (7 expected-fail, 11 unsupported)check-air-cpp1/1programming_examples/fused_decodeandfused_decode_ple— compile cleanOne behaviour change worth naming
mlir-aie #3702 ("Avoid sharing a stream-switch arbiter between packet flows that can deadlock", merged 2026-09-10) lands in this range, and it interacts with the open gemma4-e2b decode hang.
It diagnoses that hang precisely. Run its pathfinder over gemma4's device region and it reports the hazard at tile (2, 0), and again at (2, 1) and (2, 2):
It cannot repair it: column 2 is oversubscribed — 9 masters against 6 arbiters — so the pass takes its documented "no independent arbiter is free" fallback, keeps the assignment and warns.
What it does do is reshuffle. At (2, 0) the four projection-gather flows were paired
arb1={W0,W2},arb2={W1,W3}; now it isarb1={W0, pkt12}andarb2={W1,W2,W3}. The gather's lock chain runs W0 → W1 → W2 → W3, so one 3-way hazard has more ways to close a cycle than two 2-way ones — and it measures that way on an NPU2 Krackan:0 of 60 dispatches across both power modes, against a 15–35% pass rate before. That path is already
--expect-failat every context ingemma4_e2b_q4nx/run_npu2_sweep.litand is tracked separately, so no gate changes state — but a reviewer weighing this bump should know it moves an open defect the wrong way, and that what it buys in exchange is a compile-time warning naming the tile instead of a silent hang.I'd still take the bump: the regression is confined to an already-failing path, and the diagnostics are the thing that makes that path fixable. Happy to hold it if you'd rather land the gemma4 fix first.
🤖 Generated with Claude Code