Cray Compiler Overview
Software enhancements and support
This section describes software enhancements and support details for the HPE CCE 18.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 18.1.6.
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 18.1.6 base.
Miscellaneous features and enhancements
With the 18.0.0 release, added:
A new CCE compiler_interop manpage. This new manpage details information about CCE compiler interoperability. See Accessing Product Documentation for more information on accessing manpages.
New OpenMP 5.1 features to include:
interop
construct and API routines.compare
andfail
clauses foratomic
construct.present
modifier anddefaultmap(present)
.The
nowait
clause for thetaskwait
directive.default(private)
anddefault(firstprivate)
(C/C++).omp_target_memcpy_async
andomp_target_memcpy_rect_async
.nothing
directive (C/C++).
A new
-fopenmp-force-usm
compiler flag (C/C++/Fortran). This flag enables OpenMP unified shared memory (USM) and treats each source file as though it contains an explicitomp requires unified_shared_memory
directive.For OpenACC 3.1, the implementation of OpenACC
serial
construct.New OpenACC 2.7 features to include:
Snap subarray and subscript expressions for use at the end of data regions.
Reduction on a compute construct implies a
copy
clause.
New OpenACC 2.5 features to include:
Automatic allocate or deallocate for
device_resident
anddevice_create
allocatables and pointers.Support
acc_memcpy_device
routine.Support
num_gangs
,num_workers
, andvector_length
on kernels directives.Support
async
copy routines.The ability to handle scoping for lexically visible data regions.
RHEL 8.10 x86_64 support.
RHEL 9.4 x86_64 support.
RHLEL 9.4 aarch64 support.
Also with this release, updated the OMP_PLACE
CPU affinity mapping policy to allow for the use of absolute indexes instead of relative.
New Fortran-related features now allow for:
Control over leading zeros in output of real values:
LEADING_ZERO=
specifierAuto-allocation of character variables in more places - statements
TYPEOF
andCLASSOF
declarationsMore use of binary, octal, and hexadecimal (BOZ) constants
Partial implementation of conditional expressions and arguments
Enumeration type
SIMPLE
attribute for proceduresOpenMP floating-point atomic optimization hints for AMD MI250X GPUs
Advanced AMD GPU DWARF support, including:
Fortran scalar variables and fixed-size arrays in offload regions
Fortran common blocks
RHEL gcc-toolset-13 support and integration
For RHEL-based systems, continue to use the gcc-toolset provided by Red Hat, updating it to gcc-toolset-13 as the baseline.
RHEL-based systems with shared libraries built by CCE versions prior to 17.0.0 do not need to be rebuilt.
Compatibilities, incompatibilities, and differences
None
Accessing product documentation
Access HPE documents and manpages for HPE CCE releases from:
HPE Support Center
Access PDF versions of all CCE documents at the HPE Support Center. See Available publications for a complete list.
To narrow search results from the HPE Support Center website, enter the publication and release number (for example, S-5212 18.0.0).
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
man
command followed by the name of the manpage. For more information about manpages, see theman(1)
manpage by entering:hostname> man man
Basic CCE
man
pages 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. You can install the main cce-<version>
package to use the CCE C, C++, and Fortran compilers. Optionally, you can install:
cce-<version>-gpu-amd
to compile applications for AMD GPUs.cce-<version>-gpu-nvidia
to compile applications for NVIDIA GPUs.cce-<version>-pgas-ofi
to compile applications for PGAS on the OFI network target.cce-<version>-doc
for online documentation, including manpages.cce-<version>-devel
for compiler development.
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.