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
module load gcc
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.
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 Type | GCC | Intel | OpenMPI |
---|---|---|---|
C | gcc | icc | mpicc |
C++ | g++ | icpc | mpic++/mpicxx |
Fortran | gfortran | ifort | mpif77/mpif90 |
CUDA | nvcc | nvcc -ccbin icc |
For compiling OpenCL applications you simply use the default compilers and specify that they link against the OpenCL libraries (e.g. -lOpenCL).