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 en version libre (netlib) ou via les bibliothèques Intel MKL (Math Kernel Libraries) que nous recommandons car elles offrent de meilleures performances.
Versions installées
Les versions installées sur Jean Zay peuvent être trouvées par les commandes suivantes :
module avail intel-mklmodule avail netlib-scalapack
Environnement
Les versions de ScaLAPACK sont disponibles dans différents environnements.
Version Intel MKL
Concernant les environnements Intel, nous vous invitons à consulter notre documentation sur les bibliothèques Intel MKL
Version libre
Pour la version libre, ces informations peuvent être retrouvées par la commande :
module show netlib-scalapack
Pour utiliser cette bibliothèque dans d'autres environnements, veuillez contacter l'équipe Support aux Utilisateurs.
Pour obtenir les informations sur les chemins d'accès aux librairies, il sera nécessaire de charger au préalable l'environnement choisi. Par exemple :
module load nvidia-compilers/21.9 cuda/11.2 openmpi/4.0.5-cudamodule show netlib-scalapackUtilisation
La bibliothèque est accessible par la commande 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-cudamodule 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® MKL Link Line Advisor pour retrouver les options appropriées.
Voici un exemple pour la bibliothèque ScaLAPACK :
module load intel-compilers intel-mpimodule load intel-mklifort 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.4module load netlib-scalapack/2.0.2-mpigfortran appel_scalapack.f90 -lscalapack
Documentation
🌐 Site de référence
📝 ScaLAPACK Users'Guide
📝 ScaLAPACK and PBLAS subroutines specifications
📝 BLACS subroutines specifications
📝 Intel MKL
📝 Intel® MKL Link Line Advisor