Cray Programming Environment (CPE)¶
The Cray Programming Environment (CPE) is provided to users on Alps as containers, with limited support from CSCS.
CPE is not supported by CSCS
CSCS offers full support for building software using uenv-based programming environments. See the programming environment documentation for supported programming environments.
The CPE is a suite of software: programming environments, compilers, libraries and tools.
The CPE will be familiar to users of previous CSCS systems, including Piz Daint, and users of HPE/Cray systems at other sites.
It provides modules for programming environments including Prgenv-gnu and Prgenv-cray, and packages like cray-python and cray-fftw.
The cray module is deprecated
On Eiger and Daint the outdated version 24.7 of CPE is installed, and can be loaded using the cray module.
- this module will be removed soon (the timeline will be communicated to the community);
- this version of CPE is out of date, and is missing key updates required for compatibility and performance for
gh200on Daint. - CSCS can’t provide support when the
craymodule is loaded.
The recommended method for building and running software is to use uenv or containers. See the programming environment documentation for alternative programming environments.
CPE in a container¶
The CPE is provided on Eiger and Daint in containers.
Available versions¶
CPE containers are provided for zen2 and gh200 micro-architectures.
The zen2 containers are intended for use on Eiger, and the gh200 images are available for Grace-Hopper systems for the systems below:
| uarch | system |
|---|---|
zen2 |
Eiger |
gh200 |
Daint, Santis |
The PrgEnv-gnu and PrgEnv-cray programming environments are provided as separate containers, named gnu-$version and cray-$version respectively, where version is the CPE version in the container.
zen2 |
gh200 |
|
|---|---|---|
cpe-gnu-24.7 |
✅ | ✅ |
cpe-cray-24.7 |
✅ | ✅ |
cpe-gnu-25.3 |
✅ | ✅ |
cpe-cray-25.3 |
✅ | ✅ |
Where are CPE containers stored?
Deployed versions can be found at /capstor/store/cscs/cscs/public/containers/edf/<microarchitecture>.
Listing all available CPE containers
$ find /capstor/store/cscs/cscs/public/containers/edf -type f -printf '%P\n'
zen2/cpe-cray-24.07.toml
zen2/cpe-cray-25.03.toml
zen2/cpe-gnu-25.03.toml
zen2/cpe-gnu-24.07.toml
zen2/.cpe-base.toml
gh200/cpe-cray-24.07.toml
gh200/cpe-cray-25.03.toml
gh200/cpe-gnu-25.03.toml
gh200/cpe-gnu-24.07.toml
gh200/.cpe-base.toml
How to use¶
To start a session with the CPE with a specific version above):
Once the container starts up you can directly use the programming environment, because there will be modules loaded by default at startup.$ srun -p debug --environment=cpe-cray-24.07 --pty bash
$ module list
Currently Loaded Modules:
1) craype-arm-grace 4) cce/18.0.0 7) cray-mpich/8.1.30
2) craype-network-ofi 5) craype/2.7.32 8) cuda/12.6
3) xpmem/2.9.6 6) PrgEnv-cray/8.5.0 9) craype-accel-nvidia90
$ module avail
---- /opt/cray/pe/lmod/modulefiles/mpi/crayclang/17.0/ofi/1.0/cray-mpich/8.0 ----
cray-hdf5-parallel/1.14.3.1 cray-parallel-netcdf/1.12.3.13
---------- /opt/cray/pe/lmod/modulefiles/comnet/crayclang/17.0/ofi/1.0 ----------
cray-mpich-abi/8.1.30 cray-mpich/8.1.30 (L)
------------- /opt/cray/pe/lmod/modulefiles/compiler/crayclang/17.0 -------------
cray-hdf5/1.14.3.1 cray-libsci/24.07.0
------------------ /opt/cray/pe/lmod/modulefiles/mix_compilers ------------------
cce-mixed/18.0.0
---------------- /opt/cray/pe/lmod/modulefiles/cpu/arm-grace/1.0 ----------------
cray-fftw/3.3.10.8
------------- /opt/cray/pe/lmod/modulefiles/craype-targets/default --------------
craype-accel-amd-gfx908 craype-hugepages16M craype-network-none
craype-accel-amd-gfx90a craype-hugepages1G craype-network-ofi (L)
craype-accel-amd-gfx940 craype-hugepages256M craype-network-ucx
craype-accel-amd-gfx942 craype-hugepages2G craype-x86-genoa
craype-accel-host craype-hugepages2M craype-x86-milan-x
craype-accel-nvidia70 craype-hugepages32M craype-x86-milan
craype-accel-nvidia80 craype-hugepages4M craype-x86-rome
craype-accel-nvidia90 (L) craype-hugepages512M craype-x86-spr-hbm
craype-arm-grace (L) craype-hugepages64M craype-x86-spr
craype-hugepages128M craype-hugepages8M craype-x86-trento
---------------------- /opt/cray/pe/lmod/modulefiles/core -----------------------
PrgEnv-cray/8.5.0 (L) cray-libsci_acc/24.07.0 cray-python/3.11.7
cce/18.0.0 (L) cray-pmi/6.1.15.19 craype/2.7.32 (L)
----------------------------- /opt/cray/modulefiles -----------------------------
xpmem/2.9.6 (L)
----------------------------- /opt/cscs/modulefiles -----------------------------
cuda/12.6 (L)
$ CC --version
Cray clang version 18.0.0 (0e4696aa65fa9549bd5e19c216678cc98185b0f7)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/cray/pe/cce/18.0.0/cce-clang/aarch64/share/../bin
The recommended way of using CPE in a container is to start the container, and use $SCRATCH and $STORE to interact with persistent data. Please remember that any data that is written to a directory that is not mounted from the host system will be lost, after the container stops.
Note
By default, the paths /capstor, /iopsstor are mounted to the same paths inside the container.
Note
/users will not be mounted by default.
If you need your home directory, you need to override the mounts directive.
The recommended way is to derive from existing EDF file using the key base_environment, further details at EDF file reference.