Turing : The ESSL library


ESSL is the IBM scientific library, optimised for the PowerPC A2 processors. It provides a group of sequential subroutines and some SMP parallel subroutines :

  • The BLAS subroutines
  • Some of the LAPACK subroutines
  • Resolution of linear algebraic systems (dense, band, sparse solvers)
  • Eigenvalues and eigenvectors
  • Fourier transforms
  • Interpolation
  • Sorting and searching
  • Random number generation


Libraries Linking Numeric Mode Subroutine names
Sequential $ module load essl
$ mpixlf90_r call_essl.f
I4S4 S… / C…
I4D8 D… / Z…
SMP parallel $ module load esslsmp
$ mpixlf90_r -qsmp call_essl.f
I4S4 S… / C…
I4D8 D… / Z…

In C and C++:

  • You must specify #include <essl.h> in each source file which calls the library.
  • It is necessary to add the following options to the linking: -L/opt/ibmcmp/xlf/bg/14.1/bglib64 -L/opt/ibmcmp/xlsmp/bg/3.1/bglib64 -lxlf90_r -lxlomp_ser -lxlfmath.

Certain subroutines are also SMP parallel (multithreaded). To use them, launch the linking with the re-entrant (thread safe) compiler and the -qsmp option.


INTEGER                         :: init, inc1x, inc2x, inc1y, inc2y, n, m, &amp;
                                   isign, naux1, naux2
DOUBLE PRECISION                :: scale
REAL(kind=8), DIMENSION(naux1)  :: aux1
REAL(kind=8), DIMENSION(naux2)  :: aux2
COMPLEX(kind=8), DIMENSION(n,m) :: x, y
! Complex Fourier transforms
CALL dcft (init, x, inc1x, inc2x, y, inc1y, inc2y, n, m, isign, scale, aux1, &amp;
           naux1, aux2, naux2)
  • Example 1 : linking with the sequential library :

    $ module load essl
    $ mpixlf90_r essl.f90
  • Example 2 : linking with the SMP parallel library :

    $ module load esslsmp
    $ mpixlf90_r -qsmp essl.f90