Repository navigation
build: pin mlx and mlx-c to the JACCL fixes and the owned bootstrap bridge - #54
Draft
jonathan308 wants to merge 3 commits into
Draft
jonathan308 wants to merge 3 commits into
jonathan308 wants to merge 3 commits into
Conversation
Moves Source/Cmlx/mlx from cb77239b (fork main) to d0f8b0a8, the head of Layr-Labs/mlx pull request 33. That branch adds, on fork main: - upstream JACCL and distributed fixes (ml-explore/mlx #4443, #4557, #4558, and the scoped_env test helper of #4474); - zeroing of the unused tail of each JACCL send frame; - a progress guard: a JACCL call that gets no completion for longer than JACCL_PROGRESS_TIMEOUT_MS (default 120000) fails with an error and closes its group, instead of polling forever when the peer has died; - the queue pair sends from the GID that was advertised to the peer. The change is in mlx/distributed and the CPU code of one distributed op. No Metal kernel, no mirrored header and no generated source changes, so Source/Cmlx/include, include-framework and mlx-generated stay as they are. The JACCL sources are compiled only for a macOS 26.2 deployment target (mlx-conditional/jaccl_conditional.cpp); other targets keep the stub and are not affected. The pin is the head of a draft branch. It must move to the merged commit before this change is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eader Moves Source/Cmlx/mlx-c from 02cf6f4d to 489e9654, the head of Layr-Labs/mlx-c pull request 14 (one commit by Gajesh Naik on top of the current pin). It adds mlx_distributed_init_jaccl_with_bootstrap: a strict JACCL initialization whose bootstrap exchange goes through a callback of the caller instead of the TCP side channel. A provider that already holds an authenticated channel to its peer can then start the mesh without a second listener. The two mirrored copies of mlx/c/distributed_group.h are updated to the header of that commit, in the way tools/update-mlx.sh copies them. The new source mlx/c/distributed_bootstrap.cpp is compiled by the existing Cmlx target; Package.swift does not change. The Xcode project is not updated. This is the mlx-c half and the header half of Layr-Labs/mlx-swift pull request 33, on current main. The header copies are identical to the ones of that pull request. Checked: distributed_bootstrap.cpp passes a syntax check against mlx at d0f8b0a8 (the pin of the previous commit). A build of the package at these two pins was not run yet. The pin is the head of a draft branch. It must move to the merged commit before this change is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Moves Source/Cmlx/mlx from d0f8b0a8 to fdae3174 on Layr-Labs/mlx darkbloom/jaccl-send-frame-progress-guard (draft Layr-Labs/mlx#33): - b7658964: ring all_gather slice arithmetic in 64 bits. - ccf517a0: revert of the NAX quantised-MoE gather_qmm simdgroup skip (upstream ml-explore/mlx c7ff35d97), which lost JACCL all-reduce completions on a two-Mac pair with one NAX GPU. Output unchanged. - fdae3174: 30 s progress limit, teardown exit with a memory release hook (status 75) by default, completion queues sized 4x. No source files were added or removed, so the package manifest is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Summary
Two pin moves on current
main(6923a80f) that bring the two-Mac (JACCL, RDMA over Thunderbolt) fixes into the Swift stack.0656737Source/Cmlx/mlxcb77239b(fork main)d0f8b0a827ca572Source/Cmlx/mlx-cand the two mirrored copies ofdistributed_group.h02cf6f4d489e9654Status: draft. Both pins are heads of draft branches. They must move to the merged commits before this is merged. Order: Layr-Labs/mlx#33 and Layr-Labs/mlx-c#14 first, then this PR, then the pin of
libs/mlx-swiftandlibs/mlxin Layr-Labs/d-inference#1407.This PR contains and extends #33. #33 has the same mlx-c pin and the same two header copies on an older base (
0f4fe403), and pins mlx to the send-frame commit alone on an older mlx base, which is behind the mlx thatmainpins now. #33 can be closed when this one is accepted.What the mlx pin brings (
0656737)all_gatherslice (ml-explore/mlx#4443), theReduceScatter::eval_cpuassertion (ml-explore/mlx#4557), and a failed backend initialization that was cached (ml-explore/mlx#4558).JACCL_PROGRESS_TIMEOUT_MS(default 120000) fails with an error and closes its group. Before, a rank whose peer had died polled at 100% CPU with no limit.Nothing else changes between the two mlx commits: no Metal kernel, no mirrored header and no generated source.
Source/Cmlx/include,include-frameworkandmlx-generatedare not touched by this commit. The JACCL sources are compiled only for a macOS 26.2 deployment target (mlx-conditional/jaccl_conditional.cpp). Other targets keep the stub.What the mlx-c pin brings (
27ca572)mlx_distributed_init_jaccl_with_bootstrap: a strict JACCL initialization whose bootstrap exchange goes through a callback of the caller instead of the TCP side channel. One commit by Gajesh Naik on top of the mlx-c commit thatmainpins.tools/update-mlx.shcopies them. They are byte-identical to the copies in Preserve Swift Cmlx bootstrap exports and captured dependency pins #33.mlx/c/distributed_bootstrap.cppis compiled by the existingCmlxtarget.Package.swiftdoes not change.xcode/MLX.xcodeprojis not updated.What was run
d0f8b0a8mlx/c/distributed_bootstrap.cppat mlx-c489e9654against mlxd0f8b0a8build-and-teston this pull request (swift build --build-tests, default deployment target)distributed_bootstrap.cppcompiles against the pinned mlx. 927 tests run, 0 failures, 1 skipped.Not shown
02cf6f4d. (The MLX CMake build for 26.2 at this mlx commit passes in JACCL: zeroed send-frame tails, a progress guard, the advertised GID and the upstream JACCL fixes mlx#33.)mlx_distributed_init_jaccl_with_bootstrap. No caller exists in this repository. The provider side that will call it is not written yet.How AI was used
Claude Code (Anthropic) prepared the two commits, the commit messages and this description, and ran the checks above, at the direction of the account owner, who asked for this draft. The mlx-c commit and the header text are by Gajesh Naik. Nothing is proposed to
ml-explore/mlx-swift.Update 2026-10-10
64070c4movesSource/Cmlx/mlxtofdae3174(draft Layr-Labs/mlx#33 head): the 64-bit ring all_gather slice fix, the revert of the NAX quantised-MoE gather_qmm simdgroup skip (upstreamc7ff35d97, which lost JACCL completions on a two-Mac pair with one NAX GPU; output unchanged), and guard v2 (30 s progress limit, teardown exit with memory release, status 75). Gitlink only; no source files added or removed. Two-Mac evidence is in the mlx#33 description.🤖 Generated with Claude Code