These modules are provided by Cray/HPE. They will work similarly on the OLCF machines (Crusher and Frontier). These modules and compilers depend highly on the user's environment and the same ones must be loaded at runtime for any executables built with them.

Cray Compiling Environment, called CCE, is a collection of modules which provide the cc, CC, and ftn compiler wrappers. These wrappers call the correct compiler with appropriate options to build and link applications with relevant libraries as required by modules loaded. (Only dynamic linking is supported.) These wrappers replace direct calls to compiler drivers in Makefiles and build scripts.

On LC systems, these modules have the naming convention cce/VERSION

Basic usage

  1. By default, users should start with the following modules already loaded (exact version numbers may vary):

    1) craype-x86-trento

    2) craype-network-ofi

    3) libfabric/2.1

    4) perftools-base/24.07.0

    5) cce/18.0.0

    6) craype/2.7.32

    7) cray-mpich/8.1.30

    8) cray-libsci/24.07.0

    9) PrgEnv-cray/8.5.0

    10) flux_wrappers/0.1

    11) StdEnv (S)

  2. Through the cce module, the following compilers are provided: ftn (Fortran), cc (C), CC (C++) as well as crayftn (Fortran), craycc (C), crayCC (C++)

  3. By having the cray-mpich module loaded, the cce compilers will be able build MPI projects. The following wrappers are also provided: mpic++, mpicxx, mpicc, mpif77, mpif90, mpifort

  4. Note that other modules, such as cray-libsci, are loaded and linked to built applications by default.

Version Compatibility

HPE provides a very narrow statement of compatibility with regards to which versions of cce, rocm, and cray-mpich are guaranteed to function and be performant. Please see the known issues page for the officially supported versions and details on how version incompatibility manifests.

Example of Building with CCE

Useful commands to get detailed help on flags to use with the compilers:

# some cray documentation
cc --help
cc --craype-help
# show details on linked libraries
cc --craype-verbose example.c

Example code compilation:

gonsie@rzadams1002 $ cc --version
Cray clang version 18.0.0  (0e4696aa65fa9549bd5e19c216678cc98185b0f7)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/cray/pe/cce/18.0.0/cce-clang/x86_64/share/../bin
Configuration file: /opt/cray/pe/cce/18.0.0/cce-clang/x86_64/bin/clang.cfg
gonsie@rzadams1002 $ cc hello.c
gonsie@rzadams1002 $ readelf -a ./a.out | grep PATH
 0x000000000000000f (RPATH)              Library rpath: [/opt/cray/pe/cce/18.0.0/cce/x86_64/lib:/opt/cray/pe/cce/18.0.0/cce-clang/x86_64/lib:/opt/cray/pe/cce/18.0.0/cce-clang/x86_64/lib]
readelf: Warning: Gap in build notes detected from 0x201900 to 0x201904
readelf: Warning: Gap in build notes detected from 0x201900 to 0x201904
readelf: Warning: Gap in build notes detected from 0x201900 to 0x201904
readelf: Warning: Gap in build notes detected from 0x201900 to 0x201904
readelf: Warning: Gap in build notes detected from 0x201900 to 0x201904