Jean Zay : la bibliothèque BLAS

Description

BLAS (Basic Linear Algebra Subprograms) est un ensemble de fonctions réalisant des opérations de base de l'algèbre linéaire comme des additions de vecteurs, des produits scalaires ou des multiplications de matrices.

BLAS est disponible via les bibliothèques Intel MKL (Math Kernel Libraries) que nous recommandons car elles offrent de meilleures performances ou en versions libres (Netlib et OpenBLAS).

Versions installées

  • Versions Intel MKL (versions recommandées)
  • netlib-lapack/3.8.0 : LAPACK 3.8.0, compilateurs GCC 8.2.0, GCC 9.1.0 ou Intel 2019.4
  • openblas/0.3.6 : OpenBLAS 0.3.6, compilateurs GCC 8.2.0, GCC 9.1.0 ou Intel 2019.4

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

$ module avail intel-mkl
$ module avail netlib-lapack
$ module avail openblas

Environnement

Les versions de BLAS sont disponibles dans les environnements suivants :

  • Les environnements Intel relatifs aux diverses Intel MKL
  • intel-compilers/19.0.4
  • gcc/9.1.0
  • gcc/8.2.0

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

Pour les versions libres, ces informations peuvent être retrouvées par les commandes :

$ module show netlib-lapack
$ module show openblas

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 des versions libres, il sera nécessaire de charger au préalable l'environnement choisi (Gcc dans cet exemple) :

$ module load gcc/9.1.0
$ module show netlib-lapack
$ module show openblas

Utilisation

La bibliothèque est accessible par module.

Utilisation de BLAS via la MKL

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

Utilisation de BLAS via LAPACK

Pour l'utilisation de la bibliothèque LAPACK, nous vous invitons à consulter notre documentation concernant les bibliothèques LAPACK.

Utilisation de BLAS via OpenBLAS

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 openblas

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

$ module load gcc/8.2.0
$ module load openblas/0.3.6

É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 BLAS :

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

Édition des liens avec LAPACK version libre

Pour l'édition de liens avec la bibliothèque libre LAPACK, nous vous invitons à consulter notre documentation concernant les bibliothèques LAPACK.

Lors de l'édition de liens, il est nécessaire d'ajouter les options -lblas :

$ module load gcc/9.1.0
$ module load netlib-lapack
$ gfortran appel_blas.f90 -lblas

Édition des liens avec BLAS version libre

Lors de l'édition de liens, il est nécessaire d'ajouter les options -lopenblas :

$ module load gcc/9.1.0
$ module load openblas
$ gfortran appel_blas.f90 -lopenblas

Documentation