HPC Libraries

There are a number of libraries available which are useful for HPC work. Whilst some libraries are installed centrally on the clusters, the general policy is to provide information to help users compile and install the library in their home directory, rather than installing centrally. The reason for this is that there are a large number of variations in the way the libraries are compiled - version of the library, compile options, compiler choice etc - providing options to keep everyone happy would mean compiling each library several times. Larger pieces of software such as compilers and MPI libraries will continue to be installed centrally - please ask if you need one installing.


  • Decide which compiler you want to use (ie gcc/intel/portland/open64/sun) - in general it makes sense to stick to the same compiler for the whole project. For C/C++ it should be possible to use different compilers for code which is then linked together but Fortran code this is less easy.
  • Setup your environment before starting to compile
  • It is usually advisable to compile code on the same architecture machine as it will be run on, i.e. use a qlogin session or qsub to compile.

FFTW - Fastest Fourier Transform in the West

FFTW is a library for computing Fast Fourier Transforms, with support for MPI. It uses GNU autoconf for configuration. Here is an example for compiling the MPI library using the Intel compiler:

wget <http://www.fftw.org/fftw-2.1.5.tar.gz>
tar xf fftw-2.1.5.tar.gz
cd fftw-2.1.5
./configure --prefix=$HOME/fftw '--enable-mpi' '--enable-type-prefix' '--enable-float' 'CC=icc' 'CFLAGS=-O3 -fomit-frame-pointer -malign-double'
make install


GoToBLAS2 is generally regarded as the fastest open source implementation of the basic linear algebra subroutines level 2. Note however that is no longer under active development.

Here is an example of compiling it using the Intel compilers:

Download the code from TACC

tar xf GotoBLAS2-1.13.tar.gz
cd [otoBLAS2
make USE_THREAD=0 CC=icc FC=ifort

This will create a library called libgoto2_penryn-r1.13.a which can then be linked against as necessary.