chore(runtime): pin the runtime submodule to simpler 4e4d3a4a - #2646
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review. 📝 WalkthroughWalkthroughThe ChangesRuntime revision update
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: ⚪ Minimal · up to 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
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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. Comment |
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
54efe34 to
76f2339
Compare
258b1a3 to
bc63c5a
Compare
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
bc63c5a to
e478e2a
Compare
Summary
Move the
runtimegitlink from77fa0171(main today, #2641) to4e4d3a4a— 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:
96ba706c→a8040450.runtime/pto_isa.pinis the source of truth andtoolchain/versions.envderives pto-isa from that file, so there is no pypto-side pin to edit. The one onboard-relevant fix in the range is5d0fb9a8"fix TCI A2A3 for prefill EP=2 NAN problem";07953421corrects thetsort32golden to the stable-quicksort order VBS32 actually produces, and9c864fb4reverts 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,TSelbf16).v0.57.Simpler commits entering the pin (
77fa0171..4e4d3a4a, newest first):a8040450maybe_rendezvous_ringtotry_launch_sync_start_cohortSimplerHostSpan's version and size wordsc0e28cfbhost_build_graphearly dispatch via an ED publish listhost_build_graphincludes say what each file useshost_build_graph's host side stops reaching into device facilitieshost_build_graphorchestration confined to the hostsimpler_initprovisions the async-DMA workspace itselfTaskIdtypeProfilerBase::quiesce()drains without retiring the threadshost_build_graphOne source change: the per-dispatch DFX directory
simpler #2099 appends
rank{r}/d{k}tooutput_prefixinside the ChipWorker child, for every diagnostic that writes below it._submit_chipwas 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-testscaught it:test_l3_dfx_per_rankfound the outer directory (this driver still stampsdispatch_program.jsoninto it) and none of the files in it.The driver now only derives that directory, for the dispatch-program marker,
_clear_dfx_dispatch_dirsand the_collect_l3_swimlaneglobs, and forwardsconfiguntouched.TestSubmitChipasserted 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 wheredispatch_program.jsonlands. The two counters stay in step because both count exactly the dispatches this driver marks:_make_call_configsetsoutput_prefixonly 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
DistributedWorkerrunning 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 ind{k+1}. The one-shot path — which is what the ST covers — creates a fresh Worker per pass, resetting both. Pairing those captures by thedispatch_identity.jsonsidecar #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:
task_interface/task_id.hper runtime. Codegen emitsTaskIdandTaskId::invalid()into orchestration TUs (src/codegen/array_op_codegen.cpp); both are present in the newhost_build_graph/task_id.h, which the orchestration include path already reaches. Nothing in pypto includes the moved headers by name.RuntimeOpsout oforchestration_api.hintoruntime_ops.hand dropped its transitive<vector>/<array>/<mutex>/<thread>includes. Generated orchestration includes onlyorchestration_api.handtensor.h(plus the standard headers codegen emits itself), and a probe TU built with the exact-Ilist fromtest_generated_orchestration_compiles_against_the_pinned_runtimesyntax-checks clean — no repeat of thecommon/hierarchical/types.hshadowing that chore(runtime): bump the runtime submodule to simpler 15f5cbd9, renaming TaskTensor to Tensor #2617 had to work around.is_graph_record_addressand feat(ir): Add reinterpret_view dtype alias operator #2113/feat(ir): support odd automatic vector splits #2107/fix(ir): Validate row reduction scratch shape #2099 reworked the span and swimlane internals without touchingorchestration_api.h,host_build_graph/types.h,tensor.hortask_id.h, so nothing pypto compiles against moved.GRAPH_MAX_TENSOR_ARGSis still 128, matching thekMaxBoundaryTensorsconstant inlegalize_graph_boundary_pass.cppandverify_graph_functions.cpp.CallConfiggrows acapture_clock_anchorsfield (fix(ir): Validate row reduction scratch shape #2099). pypto constructsCallConfig()and sets named attributes through simpler's nanobind binding rather than mirroring the struct, so the wire-layout change is contained in the runtime.platform_comm/comm_context.hfrom the collective kernel templates, is unaffected across this range.One consumer-side note that is not a pypto change: #2029 adds
_flush_host_log,_start_host_log_writerand the two host-log counters to simpler's_task_interfaceextension, so a local checkout needs its bindings rebuilt after this bump. pypto calls none of those symbols.Test plan
pypto_corebuilds 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).g++ -std=c++17 -fsyntax-only, exit 0).dist-system-testsfailed on the nested DFX directory, fixed above.dist-system-testsgreen;TestSubmitChipstill asserted the old contract, updated in the same commit.tests/ut/runtime+tests/ut/codegenlocally: 1719 passed, 63 skipped.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