The Cray Compiling Environment

The Cray Compiling Environment (CCE) contains both the Cray C and C++ compilers.

The Cray Compiling Environment (CCE) contains both the Cray C and C++ compilers.

Log in either to a login node or a standalone application development system and use the Cray XC or Cray CS series systems Programming Environment, and related products to create an application which executes on compute nodes. For further information about login nodes and the user environment, see the Cray Programming Environment User's Guide.

Throughout this manual, the differences between the Cray C and C++ compilers are noted when appropriate. When there is no difference, the phrase the compiler refers to both compilers. All compiler command options apply to Cray C and C++ unless noted.

The Cray C Compiler

The Cray C compiler consists of a preprocessor, a language parser, an optimizer, and a code generator. Invoke the Cray C compiler with the cc compiler driver command. This command and its options are also described in the craycc(1) man page.

The Cray C++ Compiler

The Cray C++ compiler consists of a preprocessor, a language parser, an optimizer, and a code generator. Invoke the Cray C++ compiler with the CC compiler driver command. The CC command is described in the crayCC(1) man page. See Compiler Command Line Options.

Standards

The Cray C compiler conforms to the International Organization of Standards (ISO) standard ISO/IEC 9899:2011 (C11).

The Cray C++ compiler accepts the C++ language as defined by the ISO/IEC 14882:2003 standard, with some exceptions. The exceptions are noted in Cray C and C++ Dialect Use.

The Cray C++ compiler also contains support for the C++14 version of the C++ language as defined by the  ISO/IEC 14882:2014 standard. This support can be enabled with the –hstd=c++14 command-line flag.

The Cray C compiler supports the UPC 1.3 specification. The UPC 1.3 specification is discussed on the UPC specification website, http://code.google.com/p/upc-specification. This support can be enabled with the -hupc command-line flag.

Code compiled with versions of CCE earlier than 9.1.0 is incompatible with code compiled with versions 9.1.0 or later of CCE. Older C++ code must be recompiled to be compatible with later versions.

CCE 9.1.0 is compatible with gcc 8.1.0 or later. Linking to an earlier version of gcc will produce linker errors. To correct these, either unload the gcc/4.8.1 module or swap to gcc/8.1.0.

Related Publications

The following documents contain additional information that may be helpful:

  • cc(1) compiler driver man page
  • craycc(1) man page for the Cray C compiler
  • CC(1) compiler driver man page
  • crayCC(1) man page for the Cray C++ compiler
  • intro_directives(7) man page
  • intro_openacc(7) man page
  • intro_openmp(7) man page
  • intro_pgas(7) man page
  • ftn(1) compiler driver man page
  • crayftn(1) man page for the Cray Fortran compiler
  • aprun(1) man page
  • Cray Fortran Reference Manual
  • Cray Programming Environments User Guide
  • Cray Performance Measurement and Analysis Tools User Guide
  • Clang Compiler User's Guide