Jean Zay : la bibliothèque ScaLAPACK

Description

ScaLAPACK est une bibliothèque composée d'un ensemble de sous-programmes Fortran permettant de résoudre en parallèle des problèmes d'algèbre linéaire dense par des méthodes numériques directes. Cette bibliothèque dépend elle-même des bibliothèques parallèles PBLAS (Parallel BLAS) et BLACS (Basic Linear Algebra Communication Subprograms) sur lesquelles elle s'appuie pour réaliser en parallèle les opérations matricielles élémentaires et les communications inter-processus, via MPI par exemple.

ScaLAPACK est disponible via les bibliothèques Intel MKL (Math Kernel Libraries) que nous recommandons car elles offrent de meilleures performances ou en version libre (netlib).

Versions installées

  • Versions Intel MKL (versions recommandées)
  • netlib-scalapack/2.0.2-mpi-cuda : version 2.0.2, compilateur GCC 8.2.0, Intel MPI et CUDA
  • netlib-scalapack/2.0.2-mpi : version 2.0.2, compilateur GCC 9.1.0 et Intel MPI
  • netlib-scalapack/2.0.2-mpi : version 2.0.2, compilateur Intel 2019.4 et Intel MPI

Ces informations peuvent être retrouvées par les commandes :

$ module avail intel-mkl
$ module avail netlib-scalapack

Environnement

Les versions de ScaLAPACK sont disponibles dans les environnements suivants :

  • Les environnements Intel relatifs aux diverses Intel MKL
  • gcc/9.1.0 intel-mpi/19.0.4
  • gcc/8.2.0 intel-mpi/19.0.4
  • gcc/8.2.0 openmpi/4.0.1-cuda

Concernant les environnements Intel, nous vous invitons à consulter notre documentation sur les bibliothèques Intel MKL.

Pour la version libre, ces informations peuvent être retrouvées par la commande :

$ module show netlib-scalapack

Pour utiliser cette librairie dans d'autres environnements, veuillez contacter l'équipe Support aux Utilisateurs.

Remarque : pour obtenir les informations sur les chemins d'accès aux librairies de la version libre, il sera nécessaire de charger au préalable l'environnement choisi (Gcc dans cet exemple) :

$ module load gcc/9.1.0 intel-mpi/19.0.4
$ module show netlib-scalapack

Utilisation

La bibliothèque est accessible par module.

Utilisation de ScaLAPACK via la MKL

Pour l'utilisation de la MKL, nous vous invitons à consulter la page concernant La bibliothèque Intel MKL.

Utilisation de ScaLAPACK en version libre

Pour charger la version par défaut dans l'environnement courant ou dans l'environnement par défaut si aucun environnement n'est préalablement chargé :

$ module load netlib-scalapack

ou pour charger une version spécifique dans un environnement spécifique (Gcc dans cet exemple) :

$ module load gcc/8.2.0 openmpi/4.0.1-cuda
$ module load netlib-scalapack/2.0.2-mpi-cuda

Édition des liens

Édition de liens avec la MKL

Nous vous invitons à consulter la page concernant les bibliothèques Intel MKL.

L'édition des liens pour l'utilisation de la MKL peut varier en fonction de plusieurs paramètres tels que le système d'exploitation, le type de compilateur et l'architecture. Il est recommandé d'utiliser Intel® Math Kernel Library Link Line Advisor pour retrouver les options appropriées.

Voici un exemple pour la bibliothèque ScaLAPACK :

$ module load intel-mkl
$ ifort appel_scalapack.f90 -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 \
                            -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm

Édition des liens avec version libre

Lors de l'édition de liens, il est nécessaire d'ajouter l'option '-lscalapack' :

$ module load gcc/9.1.0 intel-mpi/19.0.4
$ module load netlib-scalapack/2.0.2-mpi
$ gfortran appel_scalapack.f90 -lscalapack

Documentation