Compilers Installed on LC Platforms

As of 07/22/16

Platform Links | Documentation | Defaults | Version Notes | Additional Notes

Platform Links

  OCF x86_64 CHAOS 5 ansel, aztec, cab, catalyst, edge, herd, rzalastor, rzcereal, rzgpu, rzmerl, rzzeus, sierra, surface, syrah
  SCF x86_64 CHAOS 5 inca, juno, max, muir, zin
  ISNSI x86_64 CHAOS 5 pinot
  OCF IBM BG/Q rzuseq, vulcan
  SCF IBM BG/Q seq

Top

Compiler Documentation

Top

Default Compilers and Versions by Platform

OCF x86_64 CHAOS 5 Platforms
ansel, aztec, cab, catalyst, edge, herd, rzalastor, rzcereal, rzgpu, rzmerl, rzzeus, sierra, surface, syrah
Vendor Language Version Commands
GNU FORTRAN 4.4.7 Serial gfortran
MPI mpigfortran
C 4.4.7 Serial gcc
MPI mpigcc
C++ 4.4.7 Serial g++
MPI mpig++
Intel FORTRAN 16.0.210 Serial ifort
MPI mpiifort
C 16.0.210 Serial icc
MPI mpiicc
C++ 16.0.210 Serial icpc
MPI mpiicpc
PGI FORTRAN 8.0-1 Serial pgf77, pgf90, pgf95
MPI mpipgf77, mpipgf90, mpipgf95
C 8.0-1 Serial pgcc
MPI mpipgcc
C++ 8.0-1 Serial pgCC
MPI mpipgCC

Top

SCF x86_64 CHAOS 5 Platforms
inca, juno, max, muir, zin
Vendor Language Version Commands
GNU FORTRAN 4.4.7 Serial gfortran
MPI mpigfortran
C 4.4.7 Serial gcc
MPI mpigcc
C++ 4.4.7 Serial g++
MPI mpig++
Intel FORTRAN 16.0.210 Serial ifort
MPI mpiifort
C 16.0.210 Serial icc
MPI mpiicc
C++ 16.0.210 Serial icpc
MPI mpiicpc
PGI FORTRAN 8.0-1 Serial pgf77, pgf90, pgf95
MPI mpipgf77, mpipgf90, mpipgf95
C 8.0-1 Serial pgcc
MPI mpipgcc
C++ 8.0-1 Serial pgCC
MPI mpipgCC

Top

ISNSI x86_64 CHAOS 5 Platforms
pinot
Vendor Language Version Commands
GNU FORTRAN 4.4.7 Serial gfortran
MPI mpigfortran
C 4.4.7 Serial gcc
MPI mpigcc
C++ 4.4.7 Serial g++
MPI mpig++
Intel FORTRAN 16.0.210 Serial ifort
MPI mpiifort
C 16.0.210 Serial icc
MPI mpiicc
C++ 16.0.210 Serial icpc
MPI mpiicpc
PGI FORTRAN 8.0-1 Serial pgf77, pgf90, pgf95
MPI mpipgf77, mpipgf90, mpipgf95
C 8.0-1 Serial pgcc
MPI mpipgcc
C++ 8.0-1 Serial pgCC
MPI mpipgCC

Top

OCF IBM BG/Q Platforms
rzuseq, vulcan
Vendor Language Version Commands
IBM XL FORTRAN 14.1 Serial bgxlf, bgf77, bgfort77, bgxlf90, bgf90, bgxlf95, bgf95, bgxlf2003, bgf2003, bgxlf2008, bgf2008
MPI mpixlf77, mpixlf90, mpixlf95, mpixlf2003
C 12.1 Serial bgxlc, bgcc, bgc89, bgc99
MPI mpixlc
C++ 12.1 Serial bgxlC, bgxlc++
MPI mpixlC
GNU FORTRAN 4.4.7 Serial powerpc-bgq-linux-gfortran
MPI mpif77, mpif90
C 4.4.7 Serial powerpc-bgq-linux-gcc
MPI mpicc
C++ 4.4.7 Serial powerpc-bgq-linux-c++, powerpc-bgq-linux-g++
MPI mpicxx

Top

SCF IBM BG/Q Platforms
seq
Vendor Language Version Commands
IBM XL FORTRAN 14.1 Serial bgxlf, bgf77, bgfort77, bgxlf90, bgf90, bgxlf95, bgf95, bgxlf2003, bgf2003, bgxlf2008, bgf2008
MPI mpixlf77, mpixlf90, mpixlf95, mpixlf2003
C 12.1 Serial bgxlc, bgcc, bgc89, bgc99
MPI mpixlc
C++ 12.1 Serial bgxlC, bgxlc++
MPI mpixlC
GNU FORTRAN 4.4.7 Serial powerpc-bgq-linux-gfortran
MPI mpif77, mpif90
C 4.4.7 Serial powerpc-bgq-linux-gcc
MPI mpicc
C++ 4.4.7 Serial powerpc-bgq-linux-c++, powerpc-bgq-linux-g++
MPI mpicxx

Top

Alternate Compiler Versions

Modifying Default Compiler Versions with Dotkit: Default compiler versions can be modified using Dotkit. Dotkit starts up by default at login time on all CHAOS Linux machines. To load a Dotkit package, use the use command. For example, running use ic-9.1.052 will cause the icc, ifort, mpiicpc, etc. commands to invoke the 9.1.052 version of the Intel compilers. Note that Dotkit works by modifying environment variables, thus the changes are only valid for the session in which the use command was invoked. These changes can be made persistent by invoking the Dotkit in your startup script, in which case it is suggested to run use -q to run Dotkit in quiet mode. To view available compiler Dotkits run the use -l compilers command. More information about Dotkit can be found on LC's Dotkit page.

Alternate compiler versions: Older and newer versions of all compilers (including MPI wrappers) are available through version specific names such as ifort-12.1.339 and mpipgcc-7.1.3. LC provides a utility to see a full list of available compiler commands. This utility is available via the compilers command. Specific queries, based on vendor, language, or parallelism model (serial or MPI), can be made to this utility. For query options, run compilers -h.

Top

Additional Notes

Clang note: Various Clang installations have been made available. For more information, refer to the Clang wiki on the LC Confluence server.

SYS_TYPE note: Executables compiled on machines of one SYS_TYPE are not likely to run on machines of a different SYS_TYPE. The exception is that executables may run on both chaos_5_x86_64_ib and chaos_5_x86_64. Some software and libraries may be available for some SYS_TYPEs and not others. Some utilities and libraries may be in different places on machines of different SYS_TYPEs. You may need to modify your makefiles or build scripts when transitioning to a machine of a different SYS_TYPE.

GNU compiler note: Our GNU compilers on Linux systems are versions provided to us by RedHat, not vanilla versions available from GNU. They may perform differently or have different features than the vanilla GNU builds. Builds of GNU's versions of these compilers tend not to work on our Linux systems because of incompatibilities with binutils.

gfortran and g77 note: The GNU Fortran compiler command has changed between version 3, the CHAOS 3 default, and version 4, the CHAOS 4 default. On CHAOS 4 machines, and subsequently CHAOS 5 machines, the default GNU Fortran compiler is invoked with the gfortran command. If you use the g77 command on a CHAOS 5 system, you will get the non-default GNU Fortran compiler (version 3).

Pathscale note: As of CHAOS 5, LC no longer supports the Pathscale compilers.

CUDA note: The CUDA Toolkit is available on systems with compatible GPU accelerators. Information on how to build codes with CUDA can be found on LC's CUDA pages.

OpenCL note: OpenCL is available on systems with GPU accelerators. Information on how to build codes with OpenCL can be found on LC's OpenCL pages.

Vectorization with the Intel Compiler note: Vectorization is becoming increasingly important for performance on modern processors with widening SIMD units. More information on how to vectorize with the Intel compilers can be found on LC's vectorization page.

Static Security Analysis with the Intel Compiler note: The Intel Compiler includes a feature known as Static Security Analysis (SSA), which performs static analysis of source code to uncover security vulnerabilities and code correctness issues. More information how to use SSA with the Intel compilers can be found on LC's SSA page.

Intel compiler mixed language note:

When calling a Fortran routine compiled with ifort from C or C++, it is recommended that you call the Intel-specific initialization and finalization routines, for_rtl_init_ and for_rtl_finish_. This is particularly important when using ifort runtime options such as -check all. For example, you will first need to declare the following functions:

void for_rtl_init_(int *, char **);
int for_rtl_finish_();

(if using C++, you will need to declare them as extern "C"):

extern "C" {
    void for_rtl_init_(int *, char **);
    int for_rtl_ffffinish_();
};

From your C or C++ main you will then need to initialize and finalize with these functions, for example:

int main(int argc, char **argv)
{
    for_rtl_init_(&argc, argv);

    /* your code here... */

    int io_status = for_rtl_finish_();
    return 0;
}

Because these routines are Intel specific, you may want to encapsulate them within #ifdef directives for the Intel compiler defined macro __INTEL_COMPILER.

Top