Two-factor authentication is now required of all users. Last Updated Wednesday, Jan 23 09:55 am 2019


Here are our currently recommended compiler versions.

Provider Version Module Name Language Command Comment
GNU 7 gcc/7 C gcc
C++ g++
Fortran 77/90 gfortran gfortran has replaced g77 and handles both Fortran 77 and Fortran 90
Intel 18 intel-compilers/2018 C icc
C++ icpc
Fortran 77/90 ifort
LLVM 7 llvm/7 C clang
C++ clang++

Recommended Compiler Optimizations

We recommend compiling at high optimization levels. For the above compilers, -O3 is recommended. We do not recommend -march=native as we have many different hardware generations; if you compile with -march=native on m8 the program may error with an illegal instruction if you run it on m7.


The MPI libraries and compiler wrappers are tied to particular compilers. Load the compiler you want first, then run one of these commands to see which MPI implementations are available:

module avail openmpi
module avail intel-mpi

For example, the output of module load gcc/7 ; module avail openmpi currently looks like this:

--------------------------- /apps/modulefiles/.gcc/7 ---------------------------

This means the module openmpi/3.1 is available and can be loaded.

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 intel-mkl modules.

The Intel® Math Kernel Library Link Line Advisor is the recommended place to get the flags needed to link any given application with the Intel MKL, including if you are using the MKL as a BLAS or LAPACK drop-in.

Generally, the Intel MKL should either be statically linked or have a RUNPATH set in the library/executables that need it. We set the LD_RUN_PATH environment variable, which many tools will use to automatically set the RPATH/RUNPATH. If that does not work you may need to add flags such as -Wl,--enable-new-dtags,-rpath,$MKLROOT/lib/intel64.