SDMA is Triton-only, and no collective uses it
Los mantenedores suelen responder en 1 día
@ariscript ya está trabajando en esto.
Desde el 16/10/2026.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 18/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- distributed-systems, hpc
Línea de trabajo
Start by comparing how copy_engine_ctx and use_copy_engine are threaded through put in iris/mem/triton/ops.py (around line 280) with the Gluon put in iris/mem/gluon/context.py, then read the all-gather kernels in iris/ccl/triton/ and iris/ccl/gluon/. The first step is the Gluon signature mirror. Done means the Gluon call accepts the same arguments and the SDMA all-gather matches torch.distributed on 2, 4 and 8 ranks. The design choices (a Config engine axis versus a variant name) need maintainer input before coding.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
SDMA is Triton-only, and no collective uses it
Checked on main @ 6462f028.
Where SDMA exists today
iris/mem/triton/ops.py exposes copy_engine_ctx / use_copy_engine on four
entry points:
| op | def at |
|---|---|
put |
280 |
atomic_add |
511 |
atomic_cas |
638 |
quiet |
964 |
Where it does not
Gluon has no SDMA surface. iris/mem/gluon/context.py mirrors the Triton RMA
set — load, store, get, put, copy, and nine atomics — but none of them
take a copy-engine argument, and sdma appears nowhere under iris/mem/gluon/.
No collective uses SDMA on either backend. grep -r "sdma\|copy_engine" iris/ccl/ returns nothing. Every kernel under iris/ccl/triton/ and
iris/ccl/gluon/ moves bytes with CU loads and stores.
So SDMA is available to someone hand-writing a Triton kernel against the RMA
primitives, and to nobody else. ctx.ccl.* cannot reach it.
Note the shape this leaves us in: the Gluon backend does have TDM
(iris/ccl/gluon/all_gather_tdm.py, #585, gfx1250), so Gluon got the newer
data-movement engine but not MI300-series copy engines, and the collectives got
neither.
Scope
Two pieces, in order:
- Gluon copy-engine surface — add
copy_engine_ctx/use_copy_engineto
IrisDeviceCtx.put(and the atomics that have it on the Triton side), matching
the Triton signatures so kernels can move between backends. - An SDMA collective — one collective, one backend, as a proof point. All-gather
is the natural first: the transfer is a contiguous per-destination copy, which
is exactly thecontiguous_copy=Truepathputalready supports.
Work
- Mirror
copy_engine_ctx/use_copy_engineiniris/mem/gluon/context.py - Add a copy-engine all-gather variant behind
all_gather_variant="sdma" - Decide whether
Configgrows an engine axis or SDMA stays a variant name - Correctness vs
torch.distributedon 2/4/8 ranks before timing - Benchmark vs the CU-driven variants through
benchmark/ccl/bench_all_gather.py,
which already has acomm_smsaxis — the interesting number is CU count at
equal bandwidth, not bandwidth at equal CU count
Related
#568 (engines= / copy-engine API), #573 (triggered SDMA), #585 (TDM all-gather).
- Lenguaje dominante
- Python
- Estrellas
- 203
- Forks
- 56
- Merge medio
- 3 d 7 h
- PR fusionados (30 d)
- 31
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ROCm/iris
-
core examples good first issue help wanted iris python
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
benchmarks bug examples iris test
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
bug examples invalid iris
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
iris test
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
ROCm/iris#600 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
all_reduce: every iris.store passes a vectorization hint, none of the iris.load calls doQuizá libre de nuevo @anchit-goel la tomó hace 12 días y no hay ningún pull request abierto. Abiertogood first issue help wanted iris
Dificultad 3/5 Medio día Aptitud para principiantes 62/100
ROCm/iris#592 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Issues similares
-
Suggestion: Add requirements.txtAbierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
MangasMango/bound-to-rot#41 · 1 comentario ·
-
breaking change
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
check-skill-pages: show fixture build errors when a build failsPosiblemente ocupada @ShahadatTest la tomó hoy. Abiertogood first issue P2
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
coco-research/coco#439 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
IgniteRobotics/flashpoint#45 ·
Los mantenedores suelen responder en 1 día