There are three sets of compilers available on hydra.
They all support C, C++, f77 and f90.
You can produce and run MPI or OpenMP executables with all of them.
You can produce and run executables with InfiniBand (IB) support for all of them.
The 3 sets are:
GNU (gcc, g++, gfortran)
Intel (icc, icpc, ifort)
PGI, Portland group (pgcc, pgf77, pgf90)
MPI is a message passing API, that allows you to write parallel code. You must explicitly parallelize your algorithm.
OpenMPI is a specific implementation of MPI, build with the GNU compilers.
You cannot mix and match compilers, their respective libraries, and the associated run-time environment,
Some parallel environments are tied to specific compilers (ORTE for OpenMPI),
To use the IB fabric for message passing (faster) you need to
compile and link your code with the appropriate libraries (mvapich),
run it on IB-enabled compute nodes using the appropriate queue(s).
OpenMP is an API for shared-memory parallel programming. Programs are parallelized by the compiler, using embedded directives, and generates a multi-threaded executable. All the threads (sub-processes) must run on the same host (i.e., the same compute node), limiting the available degree of parallelism.