Aller au contenu principal

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.

Remarque

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-scalapack

Utilisation

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