A lockstep batch of small runs on a GPU reaches a fraction of the throughput of large ones

Aperta
#356 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
12/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
performance

Direzione di ricerca

The issue is a measurement plus a possible design decision, not a self-contained code change. Start from the batch lockstep stage passes described in docs/dev/roadmap.md and docs/dev/decisions.md (ADR-058, batch axis of the state). The first step is to run the SEP 36 comparison in binary64 on an A40 at 2^14, 2^15 and 2^18 samples, recording machine and date. Done when those ratios are recorded and either a SEP covers the batch axis or the issue closes on the measurement.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

area: gpu enhancement performance priority: low
What is missing

A lockstep batch runs several fixed-schedule members of one case together on a GPU. It fuses only the accepted update, so for small runs the stage passes stay one launch per member, and launch cost bounds the batch.

On an NVIDIA A40, SEP 36's rule compared a noise ensemble of small fibre runs with the same case at 2^18 samples. The batch at 2^14 and 2^15 samples reached 4.69e7 and 7.24e7 samples times steps per second, 0.25 and 0.39 of 1.85e8 at 2^18 (SEP 36's numbers, 2026-10-27). Below a half, the rule proposes a fused batch axis as a later SEP. Concurrent processes never beat the batch.

Context
  • Those figures are in mixed precision, on SEP 36's code, withdrawn the same day, which is not on main. The roadmap says binary64 runs are bound the same way. That was not measured in the same comparison, and the device work since (SEP 39, #59) has changed launch costs. Read, not run.
  • ADR-058 reserves the state's batch axis for change, and #110 proposes a SEP deciding that seam. This issue holds the GPU case for it. The launch costs behind it are #357.
To do
  • Repeat SEP 36's comparison in binary64 at the current tree on an A40, at 2^14, 2^15 and 2^18 samples: the batch, concurrent processes and solo runs.
  • If the small runs still reach less than half, write the SEP, or add the case to #110's. If not, close this with the numbers.

Needs a decision: whether this is its own SEP or part of #110's, by the maintainer. I recommend #110's, because a batch axis through the stage passes changes the same seam.

Done when

The binary64 ratios are recorded with machine and date, and either a SEP covers a batch axis through the stage passes or this closes on the measurement.


Checked against commit 8a9f764. Takes over the roadmap's entry "A fused batch axis for small runs on a GPU".

Lingua principale
Python
Stelle
3
Fork
3
Merge medio
4h 42m
PR unite (30g)
91

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di LupoLab/solprop

Tutte le issue di LupoLab/solprop

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.