previous up next top index
Précédent : Projets HPFIT et TransTool Remonter : Parallélisation automatique et algorithmique parallèle Suivant : Outils/environnements pour la programmation parallèle


Algorithmique parallèle

 

Notre but est de développer une expertise dans la parallélisation d'algorithmes. Nous travaillons principalement sur l'algèbre linéaire dense et sur la parallélisation d'applications utilisant de tels noyaux de calculs.

ScaLAPACK est une bibliothèque parallèle d'algèbre linéaire portable et efficace développée à l'université du Tennessee. Elle peut être optimisée et complétée. Cette année, nous avons terminé l'optimisation de la factorisation LU de ScaLAPACK en donnant une méthode de calcul de taille optimale des blocs et en optimisant les communications à l'aide de recouvrements calculs/communications [65, 46].

Nous avons commencé une collaboration avec F. Tisseur de l'université de St-Etienne dans le cadre de la parallélisation d'un nouvel algorithme de recherche de valeurs propres pour les matrices symétriques, l'algorithme de Yau et Lu. Cet algorithme contient de nombreux noyaux qui peuvent être parallélisés efficacement. La bibliothèque ScaLAPACK ne contient pas toutes les routines nécessaires. Une routine de produit de matrices symétriques a donc été étudiée et développée. En tenant compte de la symétrie de la matrice, nous pouvons diviser le temps d'exécution par deux dans la majorité des cas.

Les communications sont la principale source de perte de performances lors de la parallélisation d'un algorithme sur une machine à mémoire distribuée. Il convient donc de les recouvrir le plus possible, mais ce recouvrement conduit à des codes compliqués et peu portables. De plus, dans le cas des calculs pipelinés, cette optimisation conduit à des problèmes théoriques importants pour le choix du grain de calcul optimal. Une bibliothèque avait donc été développée pour simplifier l'utilisation des recouvrements : les LOCCS (Low Overhead Communication and Computation Subroutines ). Nous avons amélioré la bibliothèque LOCCS et bâti la bibliothèque OPIUM (Optimal Packet Size Computation Methods ) de calcul de grain optimal pour la bibliothèque LOCCS. Si, dans le cas d'une complexité linéaire des calculs et des communications, ce calcul est simple, ce n'est plus vrai pour des degrés supérieurs ou des valeurs logarithmiques. Nous avons donc développé des algorithmes pour le calcul des tailles de paquets dans le cas général [42].

L'utilisation d'un langage de haut niveau comme High-Performance Fortran (HPF) relègue la majeur partie des optimisations au niveau du compilateur et du support d'exécution. L'utilisation d'une bibliothèque comme les LOCCS doit donc être intégrée au compilateur : c'est pourquoi nous avons effectué ce travail en collaboration avec Thomas Brandes (GMD/SCAI), au sein du compilateur Adaptor [32].



previous up next top index Précédent : Projets HPFIT et TransTool Suivant : Outils/environnements pour la programmation parallèle Remonter : Parallélisation automatique et algorithmique parallèle