Hi maintainers,
First of all, thank you for the work on slurm-bridge. We would like to understand the future direction of the integration between slurm-bridge and the DRA CPU Driver.
Recently, we asked the DRA CPU driver community about allocating more than 32 CPU cores with the driver. The feedback we received was that splitting the allocation into multiple ResourceClaims is currently the only known workaround in individual mode, but the DRA CPU driver maintainers also mentioned that individual mode is expected to be gradually deprecated, and that grouped mode is the preferred direction going forward.
This raises a few questions for slurm-bridge.
Background
Today, slurm-bridge works well with the DRA CPU driver in individual mode because each CPU is exposed as a separate DRA device. Each device carries attributes such as:
dra.cpu/cpuID
dra.cpu/coreID
dra.cpu/socketID
This gives slurm-bridge enough information to map Slurm's abstract core allocation to Linux CPU IDs, and then generate CEL selectors that select the exact CPU devices allocated by Slurm.
However, in grouped + group-by=machine mode, the DRA CPU driver exposes the whole machine as one grouped device. This mode can still accept an explicit opaque cpuset, but that cpuset must be expressed using Linux logical CPU IDs.
The problem is that Slurm's core_bitmap is an abstract core bitmap. Its bit order is not necessarily the same as Linux logical CPU ID order. They may differ on systems with multiple sockets, NUMA topology, SMT/hyper-threading, non-trivial CPU enumeration order from BIOS/Linux, reserved/offline CPUs, or other topology differences. In individual mode, slurm-bridge can reconstruct this mapping from the per-CPU DRA device attributes. In grouped machine mode, those per-CPU attributes are no longer exposed through ResourceSlices, so slurm-bridge no longer has the same source of mapping information.
Questions
- Given that the DRA CPU driver maintainers are moving away from individual mode, does slurm-bridge have a planned direction for supporting
grouped + group-by=machine mode?
- Is there an intended way for slurm-bridge to convert Slurm's abstract
core_bitmap into the Linux CPU ID based opaque cpuset required by the DRA CPU driver in grouped machine mode?
- Would the recommended approach be for slurm-bridge to obtain or reconstruct a Slurm-equivalent CPU mapping on each node, or is there another design being considered?
- Is there any public roadmap for DRA CPU support in slurm-bridge, especially regarding the transition from individual mode to grouped mode?
We are trying to understand the best direction before making local changes. The main concern is avoiding an implementation that depends heavily on individual mode if that mode is likely to become deprecated upstream.
Thanks in advance for any guidance.
Hi maintainers,
First of all, thank you for the work on slurm-bridge. We would like to understand the future direction of the integration between slurm-bridge and the DRA CPU Driver.
Recently, we asked the DRA CPU driver community about allocating more than 32 CPU cores with the driver. The feedback we received was that splitting the allocation into multiple ResourceClaims is currently the only known workaround in individual mode, but the DRA CPU driver maintainers also mentioned that individual mode is expected to be gradually deprecated, and that grouped mode is the preferred direction going forward.
This raises a few questions for slurm-bridge.
Background
Today, slurm-bridge works well with the DRA CPU driver in individual mode because each CPU is exposed as a separate DRA device. Each device carries attributes such as:
dra.cpu/cpuIDdra.cpu/coreIDdra.cpu/socketIDThis gives slurm-bridge enough information to map Slurm's abstract core allocation to Linux CPU IDs, and then generate CEL selectors that select the exact CPU devices allocated by Slurm.
However, in
grouped + group-by=machinemode, the DRA CPU driver exposes the whole machine as one grouped device. This mode can still accept an explicit opaquecpuset, but thatcpusetmust be expressed using Linux logical CPU IDs.The problem is that Slurm's
core_bitmapis an abstract core bitmap. Its bit order is not necessarily the same as Linux logical CPU ID order. They may differ on systems with multiple sockets, NUMA topology, SMT/hyper-threading, non-trivial CPU enumeration order from BIOS/Linux, reserved/offline CPUs, or other topology differences. In individual mode, slurm-bridge can reconstruct this mapping from the per-CPU DRA device attributes. In grouped machine mode, those per-CPU attributes are no longer exposed through ResourceSlices, so slurm-bridge no longer has the same source of mapping information.Questions
grouped + group-by=machinemode?core_bitmapinto the Linux CPU ID based opaquecpusetrequired by the DRA CPU driver in grouped machine mode?We are trying to understand the best direction before making local changes. The main concern is avoiding an implementation that depends heavily on individual mode if that mode is likely to become deprecated upstream.
Thanks in advance for any guidance.