Compilers

Gemini has two compiler collections available for building/compiling programs: GCC and the Intel Compiler Collection. Either can be used and depending on the application one may be preferable over the other. For CPU only type applications the Intel compilers will typically produce faster running code. For GPU applications the recommendation is to use GCC (and the associated CUDA compilers).

Loading Standard Compilers

gcc and gfortran
module load gcc

Intel Compilers
module load intel

When loading gcc, gfortan gets automatically loaded. For the Intel compilers the C, C++ and Fortran compilers will all be loaded.

Loading MPI Compilers

If the program you are compiling is MPI based, you will need to use OpenMPI as the compiler set. From there the relevant compiler wrappers (e.g. mpicc) will point to the correct compiler backend. When loading OpenMPI the CUDA Toolkit is automatically loaded for version of OpenMPI equal to 1.8.4 or higher.

gcc and gfortran
module load openmpi/gcc

Intel Compilers
module load openmpi/intel

Invoking the Compilers

Depending on how your application gets built (usually via a configure/Makefile script), you may not need to invoke the compiler directly. In cases where you need to specify the compiler specifically or set options in your shell prior to running configure (or in your Makefile) the specific compilers are:

Code TypeGCCIntelOpenMPI
Cgcciccmpicc
C++g++icpcmpic++/mpicxx
Fortrangfortranifortmpif77/mpif90
CUDAnvccnvcc -ccbin icc

For compiling OpenCL applications you simply use the default compilers and specify that they link against the OpenCL libraries (e.g. -lOpenCL).