Daint (daint.alps
) is a vCluster deployed on Alps for the HPC Platform. It replaces the Cray XC Piz Daint, which has reached end-of-life.
Maintenance
- Wednesday morning 8-12 is reserved for periodic updates, with services potentially unavailable during this timeframe. If the queues must be drained (redeployment of node images, rebooting of compute nodes, etc) then a Slurm reservation will be in place that will prevent jobs from running into the maintenance window.
- Exceptional and non-disruptive updates may happen outside this time frame and will be announced to the users mailing list
Change log
- The number of compute nodes has been increased to 1018
- The restriction on the number of running jobs per project has been lifted.
- A "low" priority partition has been added, which allows some project types to consume up to 130% of the project's quarterly allocation
- We have increased the power cap for the GH module from 624 to 660 W. You might see increased application performance as a consequence
- Small changes in kernel tuning parameters
- Scheduler updated to enforce a maximum 10 running jobs per project. Jobs will pend with
Reason=AssocGrpJobsLimit
- The Enroot vService is updated from v2.11.0 to v2.12.0. Enroot is the container runtime that is used in the Container Engine on Daint.Alps. Changes in v2.12.0:
- Re-introduced Enroot hook for PMIx support under Slurm.
- This hook is a stripped-down version of the upstream Enroot hook for Slurm/PMI support: it contains only actions (e.g. env vars and mounts) specific to PMIx and does not affect the use of other PMI implementations.
- SSH hook: Fixes for exposing environment variables to remote connections
- Re-introduced Enroot hook for PMIx support under Slurm.
The Enroot vService is updated from v2.10.0 to v2.11.0. Enroot is the container runtime that is used in the Container Engine on Daint.Alps. Changes in v2.11.0:
- Removed the Slurm PMI/PMIx hook which was causing issues with MPICH containers when used with multiple ranks on the same node. The situation should be resolved, please let us know if you still encounter related problems. A revisited, dedicated hook to support PMIx and OpenMPI containers will be provided in the coming weeks.
- Improvements to the SSH hook:
- Enforced correct permissions to authorized key files within containers
- The container environment variables are now reproduced on SSH connections as well, for a better interactive experience. The current implementation might cause issues with the CUDA forward compatibility provided by entrypoint scripts in some NVIDIA images; this will be addressed as soon as possible.
- Scheduler updated to enforce quarterly allocation compute budgets
- Slingshot Fabric Manager and switch firmware to Slingshot version 2.3
The Enroot vService is updated from v2.8.4 to v2.10.0. Enroot is the container runtime that is used in the Container Engine on Daint.Alps. Notable changes:
- Enroot container filesystems are now writable by default: it's no longer necessary to force
writable = true
in EDFs - An Enroot hook for PMIx propagation in containers is now installed. The hook acts automatically when
--mpi=pmix
is used as a Slurm option. This makes working with OpenMPI containers easier. - The CUDA MPS hook for Enroot is now deployed correctly
- The Container Engine documentation has been updated to reflect these changes
- Changelog v2.10.0:
- Updated default Enroot version to CSCS_2024_10_1:
- Fixed startup errors on some systems by mounting
/dev/shm
with recursive bind by default - Fixed bugs causing the deployment script to exit abruptly without completing the installation process
- Fixed installation of the CUDA MPS hook
- Fixed activation condition of the CUDA MPS hook when used outside of a Slurm job
- Fixed startup errors on some systems by mounting
- Updated default Enroot version to CSCS_2024_10_1:
- Changelog v2.9.0
- Added hook adapter for the Sarus MPI hook
- Slurm hook: Added dependencies for the new Slurm policies plugin
- Install Enroot PMIx hook
- Added creation of a symlink to the fusermount3 program
- AWS OFI NCCL hook: Moved the mount of specific dependency libraries from the CXI hook to the AWS OFI NCCL hook
- Changelog v2.10.0:
Slurm fairshare scheduling parameters are adjusted to better reflect project usage across quarterly allocation periods.
The $PROJECT
environment variable is now defined for all users of Daint.Alps
and it targets the user's primary project folder. Please note that $USER
is no longer appended to $PROJECT
: you can find more details on the dedicated page /capstor/store.
- The
quota
command is now available on the login nodes. MPICH_GPU_SUPPORT_ENABLED=1
has been set as default for all users. This is a breaking change for applications that do not make use of GPU-aware MPI. If your application crashes with an error similar toMPIDI_CRAY_init: GPU_SUPPORT_ENABLED is requested, but GTL library is not linked
you will need to exportMPICH_GPU_SUPPORT_ENABLED=0
in your batch scripts. For details of the behaviour of this variable see https://confluence.cscs.ch/x/40HJMw.
Maintenance day is changed from Tuesday to Wednesday morning, see above.
The version of uenv
on daint
, clariden
and santis
was been updated this morning with new features, bug fixes and other improvements. It also introduces some breaking changes, the main one is that the uenv view
command is no longer supported:
- provide the view when starting the environment, e.g.
uenv start --view=gromacs gromacs/2024:v1
Please check the updated documentation available on the dedicated page uenv user environments
The Slurm queue xfer
is available for the Internal Transfer on Daint. The data mover nodes mount temporarily with read-only access /project.CrayXC
, /store.CrayXC
and /users.CrayXC
that correspond to the GPFS mount points /project
, /store
and /users
currently available on Piz Daint XC login nodes
Known issues
NCCL and libfabric incompatibility
We're aware of an incompatibility between the NCCL AWS plugin (aws-ofi-nccl version 1.9.2-aws) and Libfabric (libfabric version 1.22). This problem will cause codes to crash when using the prgenv-gnu/24.11:v1 uenv with NCCL. A fix is ready and should be deployed on 16 April 2025.
Container Engine: MPICH unable to allocate shared memory
We're aware of an issue affecting open source MPICH libraries from using shared memory when launching multiple ranks per node. See Container Engine#MPICHunabletoallocatesharedmemory for further details.
Fabric-related slowdown
Following the update of the Slingshot fabric on 12 March 2025, Alps is experiencing fabric-related slowdowns which may negatively impact workloads. HPE engineers are investigating the issue.
Storage quotas on account.cscs.ch
The scratch and project-related storage paths shown in https://account.cscs.ch
are not reporting capstor
usage, since the UI is deprecated and will be replaced by a new user management portal. Please use the quota
command instead.
Quota command
The quota command is unavailable on the login nodes. Issue resolved.
Jobs silently crashing in Slurm prolog
We are investigating an issue where jobs launched by srun are silently crashing in the Slurm prolog and being removed from the queue. Issue resolved
$ [daint][user@daint-ln001 ~]$ srun [options] <executable> srun: job 152105 queued and waiting for resources <hanging, but the job has been cancelled by slurm>
Access
Log in as you would for other CSCS systems, by first configuring your SSH keys (see the MFA documentation for more information), then log into Daint via the front end server ela.cscs.ch
:
$ ssh -A ela.cscs.ch $ ssh daint.alps.cscs.ch
Simplifying log in
To log in directly to Daint without first logging into ela.cscs.ch
, you can add the following configuration to the ~/.ssh/config
file on your laptop or PC:
Host ela HostName ela.cscs.ch User <<username>> IdentityFile ~/.ssh/cscs-key Host daint.alps HostName daint.alps.cscs.ch User <<username>> IdentityFile ~/.ssh/cscs-key ProxyJump ela AddKeysToAgent yes ForwardAgent yes
Where cscsusername
is your CSCS account name.
Now you can access Daint directly from your laptop or PC:
ssh daint.alps
Cluster Specifications
All nodes are identical, with 4 Grace-Hopper modules per node. Specifically:
- User Access Node (UAN): 4 repurposed GH compute nodes that serve as login nodes (daint-ln00[1-4])
- Compute Node (CN): The number of compute nodes will change over time. You can get an up-to-date number using the command
sinfo -s
on the UAN. The majority of the nodes is provided in the Slurm partitionnormal
, while a smaller number is accessible through the partitiondebug
, meant for short test jobs with a quick turnaround
Each node has approximately 800GB of free memory accessible from all sockets. Each Grace CPU has 72 cores with the following specification:
- Arm V9.0 ISA compliant aarch64 (Neoverse V2 “Demeter”architecture)
- Full SVE-2 Vector Extensions support, inclusive of NEON instructions
- Supports 48-bit virtual and 48-bit physical address space
Each Hopper GPU has 96GB of RAM. NVLINK provides all-to-all cache-coherent memory between all host and device memory.
A login node is a shared resource. Do not run compute-intensive jobs on a login node, and do not start the CUDA MPS service there, as you might impact the work of others. Please have a look at the Policies that apply on CSCS computing systems
Programming Environment
uenv
User environments uenv
are used to provide programming environments and application software. Please refer to the uenv
documentation for detailed information on how to use the uenv
tools on the system.
You can list the uenv
provided on the system with the command uenv image find
. A non exhaustive list of the software provided by uenv
images currently available on the system is shown below:
Please note that uenv
images provided on the system Todi should also work on Daint. They can be accessed via
CLUSTER_NAME=todi uenv image find
Please always prepend CLUSTER_NAME=todi
to uenv
commands that should address an image available on Todi.
Cray Programming Environment (CPE)
CPE is provided on Daint, however CSCS does not officially support CPE or provide software built with CPE on the system.
The supported method for building software is uenv (see above): this is a key difference from the previous system Piz Daint (Cray XC).
To enable Cray Programming Environment (CPE), please run
$ module load cray $ module load PrgEnv-cray # to check that CPE is loaded: $ ftn --version Cray Fortran : Version 17.0.0
Container engine
The Container Engine (CE) is available on the system: this is a toolset is designed to enable computing jobs to seamlessly run inside Linux application containers, thus providing support for containerized user environments: please see the dedicated page to use CE.
File systems
The following mount points are available:
/users/$USER
-$HOME
/capstor/scratch/cscs/$USER
-$SCRATCH
/capstor/store
-$PROJECT
The environment variable $HOME
and $SCRATCH
will give you have access to the user dedicated folders /users/$USER
and /capstor/cscs/scratch/$USER
respectively. The $PROJECT
environment variable targets your personal folder /capstor/store/cscs/userlab/group_id>/$USER
only for UserLab customers on the capstor
storage: please note that users need to create their own sub-folders under the project folder, as they are not created automatically.
Please check the occupancy by your user (data volume and number of inodes) on the different file systems with the quota
command, that is currently available on the frontend Ela.
Slurm configuration
Currently there is no fair share policy applied.
Partition | Max time | Max nodes | Brief Description |
---|---|---|---|
normal | 24 h | 568 | Standard queue for production work |
debug | 30 min | 10 | Quick turnaround for test jobs (one per user) |
xfer | 24 h | 1 | Internal transfer queue |
Nodes are not shared (except for the xfer
queue) and at least 1 node must be allocated for your job.
Running jobs
Please have a look at an introduction to the Slurm workload manager in the page Running jobs.
The Slurm option --account=<project>
or -A <project>
selects the active <project>
that will be charged for the allocation. On Daint.Alps
, the user's primary account will be charged by default if the option is not set. See groups $USER
In the current Slurm configuration OMP threads are placed consecutively on the cores and MPI ranks are placed in the round-robin fashion between 4 sockets. Example below demonstrates the output of running 8 MPI ranks with 4 cores/rank:
Oversubscription of GPU cards
If you want to share GPU card(s) between multiple MPI ranks, you currently need to start multi-process daemon on the node yourself. This is due to the fact that CRAY_CUDA_MPS
variable is no longer supported. To do so, you need to use a simple wrapper script:
#!/bin/bash # Example mps-wrapper.sh usage: # > srun [srun args] mps-wrapper.sh [cmd] [cmd args] export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps export CUDA_MPS_LOG_DIRECTORY=/tmp/nvidia-log export CUDA_VISIBLE_DEVICES=$(( SLURM_LOCALID % 4 )) # Launch MPS from a single rank per node if [ $SLURM_LOCALID -eq 0 ]; then CUDA_VISIBLE_DEVICES=0,1,2,3 nvidia-cuda-mps-control -d fi # Wait for MPS to start sleep 5 # Run the command "$@" # Quit MPS control daemon before exiting if [ $SLURM_LOCALID -eq 0 ]; then echo quit | nvidia-cuda-mps-control fi
and run your code using the following sample slurm script:
#!/bin/bash -l #SBATCH --job-name=<job_name> #SBATCH --time=01:30:00 #HH:MM:SS #SBATCH --nodes=2 #SBATCH --ntasks-per-core=1 #SBATCH --ntasks-per-node=32 #32 MPI ranks per node #SBATCH --account=<account> #SBATCH --hint=nomultithread #SBATCH --hint=exclusive export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK export MPICH_MALLOC_FALLBACK=1 ulimit -s unlimited srun --cpu-bind=socket ./mps-wrapper.sh <code> <args>