Device steps are bound by kernel launches and buffer copies, not by arithmetic
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
- 8/100
- Tipo di issue
- Refactoring
- Chiarezza
- Da chiarire
- Stato di attività
- Attiva
- Ambito
- devtools, performance
Direzione di ricerca
The work is profiling-led and spans the Kokkos backend, the Adams trial paths and the GPU tests, so there is no single file to start from. Begin by reading the linked docs/dev/benchmarks.md and docs/dev/backends.md sections, then re-profile with rocprofv3 --kernel-trace on an MI325X or the CUDA equivalent on an H200. Done means a recorded profile in benchmarks.md, an A/B ratio per kept change, pytest -m gpu passing, and each unsupported lead listed as dropped.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happens
On data-centre GPUs a step is limited by launching kernels and copying buffers, not by arithmetic, which is why such a GPU gains little on a small problem. The records, each from its source and date:
- A fibre step at 2^16 samples: about 85 kernels of 3 to 9 µs on an H100 and an MI325X, with device-to-device copies 18 to 21 % of the MI325X's GPU time (rocprofv3) (SEP 36, 2026-10).
- A single-mode Adams trial on an MI325X: 30 to 70 kernels of 2 to 9 µs launched one by one, with the device busy for a third of the run (#59, 2026-10).
- Coupled taper and wall: 110,000 launches per two marches on an H200, 49,000 small buffer copies on an MI325X, and host time above march time. SEP 25's baselines were taper 2.185 s and 1.605 s, wall 1.581 s and 1.179 s, exponential at 1e-9, H200 then MI325X. It also noted that fusing each band-tile pass's finish into the next local kernel would save two launches a call.
- The Cartesian Adams passes: SEP 16's remaining leads on an AMD CDNA 3 and an NVIDIA Hopper device: the passes at about three times their memory traffic on the large state (the φ functions' evaluation), and fusing the last launches, the phase into the predictor and the scale into the norms, from about 26 launches a canonical trial.
Much has moved since. An elementwise Adams trial's source now replays as one device graph, saving about a microsecond a kernel, and small functors skip the constant-memory copy. The graph region covers only that source. Reductions, vendor GEMM, team launches with scratch and host copies disable it for the workspace's life, and Runge-Kutta and low-storage trials do not use it. So which of the figures above still hold is unknown: no later measurement of the coupled cases was found in benchmarks.md.
Why it matters
SEP 16 found a fixed cost per trial is what a cheap source cannot hide, leaving IP-DOPRI5 ahead on the canonical capillary and the coupled wall on devices. It sets the smallest problem worth running on a GPU, and is the reason for #356.
To do
- Re-profile at the current tree before changing anything, with
rocprofv3 --kernel-traceand the CUDA equivalent, on an MI325X and an H200: a fibre step at 2^16, a CartesianMultisteptrial, and the taper and wall. - For each remaining lead, fuse or drop it according to that profile: kernel fusion or graph capture beyond the Adams source, then the copies, then the two SEP 16 and SEP 25 fusions.
- Record the profile in
benchmarks.md.
What must not change: fields, beyond the rounding bound each pass already holds, and steps on a fixed schedule. Check a fused pass against #103's neighbouring changes, which touch the same trial paths. #78 has an entry saying this roadmap item should mention the graph capture, which this text does.
Done when
The profile is recorded with device and date. Each kept change's python -m benchmarks ab --device ratio on a data-centre GPU is in its pull request and shows a gain with the same steps, and pytest -m gpu passes on a CUDA and a HIP build. A lead the profile does not support is listed as dropped.
Checked against commit 8a9f764. Takes over the roadmap's entry "Launch and copy overhead on GPUs with full-rate binary64", and the clause on the coupled cases' launch and copy counts in "Execution autotuning beyond existing CPU controls", which belongs here rather than under autotuning (#115).
- Lingua principale
- Python
- Stelle
- 3
- Fork
- 3
- Merge medio
- 8h 37m
- PR unite (30g)
- 159
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di LupoLab/solprop
-
docs/dev/backends.md still lists the removed set_held_plane and held_observationForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertadocumentation priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
performance priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
The TDSE steady-current certificate can refuse a resolved taper on a band far above its frequenciesApertaarea: tdse enhancement priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
I maintainer di solito rispondono entro 1 giorno
-
The band-edge term that floors comparisons between windows is recorded only in an archived SEPApertaarea: boundaries documentation priority: low
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
area: backends bug priority: low
Difficoltà 2/5 Mezza giornata Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di LupoLab/solprop
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
pylint-dev/pylint#11791 ·
I maintainer di solito rispondono entro 1 giorno
-
Rasterio granule reads never retry, so one 503 (Service Unavailable) fails the whole requestForse già presa @chuckwondo l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
developmentseed/titiler-cmr#305 ·
I maintainer di solito rispondono entro 1 giorno
-
community enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno