Analyse statique et adaptation dynamique du parallélisme
Auteur / Autrice : | Pierre Huchant |
Direction : | Denis Barthou |
Type : | Projet de thèse |
Discipline(s) : | Informatique |
Date : | Soutenance en 2019 |
Etablissement(s) : | Bordeaux |
Ecole(s) doctorale(s) : | École doctorale Mathématiques et informatique (Talence, Gironde ; 1991-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire bordelais de recherche en informatique |
Jury : | Président / Présidente : Martin Quinson |
Examinateurs / Examinatrices : Denis Barthou, Marie Christine Counilh | |
Rapporteur / Rapporteuse : Cédric Bastoul |
Mots clés
Résumé
Les applications de calcul scientifique ont besoin de ressources de calcul de plus en plus importantes et beacoup de grand challenges scientifiques exigent des capacités de calcul Exascale (10 puissance 18 calculs par seconde) pour être relevés. L'un des principaux obstacles pour atteindre l'Exascale est la difficulté de programmer les architectures parallèles actuelles. De nouvelles méthodes automatiques sont nécessaires pour combler l'écart entre les développeurs d'applications scientifiques et les experts en calcul haute performance. Par ailleurs, les applications scientifiques devenant de plus en plus complexes et étant supposées s'exécuter à très large échelle, de nouveaux outils sont nécessaires pour aider les développeurs lors de la phase de débogage du développement des applications. Cette thèse explore la combinaison de méthodes statiques et dynamiques pour faciliter la programmation des applications de calcul haute performance. Deux enjeux majeurs sont étudiés : la complexité de programmation des architectures hétérogènes et la prévention des interblocages dans les programmes parallèles. La première partie de cette thèse s'intéresse à l'adaptation automatique des tâches de calcul aux architectures hétérogènes. Plus précisément, nous proposons une nouvelle méthode pour faciliter la programmation des architectures hétérogènes composées de plusieurs périphériques de calcul (CPUs et GPUs). Le programmeur exprime le parallélisme de son application sous forme d'une séquence de tâches de calcul sans se soucier des problèmatiques liées à l'architecture sur laquelle son code sera exécuté. Ensuite notre méthode partitionne automatiquement chaque tâche en sous-tâches et chaque périphérique de calcul exécute une des sous-tâches afin de tirer pleinement avantage de toutes les ressources de calcul de la machine. La deuxième partie de cette thèse porte sur la détection et la prévention automatique des interblocages dans les programmes parallèles. Nous proposons un nouvelle analyse statique permettant de détecter précisement les chemins d'exécution menant à des interblocages dans les programmes parallèles. Cette analyse statique est ensuite combinée à une instrumentation dynamique du code afin de prévenir les interblocages à l'exécution.