Skip to content

chore(runtime): pin the runtime submodule to simpler 4e4d3a4a - #2646

Merged
lyfne123 merged 2 commits into
hw-native-sys:mainfrom
Little-oil:update-runtime-simpler-4ec5f37d
Sep 4, 2026
Merged

chore(runtime): pin the runtime submodule to simpler 4e4d3a4a#2646
lyfne123 merged 2 commits into
hw-native-sys:mainfrom
Little-oil:update-runtime-simpler-4ec5f37d

Conversation

@Little-oil

@Little-oil Little-oil commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Move the runtime gitlink from 77fa0171 (main today, #2641) to 4e4d3a4a — simpler "CI: bump pinned pto-isa to a8040450" (#2123), 27 commits forward. This re-lands the range #2641 stepped back over (77fa0171..15f5cbd9) and adds what simpler has merged since.

The pin chain moves with it:

  • pto-isa 96ba706ca8040450. runtime/pto_isa.pin is the source of truth and toolchain/versions.env derives pto-isa from that file, so there is no pypto-side pin to edit. The one onboard-relevant fix in the range is 5d0fb9a8 "fix TCI A2A3 for prefill EP=2 NAN problem"; 07953421 corrects the tsort32 golden to the stable-quicksort order VBS32 actually produces, and 9c864fb4 reverts the TMATMUL_MX ping-pong change from earlier in the same range. The rest is CPU_SIM work (TLOAD padding, TMATMUL_ACC/TGEMV_ACC seeding, mixed-type TADD/TABS, TCI/TCVT scratch overloads, GM/UB transfer layout, DIR_BOTH FIFO order, FP4 ConvTile) plus A5 fixes (int64 shift carry, UB ND→NZ, TSel bf16).
  • ptoas stays at v0.57.

Simpler commits entering the pin (77fa0171..4e4d3a4a, newest first):

simpler PR Change
#2123 CI: bump pinned pto-isa to a8040450
#2070 elide A5 terminal releases after orchestration
#2099 dispatch-correlated same-host multi-rank swimlane timeline
#2117 docs: the device log threshold is fixed at device init
#2105 skip the empty Tier-0 staging order in the a5 dispatch loop
#2118 drain the host-log writer before scene tests read captured spans
#2112 rename maybe_rendezvous_ring to try_launch_sync_start_cohort
#2107 fix the swimlane pool layout at compile time
#2113 drop SimplerHostSpan's version and size words
#2110 classify Graph tensor sources by address, name them by kind
#2111 CI: bump pinned pto-isa to c0e28cfb
#2108 docs: why the host-log claim budget is not the knob it looks like
#2095 host_build_graph early dispatch via an ED publish list
#2029 host logging becomes nonblocking with accountable loss
#2101 host_build_graph includes say what each file uses
#2090 A5 HBG single-lane scheduling switches to AICore
#2100 AICPU scheduler timeout collapses to one 20 s constant
#2098 host_build_graph's host side stops reaching into device facilities
#2093 DFX collectors bind their per-run output separately
#2094 host_build_graph orchestration confined to the host
#2092 simpler_init provisions the async-DMA workspace itself
#2087 each runtime gets its own TaskId type
#2089 async-DMA provisioning asks for one flag, not an engine set
#2091 ProfilerBase::quiesce() drains without retiring the threads
#2088 docs for the async-DMA workspace
#2072 complete A5 HBG single-lane scheduling
#2086 one signed counting domain for host_build_graph

One source change: the per-dispatch DFX directory

simpler #2099 appends rank{r}/d{k} to output_prefix inside the ChipWorker child, for every diagnostic that writes below it. _submit_chip was appending the same suffix on the driver side, so under this pin the two nest and every artifact lands at <dfx_base>/rank{r}/d{k}/rank{r}/d{k}/ — two levels below where the post-pass looks. dist-system-tests caught it: test_l3_dfx_per_rank found the outer directory (this driver still stamps dispatch_program.json into it) and none of the files in it.

The driver now only derives that directory, for the dispatch-program marker, _clear_dfx_dispatch_dirs and the _collect_l3_swimlane globs, and forwards config untouched. TestSubmitChip asserted the mutation, so its cases now assert what is left: the base prefix reaches the submit un-suffixed, and the derived directory is named by where dispatch_program.json lands. The two counters stay in step because both count exactly the dispatches this driver marks: _make_call_config sets output_prefix only when a DFX flag is on, and the runtime splits only a config that carries one.

Known gap, recorded rather than papered over: a prepared DistributedWorker running the swimlane two-pass reuses its Worker, so the runtime's per-child capture counter does not reset alongside this driver's and pass 2 would land in d{k+1}. The one-shot path — which is what the ST covers — creates a fresh Worker per pass, resetting both. Pairing those captures by the dispatch_identity.json sidecar #2099 now writes is the durable fix and belongs in its own change.

Nothing else needed a source change

The other refactors that touch what pypto emits or includes were checked directly:

One consumer-side note that is not a pypto change: #2029 adds _flush_host_log, _start_host_log_writer and the two host-log counters to simpler's _task_interface extension, so a local checkout needs its bindings rebuilt after this bump. pypto calls none of those symbols.

Test plan

  • pypto_core builds clean against this pin, rebased onto refactor(runtime)!: store platform as its two axes, arch and execution_mode #2642 (cmake --build build --parallel 64, exit 0).
  • Orchestration header probe compiles under the UT's include order (g++ -std=c++17 -fsyntax-only, exit 0).
  • First CI run on this pin: 19/20 green; dist-system-tests failed on the nested DFX directory, fixed above.
  • Second run: dist-system-tests green; TestSubmitChip still asserted the old contract, updated in the same commit.
  • tests/ut/runtime + tests/ut/codegen locally: 1719 passed, 63 skipped.
  • Fourth run: all 20 checks green.
  • CI on the final (comment-only) revision.

One flake to flag rather than bury: test_l3_host_tensor_allreduce.py::test_host_tensor_allreduce_loop[2] failed once on the third run — round 2 read round 0's values (max diff = 20155.0, the offsets that test spaces its rounds by), i.e. the reused allreduce signal's self-clearing epilogue lost a race. The same tree passed it on the next run, and the run before it, so it is not deterministic. Worth watching under this pin all the same: simpler #2095 changes host_build_graph's dispatch timing, which is the kind of change that wakes a sleeping signal-reuse race. Three runs on this pin, one failure.

🤖 Generated with Claude Code

https://claude.ai/code/session_014EGTChvJLW5gXVDDMYzFdH

@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: c6ca4f2b-1bb2-4f54-a5a8-7901ca36a399

📥 Commits

Reviewing files that changed from the base of the PR and between b816516 and 54efe34.

📒 Files selected for processing (1)
  • runtime

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The runtime submodule pointer changes from one pinned commit to another. No exported or public entity declarations change.

Changes

Runtime revision update

Layer / File(s) Summary
Update runtime submodule pointer
runtime
The submodule reference changes to commit 4ec5f37dc5aa4e89d2032e8b2cf2848debe3e8da.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 54efe

This updates the pinned runtime revision while preserving the existing pypto source and ptoas version. The supplied build checks pass and no actionable merge-blocking risk is identified.

Poem

A rabbit checks the runtime pin
One fresh commit hops in
The pointer rests in place
No public names change their face
Carrots celebrate the revision grin

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the main change: pinning the runtime submodule to a simpler revision. It is concise and technically relevant to the changeset.
Description check ✅ Passed The description is directly related to the runtime submodule update. It explains the pin changes, affected runtime components, compatibility checks, tests, and known risks.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Move the `runtime` gitlink from `77fa0171` to `4e4d3a4a` (simpler "CI: bump
pinned pto-isa to a8040450", hw-native-sys#2123) -- 27 commits.

- pto-isa moves with it: `runtime/pto_isa.pin` goes `96ba706c` ->
  `a8040450`, and `toolchain/versions.env` derives pto-isa from that file,
  so there is no pypto-side pin to edit.
- ptoas is untouched, still `v0.57`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014EGTChvJLW5gXVDDMYzFdH
@Little-oil
Little-oil force-pushed the update-runtime-simpler-4ec5f37d branch from 54efe34 to 76f2339 Compare September 4, 2026 03:33
@Little-oil Little-oil changed the title chore(runtime): pin the runtime submodule to simpler 4ec5f37d chore(runtime): pin the runtime submodule to simpler 4e4d3a4a Sep 4, 2026
@Little-oil
Little-oil force-pushed the update-runtime-simpler-4ec5f37d branch 2 times, most recently from 258b1a3 to bc63c5a Compare September 4, 2026 09:07
simpler hw-native-sys#2099 appends `rank{r}/d{k}` to `output_prefix` inside the ChipWorker
child, for every diagnostic that writes below it. `_submit_chip` was appending
the same suffix on the driver side, so under this pin the two nest: every
artifact lands at `<dfx_base>/rank{r}/d{k}/rank{r}/d{k}/`, two levels below
where the post-pass looks. `test_l3_dfx_per_rank` found the outer directory —
this driver still stamps `dispatch_program.json` into it — and none of the
files in it, which is what `dist-system-tests` reported.

The driver now only derives that directory for its own bookkeeping: the
dispatch-program marker, `_clear_dfx_dispatch_dirs`, and the
`_collect_l3_swimlane` globs. `config` is forwarded untouched, so the restore
in the submit's `finally` goes away with the mutation it undid.

`TestSubmitChip` asserted that mutation, so its cases now assert what is left:
the base prefix reaches the submit un-suffixed, and the directory this driver
derived is named by where `dispatch_program.json` lands — the check
`test_records_each_dispatchs_l2_program` already used.

The two counters stay in step because both count exactly the dispatches this
driver marks: `_make_call_config` sets `output_prefix` only when a DFX flag is
on, and the runtime splits only a config that carries one. A prepared
`DistributedWorker` running the swimlane two-pass is the one gap — it reuses
its Worker, so the runtime's per-child counter does not reset with this
driver's and pass 2 lands in `d{k+1}`. The one-shot path creates a fresh
Worker per pass, which resets both.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014EGTChvJLW5gXVDDMYzFdH
@Little-oil
Little-oil force-pushed the update-runtime-simpler-4ec5f37d branch from bc63c5a to e478e2a Compare September 4, 2026 09:33
@lyfne123
lyfne123 merged commit 9f657f3 into hw-native-sys:main Sep 4, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants