ProHMPT

Workpackages

Funding

Funded by French National Agency for Research

Project ProHMPT is funded by the French National Agency for Research under the ANR-08-COSI-013 grant.

Contact

For any questions regarding Project ProHMPT, please contact Olivier Aumage.

Summary

Theme 1. - Applications

Le thème Applications est le point de départ et le moteur du projet. Il regroupe les activités d'expression et de synthèse des besoins quantitatifs (puissance de calcul) et qualitatifs (API, fonctionnalités, analyse), les activités de mise en œuvre et validation des résultats issus des autres thèmes, et les activités de retour sur expérience vers les autres thèmes.

Task 1. - Nanosimulation Ab Initio

Participants : CEA/INAC

'objectif de cette tâche est d'utiliser les cartes graphiques pour accélérer les calculs de structure électronique dans le formalisme de Kohn-Sham. Tout le travail de cette tâche sera distribuée en licence GPL dans le logiciel ABNIT (http://www.abinit.org/). Ceci permettra à de nombreux laboratoires, de chimie ou de physique, en s'équipant de petits serveurs de calcul à base de cartes graphiques, de pouvoir bénéficier d'une puissance de calcul de deux ordres de grandeur plus faible (quelques TFlops) que les grands centres. Ils pourront ainsi réaliser des études réalistes. Les études les plus importantes pourront aussi s'exécuter sur les grands centres de calcul qui pourraient, à court terme, s'équiper de processeurs graphiques.

Task 2. - Aerodynamics

Participants : CEA/CESTA

L’objectif du CEA/CESTA est d’anticiper les évolutions futures de ces codes de simulation numérique parallèles en fonction des nouvelles architectures matérielles. Par l’intermédiaire d’un code représentatif (KISS3D) qui utilise une programmation hybride MPI + OpenMP et nécessitant des volumes de calcul importants, on pourra valider et tester les différentes approches préconisées dans l’ANR afin d’exploiter efficacement ces nouvelles architectures. De plus, les codes du CEA/CESTA ont en commun l’utilisation intensive de routines de calcul telles que les BLAS (à travers des solveurs linéaires ou non, issus de développements internes ou de bibliothèques externes : PETSc, PaStiX, Scalapack, etc.), des FFT (Fast Fourier Transform), etc. et l’efficacité de ces « cœurs de calcul » est à la base d’un code performant.

Theme 2. - Extracting Parallelism

Le thème Extraction du parallélisme regroupe les activités de de recherche et délimitation des travaux parallélisables au sein des applications, et le cas échéant des bibliothèques numériques. Ce thème combine dans un objectif commun de production de tâches logicielles délocalisables sur des cœurs auxiliaires (SPU, GPU) des travaux sur l'extraction active de parallélisme par compilation et analyse statique du code (tâche no 3 du projet), et des travaux sur l'extraction passive de parallélisme, au moyen de langages et directives adéquats.

Task 3. - Compilation, static analysis

Participants : UVSQ/PRiSM, CAPS Entreprise

L'intégration entre le code applicatif et le support runtime passe usuellement par des bibliothèques pour le parallélisme (comme openMP). L'utilisateur spécifie alors un certain type de parallélisme que le runtime se charge de mettre en oeuvre. Le compilateur peut également contribuer, par l'analyse statique du code, à exhiber les propriétés du code pertinentes pour guider ce support runtime, que l'utilisateur ne souhaite pas exprimer. L'affinité entre threads, représentant le fait qu'ils accèdent à des structures partagées, peut notamment être automatiquement mise à jour par le compilateur lorsque les codes sont réguliers.

La tâche 3 a pour objectif la définition de méthodes de compilation pour des codes applicatifs OpenMP/DPIL (CAPS) afin :

Task 4. - Languages

Participants : CAPS Entreprise, INRIA Runtime

L’une des propriétés recherchées par ces travaux est de favoriser la portabilité des codes, en termes de performance, sur une large gamme de configuration de nœuds de calcul hétérogènes. La suite HMPP™ de CAPS entreprise servira de support pour la mise en œuvre de ce sous-programme. En particulier, les travaux de génération de code adaptatif de ce sous-programme s’appuieront sur la technologie DPIL (Data Parallel Intermedidate Language) de CAPS entreprise. Ce langage permet d’exprimer des notions de distribution de données et de calcul SIMD.

Theme 3. - Software Support

Le thème Support logiciel regroupe l'ensemble des travaux sur les éléments logiciels constituant l'environnement d'accompagnement de l'application durant son exécution. Ce thème est structuré en trois tâches. La tâche Support exécutif a pour responsabilité la mise en œuvre effective du parallélisme extrait par les outils du thème 2 ou généré par les bibliothèques numériques et la prise en charge des problématiques associées de gestion mémoire sur des cœurs hétérogènes. La tâche Bibliothèques a pour responsabilité la mise en œuvre des opérations numériques applicatives avec génération adaptative de parallélisme de façon à maximiser la latitude de l'ordonnanceur de thread et du support exécutif. Enfin, la tâche Ordonnancement a pour responsabilité les aspects décisionnels, la coordination et le placement des travaux parallèles sur les ressources de calcul disponibles.

Task 5. - Runtime Systems

Participants : INRIA Runtime, INRIA Mescal, Bull SAS

Afin d’assurer la portabilité des performances, la bibliothèque d’ordonnancement des threads et des tâches de calcul que nous proposons de concevoir devrait s’appuyer sur la modélisation structurée de la machine hétérogène, la représentation abstraite de la structure parallèle de l’application et la gestion du placement à la demande des différentes zones de données.

Task 6. - Libraries

Participants : UVSQ/PRiSM, CEA INAC

L'objectif des bibliothèques hautes performances est d'offrir un code réutilisable et atteignant de bonnes performances pour tous les jeux d'entrée. Traditionnellement, cela passe notamment par la génération d'un code composé de multiples versions, dépendant des valeurs des entrées, des alignements des données, ou de critères plus élaborés (comme l'entropie du jeu d'entrée pour des bibliothèques de tri par exemple). L'objectif de cette tâche est d'explorer les interactions entre bibliothèques multithreadées et environnement runtime. Comme pour la tâche 3, les bibliothèques peuvent communiquer au runtime certaines métriques (à définir) lui permettant de prendre les bonnes décisions afin d'équilibrer la charge de calcul ou de tirer parti de partage de données entre threads. Pour les bibliothèques, l'interaction peut aller plus loin et le versioning peut dépendre justement des choix dynamiques réalisés par le runtime.

Task 7. - Scheduling

Participants : CAPS entreprise, INRIA Runtime

L’exploitation des architectures hétérogènes pose de nombreux problèmes de gestion des ressources de calcul à l’exécution. En effet, plusieurs applications ou parties d’une même application doivent se partager les unités de calcul disponibles (cœur de calcul généraux ou accélérateurs matériels). L’efficacité globale dépend de la manière d’attribuer les ressources en fonction du contexte d’exécution (taille du problème, disponibilité, localisation des données, configuration du nœud de calcul, etc.)

Cette tâche a pour but la conception et l’analyse des techniques d’allocation de ressources (mémoire et calcul) aux différents threads/calcul. Il s’agit de répartir les threads entre les unités de calculs homogènes et hétérogènes en maximisant parallélisme et localité mémoire. La nouveauté des allocations proposées est qu’elles devront prendre en compte les arbitrages impliqués par la disponibilité de mises en œuvre variées d’un même calcul (dans la tâche 3 il est prévu de produire des implémentations multiples d’un même calcul). Par exemple, un calcul pourra être mis en œuvre en parallèle sur de cœurs de calcul généraux ou bien sur GPU, cette dernière version nécessitant des transferts de données entre la mémoire principale et la mémoire de la carte graphique. De plus, l’allocation de calcul sur un GPU doit respecter la contrainte de volume mémoire de la carte GPU. L’objectif des stratégies proposées sera de permettre une adaptabilité des applications sur des configurations (nombre de cœurs généraux, cartes GPU etc.) de nœuds de calcul divers sans recompilation de l’application.

Theme 4. - Analysis

Le thème Analyse est transversal aux autres thèmes et regroupe les activités de collecte, de traitement, de visualisation et d'interprétation des informations sur le comportement des éléments logiciels entrant en jeu lors de l'exécution d'une session applicative, dans un but de compréhension et de mise au point post-mortem.

Task 8. - Monitoring

Participants : INRIA Mescal, INRIA Runtime

Le projet ProHMPT propose d'étudier les problèmes d'observation et d'analyse de l'exécution d'applications de calcul intensif sur des architectures multicœurs hétérogènes. L'approche que nous préconisons pour l'observation repose classiquement sur des mécanismes de traçage des évènements liés à l'exécution de ces applications. Une des principales difficultés est d'être capable d'appréhender le fait que l'architecture est constituée d'un nombre de cœurs important et donc générateurs d'une grande quantité d'évènements. Nous porterons une attention tout particulière pour veiller à ce que ce mécanisme de traçage soit faiblement intrusif et ne modifie en rien le comportement de l'application.

Le traçage concernera les évènements générés au niveau de l'application, des bibliothèques applicatives, du système ou bien même encore de l'architecture. Le dispositif de traçage s'appuiera sur une approche multi-niveaux et bien évidemment adaptée au caractère hétérogène de l'architecture.

La phase d'analyse du comportement consistera à exploiter le contenu des traces générées et à restituer à l'utilisateur une vision synthétique et interprétable des performances. L'exploitation des traces exige le développement ou l'adaptation d'outils de visualisation. Une des principales difficultés provient une fois encore de l'hétérogénéité et du grand nombre de cœurs. Il faudra donc très certainement fournir aux utilisateurs des outils de sélection de vue sur certains aspects particuliers de l'architecture ou bien même de l'application.