Turing : la bibliothèque ESSL

Description

ESSL est la bibliothèque scientifique IBM, optimisée pour les processeurs PowerPC A2. Elle fournit un ensemble de sous-programmes séquentiels et quelques sous-programmes parallèles de type SMP :

  • les sous-programmes BLAS,
  • quelques sous-programmes LAPACK,
  • résolution de système d'algèbre linéaire (dense, bande, creux),
  • valeurs et vecteurs propres,
  • transformées de Fourier,
  • interpolation,
  • recherche et tri,
  • génération de nombre aléatoires,

Utilisation

Bibliothèques Édition de liens Mode numérique Nom des sous-programmes
séquentielle $ module load essl
$ mpixlf90_r call_essl.f
I4S4 S… / C…
I4D8 D… / Z…
parallèle SMP $ module load esslsmp
$ mpixlf90_r -qsmp call_essl.f
I4S4 S… / C…
I4D8 D… / Z…

En C et C++,

  • vous devez spécifier #include <essl.h> dans chaque fichier source appelant la bibliothèque,
  • Il faut ajouter les options suivantes à l'édition de liens : -L/opt/ibmcmp/xlf/bg/14.1/bglib64 -L/opt/ibmcmp/xlsmp/bg/3.1/bglib64 -lxlf90_r -lxlomp_ser -lxlfmath

Certains sous-programmes sont également parallèles de type SMP (multithreadé). Pour les utiliser, lancez l'édition de liens avec le compilateur ré-entrant et l'option -qsmp.

Exemple

essl.f90
...
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
...
! Transformée de Fourier complexe
CALL dcft (init, x, inc1x, inc2x, y, inc1y, inc2y, n, m, isign, scale, aux1, &amp;
           naux1, aux2, naux2)
  • Exemple 1 : édition de liens avec la bibliothèque séquentielle :

    $ module load essl
    $ mpixlf90_r essl.f90
  • Exemple 2 : édition de liens avec la bibliothèque parallèle SMP :

    $ module load esslsmp
    $ mpixlf90_r -qsmp essl.f90

Documentations

Guide d'utilisation et de référence IBM

* sur le site IBM

*ESSL Guide and Reference (copie à l'IDRIS)