You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fb62638
Browse filesBrowse the repository at this point in the historyBrowse files
feat(sweep): ✨ split the SRC sweep among the GPUs of a node (#44)
* docs(spec): 📝 design for an SRC sweep over the GPUs of a node
Phase 2 of the multi-GPU plan: one process per GPU, NCCL collectives,
the sketch index split among the GPUs, with a communicator passed in
Resources. Targets strong scaling at the Phase 1 reference size.
Assisted-by: Pi:claude-opus-5-5
* docs(spec): 📝 fold the refinements found while planning into the spec
An abort method on the communicator, the truncation rank agreed through
a callback, output sinks, a logged warning for large in-memory inputs,
and MPICH in CI and in the dev shell.
Assisted-by: Pi:claude-opus-5-5
* docs(plan): 📝 implementation plan for the multi-GPU SRC sweep
Eleven tasks, each test-first, from the communicator to the scaling
runs. Written under the no-full-code rule of the design phase:
interfaces, pseudocode and test specifications.
Assisted-by: Pi:claude-opus-5-5
* docs(plan): 📝 align the multi-GPU spec and plan with main
Phase 1 is merged, logging is the standard library, the docs moved to
the Fumadocs site, and the CUDA 13 CuPy needs the cu13 NCCL wheel.
Assisted-by: Pi:claude-opus-5.5
* feat(utils): ✨ device selection and peer copies between GPUs
Assisted-by: Pi:claude-opus-5.5
* feat(group): ✨ one thread per device and the collectives between them
Allgather, gather and scatter over peer copies, ordered by events, in a
single process. A failing rank aborts the group so that no rank waits
forever; on the CPU the devices are simulated for testing.
Assisted-by: Pi:claude-opus-5.5
* feat(sweep): ✨ split the sweep among the GPUs of a node
Resources(devices=...) gives each device a contiguous block of the
sketch columns. The left-to-right pass needs no communication; per site
of the right-to-left pass the sketch is gathered on the first device for
the QR, the output core scattered by rows, and the projected environment
gathered on every device. Cores are read once and, with peer access,
uploaded in slices and gathered over the peer links. One device keeps
the previous sweep, bit for bit.
Assisted-by: Pi:claude-opus-5.5
* perf(bench): 📈 multi-GPU scaling command for the large benchmark
Assisted-by: Pi:claude-opus-5.5
* docs: 📝 running one sweep on several GPUs
Assisted-by: Pi:claude-opus-5.5
* chore: remove implementation plans.
---------
Co-authored-by: Panadestein <rpana92@gmail.com>
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -105,7 +105,9 @@ out = src(
105
105
)
106
106
```
107
107
108
-
See [Large problems](https://algorithmiq.github.io/src-method/features/large-problems) for the budgets, the scratch directory and how to read the logged plan.
108
+
On a node with several GPUs, `Resources(devices=4)` splits the sweep among four of them, in the same process.
109
+
110
+
See [Large problems](https://algorithmiq.github.io/src-method/features/large-problems) for the budgets, the scratch directory, several GPUs and how to read the logged plan.
0 commit comments