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 make install
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.