Cray Compiler Environment

Overview

HPE Cray Compiling Environment (CCE) consists of compilers, libraries, and utilities that perform code analysis during compilation and automatically generate highly optimized code. Compilers support numerous command-line arguments to enable manual control over compiler behavior and optimization. Supported languages include Fortran, C and C++, and UPC (Unified Parallel C).

Implementation

CCE provides Fortran, C, and C++ compilers for HPE Cray EX, XD, and HPE Apollo 2000 Gen10Plus systems.

Introduction

HPE Cray’s proprietary Fortran compiler that fully supports the Fortran 2018 standard with some exceptions and deferred features as noted in the HPE Cray Compiling Environment Release Overview (S-5212). The HPE Fortran programming environment consisting of the tools and libraries used to develop Fortran applications. Some of those tools and libraries are outlined below.

  • The ftn command, a compiler driver that compiles source into object code and links object code files and libraries to create executable files. See the crayftn(1) man page for more information.

  • The ftnlx command, which generates listing and checks for possible Fortran programming errors. See the ftnlx(1) man page for more information.

  • The ftnsplit command, which splits named Fortran files into separate files with one program unit per file, See the ftnsplit(1) man page for more information,

  • The ftnmgen command, which invokes the Fortran makefile generator. See the ftnmgen(1) man page for more information.

  • CrayLibs libraries, which provides library routines, intrinsic procedures, I/O routines, and data conversion routines.

HPE Clang C and C++, is based on Clang/LLVM. HPE has modifed Clang/LLVM to improve the performance of generated code. The modifications also provide additional features. In general, performance improvements are enabled by default at appropriate optimization levels, but features must be requested by an option. The latest version of the full documentation for the Clang compiler is provided at https://clang.llvm.org/docs/UsersManual.html. See HPE Cray Clang C and C++ Quick Reference (S-2179) for ways in which the CCE implementation of Clang differs from the LLVM source. Compiler drivers cc and CC that set the target based on the loaded craype-arch module and link with the necessary HPE Cray libraries, including optimized math functions, memcpy, and OpenMP runtime. HPE discourages use of native clang or clang++ commands, as doing so may not find necessary paths and does not link automatically to our libraries.

Compiling and Launching

Compiling a code is typically done on a user access or login node rather than directly on a compute node. When the Cray programming environment is loaded (typically by default), use one of the HPE compiler drivers, ftn(1), cc(1), or CC(1), to quickly and easily compile, assemble, and link Fortran, C, or C++ codes, respectively. See ftn(1), cc(1), or CC(1) for more information.

After an executable is generated it is launched via a workload manager, such has PBS Professional or Slurm.

The following sections detail some of the larger CCE components.

Introduction Man Pages

These man pages introduce and explain various compiler features and concepts.

UPC Man Pages

IEEE

Math Man Pages

AIO Man Pages

PXF Man Pages

UPC Man Pages

Misc Man Pages