Releases: llnl/mpibind
Releases · llnl/mpibind
Support topologies with NUMAs that have intersecting PUs
v0.23.0 — 2025-09-03
Changes since v0.22.0 (2025-07-20)
Highlights
- Topology loading: Add
mpibind_load_topologyand integrate it in both the Flux and Slurm plugins. - Topology handling: Support topologies with NUMAs that intersect PUs, e.g., NVIDIA GraceHopper.
- API: Add
mpibind_get_hwloc_version. - CLI/QoL: Simplify output of the MPI affinity program.
- Docs/Tutorials: GMiS tutorial updates and a new module.
Flux plugin
- Use
mpibind_load_topologyin the plugin.
Slurm plugin
- Use
mpibind_load_topologyin the plugin.
Core
- Add
mpibind_load_topologywrapper. - Support topologies where NUMAs intersect PUs. Requires
hwloc v2.12.0or newer. - Add
mpibind_get_hwloc_version. - Simplify output of the MPI affinity program.
Tests
- Add examples of topology files and use
mpibind_load_topology.
Documentation & Tutorials
- Update GMiS tutorial; add
tutorials/gmis25/module2.md.
Scope & Stats
- 11 files changed, 1650 insertions, 167 deletions.
Restrict topology to integer range or file with range
v0.22.0 — 2025-07-20
Changes since v0.21.0 (2025-03-09)
Highlights
- Restrict IDs UX: Accept restrict IDs as integers or from a file for easier configuration.
- Stability: Fix a segfault when binding to CPUs under certain conditions.
- Dev ergonomics: Introduce utility functions (plus small helpers like string trim) to simplify internal usage.
- Docs structure: Move the documentation index into
doc/and add links to tutorials; tutorial updates (incl. GMiS).
New / Improved
- Restrict handling:
- Parse restrict IDs as ints or from a file.
- Internals:
- Add developer utility functions; trim-whitespace helper.
Bug fixes
- Avoid segmentation fault when binding to CPUs.
Documentation & Tutorials
- Move documentation index to
doc/. - Add links to docs and tutorials; general tutorial refresh.
- GMiS workshop header/content.
- Slurm GPU tutorial: fix
visible_devices.
Scope & Stats
- 14 files changed, 941 insertions, 1352 deletions.
Constrain assignments to Slurm jobstep resources
v0.21.0 — 2025-03-09
Changes since v0.20.0 (2025-01-11)
Highlights
- Slurm plugin: Constrain mpibind to jobstep resources to ensure binding respects the resources actually allocated to the step.
Slurm plugin
- Constrain mpibind to jobstep resources by default.
Scope & Stats
- 1 file changed, 2 insertions, 2 deletions.
Support GPU partitioning
v0.20.0 — 2025-01-11
Changes since v0.19.0 (2024-10-16)
Highlights
- Devices & topology
- Show Network OS devices (Slingshot).
- Display full PCI ID for GPUs.
- Add Network device address.
- Enable partitioned devices (e.g., AMD TPX).
- Replace VISDEVS IDs with SMI IDs.
- API & examples
- Add example of using an hwloc topology file via the C interface .
- Docs & tutorials
- New preliminary tutorial on mapping & affinity; Flux tutorial updates; add example architectures; drop old noise-mitigation options.
New / Improved
- Devices: show Slingshot Network OS devices; include full GPU PCI IDs; add network device addresses; switch to SMI IDs; support partitioned devices (AMD TPX).
- Examples: C interface example using an hwloc topology file.
Bug fixes
- Fix link in Flux tutorial.
- Correct a missing logical and in core logic.
Documentation & Tutorials
- Mapping & affinity tutorial; Flux tutorial refresh; add example architectures; remove outdated noise-mitigation options.
- Flux options docs update.
Scope & Stats
- 21 files changed, 2163 insertions, 1472 deletions.
Weighted task distribution over NUMAs
v0.19.0 — 2024-10-16
Changes since v0.18.1 (2024-09-06)
Highlights
- Core: Introduce a weighted task distribution over NUMAs to improve placement behavior.
- Core: Logging/printing cleanup via common print macro.
Core
- New weighted task distribution over NUMAs.
- Replace direct prints with project print macro.
Scope & Stats
- 2 files changed, 181 insertions, 24 deletions.
Refactor Slurm exclusive/suballoc check
v0.18.1 — 2024-09-06
Changes since v0.17.0 (2024-07-27)
Highlights
- Flux plugin: Increase size of verbose output for clearer diagnostics.
- Slurm plugin: Refactor exclusive-node check and suballocations logic.
Flux plugin
- Increase size of verbose output.
Slurm plugin
- Refactor exclusive check & suballocations.
Core
- Internal updates:
src/hwloc_utils.csrc/internals.csrc/mpibind-priv.hsrc/mpibind.csrc/mpibind.h
Scope & Stats
- 7 files changed, 439 insertions, 265 deletions.
CPU specialization via MPIBIND_RESTRICT
v0.17.0 — 2024-07-27
Changes since v0.15.0 (2024-02-01)
Highlights
- Support for CPU specialization via
MPIBIND_RESTRICTfor Slurm and Flux - Specialization can be specified by NUMA or CPU type
- Slurm: improve plugstack options handling; fix buffer overrun.
- Tutorials/docs: MI300A affinity notes; expanded plugin docs.
- Build: fix build from a release tarball.
Flux plugin
- Implement
MPIBIND_RESTRICT. - Update plugin documentation.
- Update tutorial with MI300A affinity guidance.
Slurm plugin
- Implement
MPIBIND_RESTRICT. - Document
MPIBIND_TOPOFILEand other Slurm environment vars. - Fix plugstack options (
off,exclusive_only). - Fix buffer overrun.
Build
- Fix build from a release tarball.
Documentation & Tutorials
- Slurm plugin environment variable docs, including
MPIBIND_TOPOFILE. - Flux plugin documentation updates.
- New/updated tutorials (incl. CUG24 and MI300A affinity).
Scope & Stats
- 55 files changed, 4942 insertions, 166 deletions.
- Most activity in
tutorials/, plus updates influx/,src/, andslurm/.
Slurm SPANK plugin
This release includes the Slurm SPANK plugin that allows Slurm to use mpibind.
Python interface/bindings
This release provides a Python interface for mpibind including unit tests and example programs.
Support mpibind+flux spack variant
Major features of this release include the following:
- Added a lua script to load the mpibind plugin for Flux. The location of this script can be added to the
FLUX_SHELL_RC_PATHenvironment variable that loads external plugins into Flux. - Added utility functions to better support modules that use mpibind such as the Flux plugin or Python bindings.
Since the mpibind plugin depends on a Flux header, Flux is a dependency of the mpibind+flux variant. In other words, when installing mpibind+flux in Spack, mpibind will install the Flux plugin along with flux-core.