Un modèle de programmation à grain fin pour la parallélisation de solveurs linéaires creux
Auteur / Autrice : | Corentin Rossignon |
Direction : | Raymond Namyst, Pascal Hénon, Samuel Thibault, Olivier Aumage |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 17/07/2015 |
Etablissement(s) : | Bordeaux |
Ecole(s) doctorale(s) : | École doctorale de mathématiques et informatique (Talence, Gironde ; 1991-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire bordelais de recherche en informatique |
Jury : | Examinateurs / Examinatrices : François Bodin, George Bosilca |
Rapporteurs / Rapporteuses : Jean-François Méhaut, Jean-Yves L'Excellent |
Mots clés
Mots clés contrôlés
Résumé
La résolution de grands systèmes linéaires creux est un élément essentiel des simulations numériques.Ces résolutions peuvent représenter jusqu’à 80% du temps de calcul des simulations.Une parallélisation efficace des noyaux d’algèbre linéaire creuse conduira donc à obtenir de meilleures performances. En mémoire distribuée, la parallélisation de ces noyaux se fait le plus souvent en modifiant leschéma numérique. Par contre, en mémoire partagée, un parallélisme plus efficace peut être utilisé. Il est doncimportant d’utiliser deux niveaux de parallélisme, un premier niveau entre les noeuds d’une grappe de serveuret un deuxième niveau à l’intérieur du noeud. Lors de l’utilisation de méthodes itératives en mémoire partagée,les graphes de tâches permettent de décrire naturellement le parallélisme en prenant comme granularité letravail sur une ligne de la matrice. Malheureusement, cette granularité est trop fine et ne permet pas d’obtenirde bonnes performances à cause du surcoût de l’ordonnanceur de tâches.Dans cette thèse, nous étudions le problème de la granularité pour la parallélisation par graphe detâches. Nous proposons d’augmenter la granularité des tâches de calcul en créant des agrégats de tâchesqui deviendront eux-mêmes des tâches. L’ensemble de ces agrégats et des nouvelles dépendances entre lesagrégats forme un graphe de granularité plus grossière. Ce graphe est ensuite utilisé par un ordonnanceur detâches pour obtenir de meilleurs résultats. Nous utilisons comme exemple la factorisation LU incomplète d’unematrice creuse et nous montrons les améliorations apportées par cette méthode. Puis, dans un second temps,nous nous concentrons sur les machines à architecture NUMA. Dans le cas de l’utilisation d’algorithmeslimités par la bande passante mémoire, il est intéressant de réduire les effets NUMA liés à cette architectureen plaçant soi-même les données. Nous montrons comment prendre en compte ces effets dans un intergiciel àbase de tâches pour ainsi améliorer les performances d’un programme parallèle.