create new tag
, view all tags

Compilers: Introduction

  • 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.
. -- SylvainKorzennikHPCAnalyst - 27 Jun 2012
Topic revision: r2 - 2012-06-28 - SylvainKorzennikHPCAnalyst
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2015 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback