CCF (Core Computational Facility) @ UQ run by ITS / SMP


[Home] [why HPC?] [UQ Resources] [getafix] [dogmatix] [asterix] [ghost] [contacts/help]
howto: [data] [Slurm] [OpenMP/MKL] [Nvidia GPU] [Intel Phi] [MPI] [matlab] [mathematica] [FAQ]

Howto - OpenMP and/or Intel MKL

This is not a whyto/howto parallelisation. There are many reasons to do this. Instead, just a quick guide is given here to running such calculations on asterix or obelix. Both the GNU-based compilers and the Intel compiler are able to handle the OpenMP protocol if it is included in your source code.


gnu compiler, OpenMP, and LAPACK/BLAS

For the gnu compiler (gcc, g++, gfortran) the basic -fopenmp option will enable any OpenMP commands in your source code.

The system GNU compiled LAPACK and BLAS (-llapack -lblas) are not parallelised.

Intel compiler, OpenMP, and LAPACK/BLAS via Intel MKL

For the Intel compiler (icc, ifort) the basic -openmp command will enable any OpenMP commands in your source code.

The Intel MKL compiled LAPACK and BLAS require special commands at compile time:
-Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group
which explicitly links to the single-processor version of the intel MKL.

To link to the multi-core Intel MKL do:
-Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -lpthread

These commands change from compiler version to version. The best way to work out the options for the Intel compiler are to use the https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/

Example multicore/OpenMP/Intel MKL script

Slurm openmp example needed.

Note that you are able to separately control the number of threads that OpenMP and the Intel MKL will spawn.


This page last updated 17th May 2017. [Contacts/help]