Table des matières
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 CUDAnetlib-scalapack/2.0.2-mpi
: version 2.0.2, compilateur GCC 9.1.0 et Intel MPInetlib-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