Cray Compiler Overview
Software enhancements and support
This section describes software enhancements and support details for the HPE CCE 21.0.0 release.
Language technology
HPE Cray Fortran fully supports the Fortran 2018 standard.
The C and C++ compilers are based on Clang and LLVM 21.0.0.
C fully supports c89 with partial support for c99, c11, and c17.
C++ fully supports C++17 with partial support for C++20 and C++23.
LLVM version 21.0.0 base.
Miscellaneous features and enhancements
Support for LLVM 21 base (merges up to Dec 12, 2025 - LLVM version 21.1.8)
Support for Clang extensions for AMD GPU floating-point atomics: https://clang.llvm.org/docs/LanguageExtensions.html#extensions-for-controlling-atomic-code-generation
Added or extended support for the following OpenMP features:
For OpenMP 6.0
groupprivatedirectiveFortran:
workdistributeconstructFortran:
automapmodifier fordeclare targetlocalclause fordeclare targetvariable-categorymodifier fordefaultclause
For OpenMP 5.2
Extended
declare mapperto support iterators andpresentmodifierSupport
omp_initial_deviceandomp_invalid_deviceidentifiersFortran:
doacrossclause for stand-aloneordereddirectiveFortran: New
linearclause syntax
ROCm 7.0 support
NVIDIA SDK 25.09 support
Enhanced DWARF support
Functional support for low-precision floating point (FP16 and BFloat16) for C, C++, and Fortran.
Issues or Bugs Resolved
CAST-39292 CCE 20.0.x compiler bug on GNU Scientific Library (GSL)
CAST-39199 Error with a combined
SAVE+ aDOloop + aBLOCKconstruct containing anALLOCATABLEdeclaration constructCAST-39134
integer(8)displaying 32-bit overflow related error with CCE compiler inrush_larsen_gpu_omp_fortbenchmarkCAST-39116 CPE/25.09
mpif90/f77/fortandcrayftnmis-handling-sharedflagCAST-38893 AFW Earth System Modeling Framework (ESMF) segfault when compiling with CCE/20.0.0
CAST-38866 CCE 20.0.0 fortran link time increase compared to CCE 19.0.0
CAST-38817 Thornado linking error with CCE 20.0.0
CAST-38802 Cray Fortran compiler in CCE 19.0.0 and CCE 18.x is failing to compile a code that is correct and was compilable with CCE 16.x and CCE 17.x
CAST-38782 CCE 20.x.x Incorrect error
ftn-1195with a particularENUMvalue andISO_C_BINDINGCAST-38775
crayftnerror on unlimited polymorphic assumed rank argumentCAST-38750 CCE fortran
do concurrentissueCAST-38682 Thornado linking error with CCE 20.0.0
CAST-38461 OpenMP collapse leads to out-of-bounds access
CAST-38329 CCE 19.0.0 Fortran gives incorrect results with
O2orO3CAST-38228 CCE 19.0.0 Fortran gives extraneous warning with
-h ompCAST-38206 HPE Cray Fortran OpenMP
privatevariable is being sharedCAST-38117
crayftn-h sanitize=threadhas false positivesCAST-38097 Woosley Heger problem cannot compile/run with CCE later than 16.0.1
CAST-38089 CCE 19.0.0 OpenMP producing wrong answer in ComputeRadialMomentsKernel in GenASiS
CAST-37847 The
ftn sanitizeoption has problems and false positivesCAST-37719 HPE Cray Fortran compiler mishandling use of
intrinsicwithin specification expressionsCAST-37200 Arrays of abstract data types (
DV SM==0)CAST-37071 CCE Fortran Internal error in
THATMPI PICcodesCAST-36536
llcerror linkingdyna3dtarget openmpwith CCE 18.0.0ftnonrzadamsCAST-36339 Issue with the OpenACC kernels construct
CAST-36177 HPE Cray EX Supercomputer (Base System Code) OpenACC compile time error
Invalid accelerator routine parallelismCAST-35380 CCE 17.0.0 Fortran compiler fails four smart pointers tests
CAST-35015 Global
PARAMETERarrays not working with OpenACCCAST-34641 Issue with HPE Cray Fortran and OpenACC; OpenACC directives incurs issues with HPE Cray compiler
CAST-33343 HPE Cray Fortran unlimited polymorphic assumed rank argument
CAST-33162
ftncompiler internal error on openmptarget loopsetting pointer to nullCAST-32041 OpenACC and OpenMP kernel optimization/serialization issue
CAST-31462 OpenACC
exit data deletefailureCAST-31407 OpenMP offloading; poor performance of reduction for array elements
CAST-30651 Unable to use runtime variable in
openmp thread_limit(var)clauseCAST-30331 Weak alias fails with CCE 13.0.0/14.0.0 C and OpenMP
CAST-30276 OpenMP
atomicdirective inside loop region
Compatibilities, incompatibilities, and differences
The
fast addressGPU optimization has been disabled at default (equivalent to-hacc_model=no_fast_addr). This optimization attempts to use 32-bit integers for GPU array index calculations to improve performance, but it can result in incorrect behavior if 32-bit precision is insufficient for large arrays. The optimization can be explicitly re-enabled with-hacc_model=fast_addr.The
crayccandcrayCCcompiler drivers now bypass the Cray PE driver and invoke CCE’sclangdriver directly. As a result, Cray PE driver flags are no longer accepted bycrayccandcrayCC. This behavior now matches thecrayftndriver, which was changed to bypass the Cray PE driver in CCE 20.0.0.LLVM backends for unsupported targets have been removed. CCE now only provides LLVM backends for supported CPU and GPU targets (X86, AArch64, NVPTX, and AMDGPU).
Support for the AMD GPU gfx940 target has been removed.
This CCE release is supported for the following configurations:
CSM 1.7.1 and HPCM 1.15
RHEL 8.10 (x86) and RHEL 9.5 & 9.6 (x86 & aarch64) with USS 1.5.0
SLES15 SP7 & SP7 (x86 & aarch64) with USS 1.5.0
AMD GPU offloading support requires at least ROCm 7.0 (ROCm 6.x is no longer supported, SLES15 support limited to SP7)
NV SDK 25.09
GCC 14
AOCC 5.0 (x86_64 only)
Intel 2025.2.1 (x86_64 only)
Documentation
Cray Compiling Environment Release Overview (21.0.0)
Cray Fortran Reference Manual
Cray C and C++ Quick Reference
These references are available at [Getting Started] (https://cpe.ext.hpe.com/docs/latest/getting_started/index.html)
Basic man pages:
crayftn(1),craycc(1),crayCC(1),intro_openmp(7),intro_openacc(7)Please see Clang Documentation online, or use the
-helpcommand line option for more information on using Clang.
Accessing product documentation
Access HPE documents and manpages for HPE CCE releases from:
HPE Support Center
CCE user guides (i.e., Fortran, Perftools, Cassini, Quick Reference, Release Overview, and CSM/HPCM/Apollo2000/XD2000 user guides) before CPE 24.11 can be retrieved from the HPE Support Center and the CPE Online Documentation Page. See Available publications for a complete list.
CCE and CSM/HPCM/Apollo2000/XD2000 user guides for CPE 24.11 (and later) are available at the online CPE documentation page at https://cpe.ext.hpe.com/docs/latest/index.html
To narrow search results from the HPE Support Center website, enter the publication and release number (for example, S-5212 18.0.0).
CPE installation guides for any release can be retrieve from the HPE Support Center website or the CPE online documentation site.
Release Package
All HPE Cray Programming Environment (CPE) and HPE Cray Compiling Environment (CCE) documents are included in documentation tar files provided in the release package. See Available publications for details.
Manpages
Manpages are textual help files available from the command line on HPE and HPE Cray systems. To access manpages, enter the
mancommand followed by the name of the manpage. For more information about manpages, see theman(1)manpage by entering:hostname> man man
Basic CCE
manpages provided includecrayftn(1),craycc(1),crayCC(1),intro_openmp(7),intro_openacc(7), andintro_MPI(3).The
ftn(1),cc(1), andCC(1)manpages are disambiguation manpages that provide basic introductions to the compiler environment. For information specific to the CCE Fortran compiler, see thecrayftn(1)manpage. For information specific to the CCE C, C++, or UPC compiler, see theclang(1)manpage.Alternatively, the
craycc(1)andcrayCC(1)manpages are aliases that redirect to the Clang C, C++, and UPC manpage.Third-party documentation
Third-party documentation is not provided by HPE.
Additional resources
Product |
Documentation Source |
|---|---|
Clang/LLVM C and C++ compiler |
Documentation for the CCE C and C++ compilers is available here, in the |
GNU compilers |
Documentation for the GNU C and Fortran compilers is available here |
glibc |
glibc documentation is available here |
GLIB |
GLIB documentation is available here |
RPM |
RPM documentation is available here |
Installing CCE
CCE is distributed as a set of RPM packages.
To use the CCE compilers, install a CCE compiler driver package. There are three CCE compiler driver packages:
cce-<version>-environment-modulescontains Environment Modules modulefiles for CCE. The modulefiles rely on the CrayPE Drivers (CC,cc, andftn) to invoke CCE compilers and automatically link with libraries from other loaded CPE modulefiles.cce-<version>-lmodcontains Lmod modulefiles for CCE. The modulefiles rely on the CrayPE Drivers (CC,cc, andftn) to invoke CCE compilers and automatically link with libraries from other loaded CPE modulefiles.cce-<version>-modulelesscontains the CCE moduleless compiler driverscrayCC,craycc,craycxx, andcrayftn. The moduleless compiler drivers invoke CCE compilers without automatically linking with libraries from loaded CPE modulefiles.
Optionally, you can install:
cce-<version>-gpu-amdto compile applications for AMD GPUs.cce-<version>-gpu-nvidiato compile applications for NVIDIA GPUs.cce-<version>-pgas-ofito compile applications for PGAS on the OFI network target.cce-<version>-docfor online documentation, including man pages.cce-<version>-develfor compiler development.cce-<version>-set-defaultto set CCE<version>as the default CCE on the system.
For a minimal installation suitable for running applications built by CCE, install only cce-<version>-runtime. Also install
any GPU and PGAS packages that the application requires.
Procedure
To install CCE RPMs, use a package manager or use the rpm command. A package manager handles RPM dependencies automatically.
The rpm command does not handle RPM dependencies automatically. Zypper is the recommended package manager on SLES systems.
DNF is the recommended package manager on RHEL systems. For details on configuring each package manager, refer to the
package manager’s documentation.
To install a package with Zypper, run:
hostname> zypper install <package_name>
To install a package with DNF, run:
hostname> dnf install <package_name>
To install an RPM with the rpm command, run:
hostname> rpm -ivh <rpm_name>.<arch>.rpm
Setting the default CCE version
To set CCE version <version> as default:
hostname> /opt/cray/pe/admin-pe/set_default_files/set_default_cce_<version>
To use CCE:
hostname> module load PrgEnv-cray
This module defines the system paths and environment variables needed to build an application using CCE for supported systems and loads and links additional libraries as required. The exact modules loaded vary depending on the system type.
To switch to the x.y.z version of CCE:
hostname> module swap cce cce/x.y.z
Note that users at sites that opt to not enable CPE by default must source $CRAY_ENABLE_PE to enable use of the CPE module environment.
Compiling and linking code
To compile and link code, always use either the ftn, cc, or CC command. Due to the multiple compiling environments
potentially available on HPE systems, the craype module provides compiler drivers that forward the ftn, cc, and CC
commands to the commands required by specific compilers.