BLAS

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Sommaire

Description

La bibliothèque Basic Linear Algebra Subprograms (BLAS) est un ensemble de fonctions à interface standardisée pour réaliser des opérations de base en algèbre linéaire matricielle impliquant des matrices et vecteurs denses. Cette bibliothèque est utilisée dans le calcul haute performance, particulièrement lorsque une grande variété d'opérations vectorielles ou matricielles sont nécessaires.

L'implantation BLAS de référence est disponible sur Netlib. Par contre, cette implantation est rarement utilisée puisqu'elle n'a pas été développée pour réaliser du calcul haute performance. Des tierces parties offrent donc leur propre version optimisée des BLAS afin de maximiser la performance du calcul tout en conservant la compatibilité et la précision de l'implantation de référence.

La version de base est écrite de Fortran 77, cependant, il existe une version C appelée CBLAS. Cette version est souvent disponible dans le même fichier d’archive. Les routines sont regroupées en trois catégories : Niveau 1, Niveau 2 et Niveau 3. Les routines du premier niveau effectuent les opérations de type vecteur-vecteur, celles du deuxième niveau, les opérations vecteur-matrice et celles du troisième, les opérations matrice-matrice.

Nomenclature

Une fonction typique de BLAS est de la forme

 Toper(...)

T correspond au type de données, et oper décrit l'opération à effectuer. Les types possibles sont s, d, c, z, respectivement pour simple précision (float), double précision ainsi que nombres complexes en simple et double précision.

Par exemple, la fonction ddot calculera le produit scalaire (dot product) de deux vecteurs, la fonction zgemm calculera le produit matriciel de deux matrices générales complexes, et sgemv calculera le produit matrice-vecteur sur des nombres réels en simple précision.

Stockage des données

Toutes les fonctions de BLAS supposent que les données des matrices sont stockées de façon contigüe en mémoire vive. Cela implique par exemple qu'une matrice ne peut pas être représentée comme un vecteur de vecteurs. Elle doit absolument être représentée sous la forme d'un bloc de N x M éléments contigus en mémoire. De plus, les vecteurs et matrices de nombres complexes doivent être stockés de telle sorte que la partie réelle et la partie imaginaire d'un élément sont contigües en mémoire.

Implémentations existantes

BLAS est d'abord et avant tout un standard qui définit une interface de programmation. Bien que l'implémentation de référence soit celle de Netlib, il n'est généralement pas conseillé de l'utiliser, car elle n'a pas été optimisée pour la performance. Il existe plusieurs implémentations de BLAS beaucoup plus performantes.

ATLAS

ATLAS (Automatically Tuned Linear Algebra Software) est une implantation de BLAS écrite en C et développée par la communauté scientifique du logiciel libre. Lors de la compilation, ATLAS tente de s'ajuster aux particularités de l'architecture de l'ordinateur utilisé afin de générer le code le plus performant sur ce dernier.

Bien qu'elle soit plus performante que l'implantation de référence, ATLAS n'est pas aussi optimisée que les versions de MKL et GotoBLAS

Intel Math Kernel Library (MKL)

Math Kernel Library est une solution commerciale contenant, en autres, une implantation de BLAS optimisée pour les microprocesseurs d'Intel.

GotoBLAS2

GotoBLAS2 est une implantation de BLAS développée par Kazushige Goto. Cette implantation est notable puisqu'elle comporte un bon nombre d'optimisations manuelles écrites en assembleur. Dans certains cas spécifiques, elle s'avère l'implantation BLAS la plus rapide sur le marché.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager