Skip to content

Releases: llnl/mpibind

Support topologies with NUMAs that have intersecting PUs

05 Sep 23:18

Choose a tag to compare

v0.23.0 — 2025-09-03

Changes since v0.22.0 (2025-07-20)

Highlights

  • Topology loading: Add mpibind_load_topology and 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_topology in the plugin.

Slurm plugin

  • Use mpibind_load_topology in the plugin.

Core

  • Add mpibind_load_topology wrapper.
  • Support topologies where NUMAs intersect PUs. Requires hwloc v2.12.0 or 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

05 Sep 23:09

Choose a tag to compare

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

05 Sep 23:01

Choose a tag to compare

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

05 Sep 22:57

Choose a tag to compare

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

05 Sep 22:35

Choose a tag to compare

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

05 Sep 22:31

Choose a tag to compare

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.c
    • src/internals.c
    • src/mpibind-priv.h
    • src/mpibind.c
    • src/mpibind.h

Scope & Stats

  • 7 files changed, 439 insertions, 265 deletions.

CPU specialization via MPIBIND_RESTRICT

05 Sep 22:12

Choose a tag to compare

v0.17.0 — 2024-07-27

Changes since v0.15.0 (2024-02-01)

Highlights

  • Support for CPU specialization via MPIBIND_RESTRICT for 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_TOPOFILE and 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 in flux/, src/, and slurm/.

Slurm SPANK plugin

11 Mar 00:38

Choose a tag to compare

This release includes the Slurm SPANK plugin that allows Slurm to use mpibind.

Python interface/bindings

01 Nov 16:41

Choose a tag to compare

This release provides a Python interface for mpibind including unit tests and example programs.

Support mpibind+flux spack variant

29 Sep 18:41

Choose a tag to compare

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_PATH environment 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.