[Feature Request] Bind single-rank GPU runs to the NUMA node of their GPU
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- cpp, linux
- Área
- backend, performance
Línea de trabajo
Start by identifying where the LAMMPS CUDA device is initialized and how this project handles CPU affinity; the issue does not name source files or tests. Compare automatic NUMA binding with the documentation-only alternative, while preserving launcher and user affinity and room for OpenMP threads. Done means either safe opt-in or disableable binding for unbound single-rank runs, or a documented numactl recommendation.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
A single-rank LAMMPS run started directly, without mpirun, has no CPU binding. The scheduler may then place the host process on a NUMA node far from its GPU. For small and medium systems the host side matters, and binding the process to the GPU's NUMA node gives a small, measurable speedup. DeePMD-kit could do this binding automatically when the launcher has not set one, or at least recommend it in the documentation.
Detailed Description
Observation. Measured with compressed DPA4C on the LAMMPS CUDA path, on a workstation with 8 × RTX PRO 6000 and 192 CPUs. The NUMA node of GPU 0 holds CPUs 0–23 and 96–119. The numbers are paired medians of six alternating rounds.
- Bound to one core versus a direct, unbound start: Mini at 10,296 atoms is 0.9% faster, and Nano at 512 atoms is 2.1% faster.
- A direct start confined to the CPUs of the GPU's NUMA node is as fast as the bound run for Mini at 10,296 atoms (+0.2%). Confined to another NUMA node, it is 0.65% slower. So at this size the gain comes from host-to-GPU locality.
- At 512 atoms the step is host bound, and pinning to a single core gains a further 2.5% beyond NUMA confinement.
Suggested approach. This follows the NUMA binding of DeepSeek's DeepInfer, which looks up the NUMA node of each accelerator, restricts the process's CPU affinity to that node through libnuma and binds memory allocation there.
- When the device is initialized, look up the NUMA node of the GPU, for example from
/sys/bus/pci/devices/<bdf>/numa_node. - Only when the process affinity is still the whole machine, meaning neither the launcher nor the user has bound it, restrict the affinity to the CPUs of that node and optionally set the memory policy.
- Provide an environment variable to disable the binding.
The binding must not override a binding chosen by mpirun, Slurm or numactl, and it must leave room for the OpenMP threads of LAMMPS. A simpler alternative is a short note in the LAMMPS installation and running documentation recommending numactl --cpunodebind=<node> --membind=<node> for single-rank GPU runs.
The expected gain is a few percent at most, mainly for small, host-bound systems.
- Lenguaje dominante
- Python
- Estrellas
- 2.1k
- Forks
- 663
- Merge medio
- 3 d 11 h
- PR fusionados (30 d)
- 25
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni 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 deepmodeling/deepmd-kit
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
deepmodeling/deepmd-kit#6086 ·
Los mantenedores suelen responder en 3 días
-
Fine-tune descriptor mismatch warning should ignore seedPosiblemente ocupada @SiyuanChenToDo la tomó hace 23 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
deepmodeling/deepmd-kit#6038 · 2 comentarios ·
Los mantenedores suelen responder en 3 días
-
Docs enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
deepmodeling/deepmd-kit#5766 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
branch: master lang: py todo comment type: todo
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
deepmodeling/deepmd-kit#5480 ·
Los mantenedores suelen responder en 3 días
-
branch: master lang: toml todo comment type: todo
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
deepmodeling/deepmd-kit#5462 ·
Los mantenedores suelen responder en 3 días
Todos los issues de deepmodeling/deepmd-kit
Issues similares
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
gke-labs/kube-agents#5671 ·
Los mantenedores suelen responder en 1 día
-
docs(auth): Method B step 4 should tell users to tick "Use this client for an AI-powered agent"Abiertodocumentation next-release v0.9.6
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
khuisman/mcp-gee-sweet#1446 ·
Los mantenedores suelen responder en 1 día
-
In-box secret files written before their chmod: lc-creds, stacks tee, and the workspace tokenAbiertomodel:sonnet runtime:claude security size:S
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
FootprintAI/Containarium#3671 ·
Los mantenedores suelen responder en 1 día
-
HolidayBase: reassigning `language` does not re-initialize translations or re-populate holidaysPosiblemente ocupada @shikhabhadoria la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
vacanza/holidays#4116 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug CLI exec
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día