Sarus Suite & Podman on Alps — Early Access¶
This section provides starting documentation for using Sarus Suite on Alps. Sarus Suite is a collection of components that enable the use of Podman for running containers at scale in HPC workloads.
Sarus Suite and Podman are planned to become the core machinery behind the next generation of the Container Engine (CE) service. The tools described here are currently intended for early access testing and evaluation only, with the goal of collecting feedback to guide further development and eventual production rollout.
Familiarity with the current Container Engine (CE) toolset is assumed.
Under-construction
Sarus Suite is under active development and will be continuously updated over the coming months as progress is made towards supporting more features and production readiness.
Accordingly, the contents of this page are not final and should be expected to change.
Similarities with the current Container Engine¶
One of the main goals of the transition from Enroot & Pyxis to Sarus Suite & Podman is to minimize changes to the end-user experience.
Sarus Suite:
- supports the EDF format and the EDF search path rules already implemented in the current Container Engine;
- integrates with Slurm in a similar way to launch containerized jobs on compute nodes.
Current differences and limitations
- Due to the way Podman’s image storage works, with Sarus Suite it’s no longer possible to use direct filesystem paths to define images in EDFs. Images must be entered in the form of registry references.
- HPC features are enabled primarily through CDI specs and the device array, not annotations. Work is ongoing to enable the CE vService to handle configuration of OCI hooks for Podman and align them with annotations.
- CXI libfabric replacement is not enabled by default.
- The CXI CDI relies on an old Sarus 1.7.0 hook for libfabric replacement. When activated, the hook requires a libfabric to be present inside the container. Enabling the CXI CDI with a container that does not have libfabric results in an error.
- CXI and AWS OFI NCCL CDI specs cannot handle replacement of multiple libfabric or plugin libraries inside containers. This complicates the effective use of images with multiple NCCL plugins already installed, like NGC images. Work in preparing OCI hooks to handle these cases is ongoing. In the meantime, customized CDI specs are a possible workaround.
- Mount destinations in EDFs must be explicit (e.g.
mounts=["${SCRATCH}"]will result in an error). - SquashFS mounts from EDFs are not supported yet.
- PMIx propagation is achieved by bind-mounting
/tmpinto containers, until a hook for proper PMIx support is rolled out. - No support yet for netstack artifacts, CUDA MPS, or direct SSH into containers.
- Error propagation and reporting still need improvements.
Quickstart with Alps Extended Images¶
Alps Extended Images offer a convenient way of starting to experiment with Sarus Suite, due to their self-sufficient nature that does not require modifications from hooks or device definitions.
Consider an EDF like the following:
image = "jfrog.svc.cscs.ch/docker-group-csstaff/alps-images/ngc-pytorch:26.02-py3-alps6"
mounts = ["${SCRATCH}:${SCRATCH}"]
[env]
PMIX_MCA_psec = "native"
The key user-visible difference of using Sarus Suite from the production Container Engine is the use of the --edf option in Slurm commands instead of --environment.
For example, using the EDF presented above, the NCCL Tests all-reduce bandwidth benchmark can be run as follows:
$ srun -N2 --gpus-per-node=4 --mpi=pmix --edf=aei-alps6 --network=disable_rdzv_get all_reduce_perf -b 1M -e 128M -f2
# nccl-tests version 2.18.2 nccl-headers=23007 nccl-library=23007
# Collective test starting: all_reduce_perf
# nThread 1 nGpus 1 minBytes 1048576 maxBytes 134217728 step: 2(factor) warmup iters: 1 iters: 20 agg iters: 1 validation: 1 graph: 0 unalign: 0
#
# Using devices
# Rank 0 Group 0 Pid 15784 on nid007106 device 0 [0009:01:00] NVIDIA GH200 120GB
# Rank 1 Group 0 Pid 24926 on nid007109 device 0 [0009:01:00] NVIDIA GH200 120GB
#
# out-of-place in-place
# size count type redop root time algbw busbw #wrong time algbw busbw #wrong
# (B) (elements) (us) (GB/s) (GB/s) (us) (GB/s) (GB/s)
1048576 262144 float sum -1 339.61 3.09 3.09 0 335.85 3.12 3.12 0
2097152 524288 float sum -1 355.53 5.90 5.90 0 361.77 5.80 5.80 0
4194304 1048576 float sum -1 476.28 8.81 8.81 0 471.14 8.90 8.90 0
8388608 2097152 float sum -1 556.83 15.06 15.06 0 559.35 15.00 15.00 0
16777216 4194304 float sum -1 840.36 19.96 19.96 0 841.25 19.94 19.94 0
33554432 8388608 float sum -1 1537.62 21.82 21.82 0 1538.74 21.81 21.81 0
67108864 16777216 float sum -1 2982.38 22.50 22.50 0 2983.25 22.50 22.50 0
134217728 33554432 float sum -1 5871.07 22.86 22.86 0 5867.43 22.88 22.88 0
# Out of bounds values : 0 OK
# Avg bus bandwidth : 14.9966
#
# Collective test concluded: all_reduce_perf
#
Further reading¶
More details about using Sarus Suite and its features on Alps are provided in the Early Access User Guide.