The currently recommend compiler versions are described in the following table. Other versions can be displayed by logging into the interactive nodes and running module avail module_name e.g. module avail compiler_gnu.

Provider Version Module Name Language Command Comment
GNU 6.1.0 compiler_gnu/6/1 C gcc
C++ g++
Fortran 77/90 gfortran gfortran has replaced g77 and handles both Fortran 77 and Fortran 90
Intel 17.0.1 compiler_intel/2017 C icc
C++ icpc
Fortran 77/90 ifort
LLVM 4.0.0 compiler_llvm/4 C clang
C++ clang++
Portland Group 12.5-0 compiler_pgi/12.5 C pgcc
C++ pgc++
Fortran 77 pgf77 Handles Fortran 77 only
Fortran 90 pgf90 Handles Fortran 90 only

Recommended Compiler Optimizations

The following table outlines some recommended compiler optimizations for each compiler provider in general and for specific FSL systems. The general flags are applicable on all of our systems.

Compiler Recommend optimization flags for FSL
GNU -O3 -mavx
Intel -O3 -fp-model precise -axCORE-AVX2 -xAVX
LLVM -O3 -mavx
Portland Group -O3 -tp sandybridge

For more information about compiler flags and compiler optimizations, the manual page for the specific compiler can sometimes be a useful resource. For example, you may type man icc to learn more about the compiler flags available to the Intel C compiler. If you cannot find the information you need in manual pages, you might do a little research using your favorite search engine.

MPI Compilers

By default, the system is set up to use OpenMPI with GCC compilers. If you want to use OpenMPI with Intel, Portland Group, or a new GNU compiler, you will need to load a different module. To see a list of available modules: module avail mpi

Intel Math Kernel Libraries

The Intel Math Kernel Libraries are a suite of libraries that provide highly optimized versions of common math routines. If your application needs to use a linear algebra package, such as LAPACK or BLAS, fast fourier transforms, or other common math routines, you may benefit by linking against the Intel MKL. The Intel MKL can be found in /apps/intel_compilers/2013.1.117/mkl or /apps/intel_compilers/2011.10.319/mkl. For information about how to use and link against the MKL, see the official Intel MKL Documentation.