ProHMPT

Documents/Project description (french)

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.

Identification

Acronyme/Acronym ProHMPT
Titre du projet/Proposal title
(en français/ in French)
Programmation des technologies multicœurs hétérogènes
Titre du projet/Proposal title
(en anglais/ in English)
Programming Heterogeneous Multicore Processor Technologies

1. Programme scientifique et technique/Description du projet.
Technical and scientific description of the activities

1.1  Problème posé. Rationale.

La nature des architectures de calcul connaît actuellement une transformation profonde et un regain de créativité qui tranche radicalement et conclut — tout au moins pour un avenir visible — la longue période de stabilité et d'homogénéité que nous avons connue. Le multiprocessing au sein d'un nœud de calcul se généralise, se densifie et se diversifie. L'action combinée de ces trois évolutions matérialise la spécificité et l'importance de la rupture actuelle, et appelle à brève échéance une nécessaire ré-évaluation des méthodes de développement applicatif, la proposition de nouveaux modèles de programmation, et plus généralement une réponse ambitieuse à la hauteur du potentiel de puissance de calcul que renferment les nouvelles technologies multicœur hétérogènes.

Le projet ProHMPT s'inscrit dans cet effort de la communauté. Il entend en être un acteur majeur, grâce à une collaboration soutenue avec le CEA INAC (Grenoble), s'appuyant sur la forte dynamique que génèrent les nanotechnologies. Les besoins extrêmes, et concrets — « avec [le logiciel] AbInit il faut environ 10 000 heures de cpu pour une picoseconde de dynamique moléculaire à 100 atomes » selon la proposition de programme Nanosimulation du CEA — en termes de puissance de calcul que demandent les nanosimulations, à l'origine des nombreux champs d'applications finales des nanotechnologies, imposent de dépasser la programmation parallèle classique et explorer l'exploitation des multicœurs hétérogènes tels que le Cell d'IBM et les processeurs spécialisés tels que les GPU.

Ces architectures posent cependant de fortes et complexes contraintes au programmeur et les outils existants pour les programmer sont encore très limités. ProHMPT propose donc de réunir l'expertise d'équipes françaises aux niveaux stratégiques que sont la compilation, les supports exécutifs et la maîtrise des cœurs d'applications scientifiques, ainsi que l'expérience de spécialistes des nanosimulations, autour de l'élaboration de nouvelles approches, méthodologies et outils offrant l'abstraction et la portabilité des performances attendues. La portée générale, au delà de la nanosimulation, des résultats obtenus sera validée en collaboration avec des partenaires du CEA CESTA au Barp, fortement intéressés par l'intégration et la valorisation des travaux du projet ProHMPT sur un code de simulation aérodynamique en milieu raréfié. La société BULL apportera son expertise au niveau du matériel dans le domaine du HPC, ainsi que sa capacité de diffusion commerciale des résultats du projet.


 

1.2  Contexte et enjeux du projet. Background, state of the art, issues and hypothesis.

 « Les nanotechnologies offrent des perspectives très intéressantes pour traduire les résultats de la recherche fondamentale en innovations réussies. » Ainsi résume Janez Potocnik — le Commissaire européen pour la Science et la Recherche — l'ampleur des enjeux économiques et industriels des nanotechnologies en avant-propos de Nanosciences et nanotechnologies: Un plan d'action, le plan stratégique de développement du domaine de la Commission Européenne pour la période 2005–2009. Le même raisonnement conduit les États-Unis à octroyer aux nanotechnologies un budget annuel de 1,5 Milliards de Dollars (en croissance de 5% par an), par l'intermédiaire notamment de la National Nanotechnology Initiative. Au-delà, cependant, du fort potentiel de croissance et de développement, les enjeux sociétaux — positifs mais aussi négatifs — s'annoncent d'ores et déjà considérables, que ce soit à court, à moyen ou à long terme, et ce sur un large spectre : composants électroniques, énergie, nouveaux matériaux, santé/biologie, notamment.

La clé, le facteur fondamental conditionnant le développement et la valorisation des nanotechnologies réside dans la connaissance. La compréhension de l'infiniment petit, de ses propriétés, des interactions entre ses constituants, de l'impact de caractéristiques nanoscopiques sur les propriétés, les comportements macroscopiques, les conséquences sanitaires et environnementales, est en effet encore très parcellaire. Du progrès de cette connaissance dépend donc le progrès du domaine des nanotechnologies et de ses débouchés dans leur ensemble.

La nature même de l'infiniment petit rend particulièrement difficile, et coûteuse, l'expérimentation directe. La simulation informatique est de fait la source principale de connaissance du nanomonde dans les étapes prospectives. Elle revêt en outre une grande importance dans les étapes de validation. La nanosimulation, comme on l'appelle, est donc au cœur des enjeux des nanotechnologies. Elle est aussi, par elle même, un vrai challenge.

Le programme « Nanosimulation » en cours de lancement, et réunissant les CEA de Grenoble et Saclay indique clairement la prise en compte de cet état de fait : la simulation au niveau atomique devient incontournable pour la modélisation et la prédiction des structures et des propriétés des nano-objets dans le cadre des nanosciences et des nanotechnologies. Elle symbolise également la volonté du CEA d'en être un acteur majeur : afin de soutenir son programme en nanosciences, le CEA souhaite en effet monter un projet de nanosimulation pour développer et diffuser les outils de simulation atomistique car ces logiciels sont fort demandeurs de calcul intensif.

Et pour cause, afin de donner des résultats exploitables en analyse du nanoscopique, la nanosimulation doit être précise, à l'échelle de l'atome. Une telle précision est forte consommatrice de puissance de calcul, même pour quelques unités à quelques dizaines d'atomes (« avec [le logiciel] AbInit il faut environ 10 000 heures de CPU pour une picoseconde de dynamique moléculaire à 100 atomes » selon la proposition de programme Nanosimulation du CEA). Lorsqu'il s'agit en plus d'analyser des comportements à des niveaux plus macroscopiques, la simulation purement à l'échelle atomique devient prohibitive et il est alors nécessaire dans ce cas d'adopter des approches multi-échelles. La nanosimulation est donc extrêmement dépendante de — et réactive à — tout progrès dans le calcul intensif et constitue ainsi un domaine partenaire précieux et naturellement impliqué pour le développement et le transfert rapide de technologies HPC.

Or, le domaine du calcul intensif est actuellement le théâtre d'une mutation profonde. La loi de Moore a permis pendant de nombreuses années de prédire et interpréter l'évolution de la performance des processeurs. Dans le milieu des années 2000, les évolutions prévues par Moore se sont éloignées sensiblement de la réalité observée au niveau des technologies. Un des principaux obstacles a été celui de la dissipation thermique qui a bloqué l'augmentation de la fréquence d'horloge des processeurs. C'est cet aspect qui a principalement motivé les architectes et constructeurs de processeurs à s'orienter vers le concept de processeur multicœurs. Plus précisément, il s'agit de faire cohabiter sur un même composant plusieurs unités d'exécution (des cœurs) avec une fréquence d'horloge modérée. Les processeurs généralistes des constructeurs (Intel, AMD, IBM, Sun) sont aujourd'hui tous devenus multicœurs. Tous les ordinateurs de bureau et portables ont des processeurs multicœurs et sont gérés par les systèmes d'exploitation en mode SMP. La notion de processeur multicœurs intègre également les processeurs des cartes graphiques, désormais. Les principaux constructeurs (NVIDIA, ATI, ...) ont ainsi lancé de nouvelles générations de cartes graphiques affichant une impressionnante capacité en calcul.

Avec l'arrivée des dernières générations de GPU dont la puissance crête annoncée est de l'ordre de 500 Gflops, il devient très attirant d'employer ces processeurs GPU pour réaliser des calculs généralistes (GPGPU). Ces GPU sont en effet particulièrement bien adaptés pour l'exécution d'applications régulières d'où peut être extrait un parallélisme de données. Les cartes GeForce 8800 de la société NVIDIA sont bien représentatives de cette nouvelle tendance. Les cartes NVIDIA comprennent ainsi 128 cœurs répartis en 8 blocs de 16 cœurs cadencés par une horloge à 1,35 GHz. À l'intérieur d'un groupe, le mode d'exécution est donc synchrone. La société NVIDIA consciente du potentiel de ses processeurs graphiques sur le marché du calcul généraliste fournit un kit de développement permettant de programmer le GPU pour réaliser du calcul numérique. Plusieurs équipes de recherche ont déjà utilisé ces GPU pour de la simulation sismique ou bien encore de la bioinformatique. D'autres domaines du calcul intensif restent à explorer comme par exemple celui des nanosimulations. Des nouvelles approches hybrides devront être proposées au niveau algorithmique et exécutifs pour intégrer ces GPU dans des architectures de type grappes de machines multiprocesseurs.

Dans ce contexte, le projet ProHMPT propose de s'appuyer sur la dynamique soutenue qui anime la communauté des nanotechnologies, et la volonté forte de celle-ci de collaborer avec le domaine du calcul intensif, afin de concevoir, mettre en œuvre, évaluer et diffuser les outils adéquats pour exploiter les architectures émergentes de façon efficace, pérenne, et économiquement supportable. Une évaluation est déjà en cours au CEA sur les performances des cartes graphiques dans le cadre d'un code de calcul de structure électronique, augurant d'une vraie synergie au sein du projet. Cette synergie est cruciale car l'enjeu est de taille. La communauté nanosimulation européenne et en particulier sa composante française grâce à une forte implication fédératrice du CEA ont acquis une avance technologique substantielle sur la simulation ab initio au travers de logiciels internationalement reconnus tels que ABINIT (université de Louvain la Neuve, Belgique), SIESTA (université de Madrid, Espagne), Quantum Espresso (centre national de simulation Democritos, Trieste, Italie) ou encore VASP (université de Vienne, Autriche). Ces codes de calcul de structures électroniques sont utilisées en physique pour calculer la structure et les propriétés des matériaux et en chimie pour la structure des molécules. Ces logiciels dits ab initio sont sans paramètre ajustable, ce qui leur permet de pouvoir prédire correctement la physique ou la chimie des systèmes étudiés. Ils sont développés par plusieurs laboratoires et souvent sous licence GPL. C'est le cas pour différents laboratoires du CEA qui ont choisi de développer au sein du logiciel international ABINIT (http://www.abinit.org/) permettant une plus grande diffusion de leur travail. L'Europe est bien placée dans le développement de ces codes, qui sont devenus incontournables en nanosciences. Cependant les calculs sont encore très lourds numériquement et les pays tels que les États-Unis ou le Japon bénéficient d’une puissance de calcul considérable leur permettant d'être en tête de la recherche. L'exploitation des GPU est donc indispensable pour démocratiser l'usage de ces codes car cela permet un fort accroissement de la puissance de calcul immédiatement disponible, et un abaissement général du coût de la puissance de calcul. Utiliser conjointement des cartes graphiques et des processeurs généralistes en parallèle rendra de fait accessible la simulation de systèmes plus grands dans des environnements complexes étudiés en nanosciences et en biologie. Il s'agit donc pour le projet ProHMPT de donner les moyens, d'apporter les outils logiciels, de définir les techniques informatiques nécessaires à cette communauté pour établir et renforcer sa position sur le théâtre international fortement concurrentiel des nanotechnologies.


 

1.3  Objectifs et caractère ambitieux/novateur du projet. Specific aims of the proposal, highlighting the originality and the novelty

Le domaine du calcul scientifique est par nature toujours porté à regarder vers l'avenir et imaginer, avec avidité et langueur, tout le bénéfice et les nombreuses perspectives qu'apporterait le prochain facteur 10 de puissance disponible. Aussi, la situation actuelle où 500 Gflops sommeillent, inutilisés, dans le GPU de chaque nœud de calcul est pour le moins inédite et en apparence incongrue. En réalité l'accès à cette réserve de puissance est complexe et coûteux. L'optimisation de code pour les GPU demande un effort conséquent, la mise en œuvre de techniques peu intuitives, la prise en compte de contraintes lourdes et la production d'un code final peu lisible, et donc de pérennité incertaine, voire d'emblée compromise. Or, les constructeurs de matériel de calcul prévoient déjà un niveau d’intégration et de complexité supplémentaires avec les futurs Larrabee d’Intel (processeur SIMD au jeu d'instruction compatible x86) et Fusion d’AMD (intégration de 2 cœurs généralistes + 1 GPU) à l’horizon 2009, c’est-à-dire demain.

L'originalité du projet ProHMPT est donc de réunir et coordonner l'expertise de groupes de recherche couvrant l'intégralité de la chaîne de développement d'applications de calcul intensif sur le problème ciblé de la programmation portable des accélérateurs et multicœurs hétérogènes. La prise en compte des contraintes et spécificités des ces nouveaux matériels impacte en effet tous les acteurs.

Les langages, compilateurs et analyseurs doivent permettre d'exprimer et extraire les tâches élémentaires applicatives avec une annotation sémantique suffisamment riche pour autoriser un pilotage précis de l'application par le code d'ordonnancement dynamique, en une projection efficace des tâches sur l'espace défini par les ressources et les contraintes d'utilisation du matériel. Une analyse précise des dépendances, et le cas échéant une restructuration du code, sont en effet requis à la compilation pour extraire un parallélisme suffisamment fin pouvant éventuellement être délégué à des cœurs spécialisé. La phase de compilation devra en outre assurer la production d'implémentations multiples des tâches pouvant s'exécuter sur les différentes ressources de calcul de l'architecture cible.

Au niveau des langages, l'objectif est double et vise à la fois la programmation et l'exécution. Il est nécessaire de définir un jeu de directives de programmation à destination des cœurs homogènes et hétérogènes afin de décrire et extraire la structure parallèle sous-jacente de l'application. Cette structure sera corroborée et précisée à l'exécution par des relevés d'instrumentation à l'aide de code inséré à la compilation ou dans des bibliothèques. Elle servira de guide au code d'ordonnancement qui arbitrera l'exécution en fonction de la disponibilité des ressources de calcul, de la granularité ou subdivision possible des tâches, de la disponibilité des données ou de la nécessité de leur transfert préalable vers la mémoire associée à un cœur.

Les supports exécutifs d'une part, en donnant l'accès aux ressources, les bibliothèques numériques et les applications d'autre part, en offrant une marge suffisante de flexibilité, doivent donner les moyens d'un tel pilotage avec le minimum de surcoût de fonctionnement. Le code de support exécutif se chargera de l'acquisition et de la modélisation des ressources de calcul et de mémoire en lien avec le matériel, ainsi que de la prise en charge de leur accès transparent.

Enfin, une remontée d'information précise et permanente sur le comportement de la pile logicielle durant les sessions de calcul doit être instaurée afin de faciliter la compréhension d'interactions naturellement complexes entre les différents constituant logiciels mis en œuvre, détecter et identifier un éventuel dysfonctionnement et plus généralement guider le niveau applicatif dans la phase de mise au point. Ce dernier aspect est à lui seul un vrai défi sur le type d'architecture, du fait du nombre et de la diversité des cœurs mis en jeu.

Un effort coordonné et ciblé de tous les acteurs concernés est donc à l'évidence le plus sûr moyen, si ce n'est l'unique, de progresser rapidement sur la programmation des architectures émergentes. C'est là toute l'ambition du projet ProHMPT que de mettre tous ces acteurs autour d'une table et d'instaurer un vrai dialogue impliquant chacun depuis le matériel jusqu'à l'application.


 

1.4  Positionnement du projet. Progress beyond the state of the art and relevance to the call for proposals

Le projet ProHMPT s'inscrit à la fois dans un contexte national, européen et international riche et dans la lignée d'une filiation féconde. Il se positionne tout d'abord dans la continuité de trois projets ANR issus de l'appel Calcul intensif 2005 : PARA, Numasis et LN3M. Le projet ANR PARA, en précurseur, a ouvert la voie de la programmation et de l'exploitation des processeurs multicœurs et constitué les fondations de ProHMPT. Le projet ANR Numasis a réuni la communauté du calcul intensif sur la problématique de l'exploitation des machines hiérarchiques, de l'intégration des aspects de localité mémoire et de la prise en compte des relations tâches/données dans les codes d'ordonnancement. Les techniques developpées au sein de Numasis serviront de point de départ pour l'ordonnancement et la délocalisation des tâches, ainsi que pour la gestion de la disponibilité des données sur les mémoires spécialisées des GPU et SPU dans ProHMPT. Le projet ANR LN3M auquel le CEA INAC contribue, a comme ambition d'améliorer chaque composante de l'approche multi-échelle couplant les méthodes ab initio aux méthodes de Monte Carlo cinétique. Cette approche multi-échelle est utilisée pour l'étude de la structure, de la croissance et de l'évolution des matériaux. Elle est très gourmande en temps de calcul car un nombre considérable de configurations atomiques doivent être explorées pour permettre d'avoir une bonne statistique du système et donc décrire correctement son évolution. Aussi, chaque gain en performance est déterminant pour la mise au point de nouveaux matériaux et ProHMPT entend jouer un rôle essentiel à ce niveau. À ce titre, ProHMPT aurait pu faire l'objet d'une soumission sur le programme Nanosciences, nanotechnologies/PNANO de l'ANR. La soumission sur le programme Conception et simulation/COSINUS témoigne cependant mieux de la portée générale des résultats attendus de ProHMPT en termes de technologie de programmation et de capacité de simulation et l'axe 4 de l'appel COSINUS cadre de façon remarquable avec les ambitions du projet. L'implication de plusieurs partenaires de la région grenobloise, la thématique du projet et l'importance de ses enjeux seront en outre des atouts déterminant pour une éventuelle — et stimulante — labellisation du projet ProHMPT au niveau du pôle de compétitivité MINALOGIC (http://www.minalogic.org/).

Au niveau européen, ProHMPT est en phase avec la politique mise en place par la Commission Européenne dans son plan d'action pour les nanotechnologies pour la période 2005-2009, qui donne la priorité à l'acquisition de connaissances sur les nanotechnologies, pour laquelle la simulation est l'un des outils prépondérant. Dans le cadre du projet européen BigDFT (2004-2007, FP6/NEST), le CEA-Grenoble a développé un code de calcul de structure électronique à base de fonctions ondelettes. Ce code, intégré au sein du logiciel ABINIT (http://www.abinit.org/), permet d'avoir un maillage adaptatif aux endroits de l'espace où une résolution plus fine est nécessaire. De plus, l'utilisation des ondelettes ouvre des perspectives originales pour simuler des systèmes ouverts dans des environnement complexes. Ce code utilise des opérations d'algèbre linéaire notamment la multiplication matrice-matrice, la transformée de Fourier rapide et de courtes convolutions. Ce dernier point est en cours de test au laboratoire et a montré qu'un facteur 50 d'accélération pouvait être envisagé grâce aux cartes graphiques. Ce code a de plus montré une efficacité de 90% sur des machines massivement parallèles. En combinant le parallèle et les cartes graphiques, ce code permettra le calcul de plus grands systèmes de façon réaliste. De plus, de nombreux laboratoires, en se dotant de serveurs à moindre coût, pourront bénéficier de ces avancées et simuler de façon plus rapide et plus fiable leurs modèles étudiés. Actuellement, il n'y a que peu de tentatives d'utilisation des cartes graphiques pour la résolution de l'équation de Schrödinger. Grâce à nos travaux uniques fondés sur les ondelettes, la France permettra de se doter d'un code de calcul de structure électronique performant. D'autant qu'au niveau international, plusieurs initiatives sont engagées pour porter des codes de dynamique moléculaire (évolution d'un système en fonction du temps) sur les cartes graphiques, qui donnent déjà d'excellents résultats avec des potentiels empiriques. Quelques exemples similaires sur des codes de calcul de structures électroniques émergent également (groupe Q-Chem, Pittsburg, USA), avec un facteur d'accélération de 5 dans ce dernier cas.


 

1.5  Description des travaux : programme scientifique et technique. Detailed description of the work. For each specific aim: a proposed workplan should be described (including preliminary data, work packages and deliverables

 

Le programme du projet ProHMPT est réparti en quatre thèmes scientifiques 1. Applications, 2. Extraction du parallélisme, 3. Supports logiciels, 4. Analyse, et un thème (numéro 0) non scientifique regroupant les activités de gestion, au sens large.

 

 

 

Thème 0. Activités de gestion

 

Tâche 0. Coordination

 

La tâche 0 regroupe l'ensemble des activités transversales de coordination du projet. Elle comprend un volet administratif et financier, un volet animation et un volet communication.

Le volet administratif et financier comprend d'une part une activité de suivi du projet sur l'ensemble de sa durée, afin d'assurer une progression des travaux stable, conforme au plan de travail et de préserver un statut sain du projet 1) sur le plan financier, 2) en regard des engagements pris et 3) vis-à-vis des dispositions réglementaires et légales encadrant le projet. D'autre part, le volet administratif comprend tous les travaux rédactionnels de production des documents officiels dans le cadre du projet : rédaction de l'accord de consortium, synthèse des rapports semestriels, supervision des livrables, synthèse du rapport final.

Le volet animation comprend la mise en place d’un comité de pilotage du consortium (steering committee) réunissant les responsables de tâches, l'organisation et la tenue de réunions de travail régulières du consortium, au rythme d'une réunion par trimestre. Il comprend également l'organisation de réunions et audioconférences complémentaires entre tout ou partie des partenaires du consortium, sur des thèmes plus ciblés ou des points techniques particuliers, en fonction des besoins exprimés et du déroulement du projet.

Le volet communication comprend les différentes activités destinées à faire connaître les travaux du projet et à en assurer la diffusion des résultats. Il comprend la mise en place et la maintenance d'un site web, avec une zone publique destinée à la diffusion des résultats, et une zone privée réservée aux échanges entre les partenaires du consortium. Il comprend également la participation aux colloques et séminaires organisés par l'ANR et/ou l'unité support, la représentation du projet en conférences internationales, ainsi que la production de media (posters, par exemple) destinés à la communication des travaux du projet lors de ces colloques, séminaires et conférences.

 

Sous-tâches

 

Thème 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.

 

Tâche 1. Nanosimulation Ab Initio

Participants : CEA/INAC

 

L'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.

 

Sous-tâche 1.1 (T0+18) Portage de composantes essentielles d'un code en ondelettes

La première tâche est de porter les composantes nécessaires pour appliquer l'équation de Schrödinger en ondelettes. Ce sera notamment :

 

Afin de minimiser les transferts de mémoire, il est prévu, dans un premier temps de ne calculer sur la carte graphique que l'application de l'hamiltonien. Les fonctions d'onde devraient rester en mémoire sur la carte graphique. Les données des fonctions d'onde sont compressées en ondelettes sur un maillage adaptatif. Pour l'application de l'hamiltonien, ces données sont décompressés sur le maillage le plus fin. Cette partie peut aussi être faite sur la carte graphique minimisant par un facteur environ de huit la taille des données à transférer. La tâche 5 permettra d'aller plus finement dans ce travail. Cette première étape réalisée, nous aurons alors les composantes les plus basses d'un code ab initio s'exécutant sur une carte graphique. Ces composantes, notamment la transformée en ondelettes, pourront être intégrées dans les bibliothèques malléables de la tâche 6.

 

Sous-tâche 1.2 (T0+24) Distribution grand public d'un code ab initio pouvant exploiter les cartes graphiques

Comme ces développements seront diffusés et utilisés par d'autres groupes via l'application ABINIT, un soin particulier sera apporté pour la portabilité du code. La tâche 4 de ce projet devrait donner les outils nécessaires pour cela. Il est prévu, notamment, d'utiliser les outils « autotools » pour permettre de sélectionner la possibilité d'utiliser ou non les cartes graphiques. Pour aller plus loin dans le portage d'autres opérations, la modularité d'ABINIT sera améliorée afin de pouvoir facilement porter d'autres composantes de calcul sur les cartes graphiques. La version d'ABINIT contenant cette possibilité constituera un délivrable de ce projet.

 

Sous-tâche 1.3 (T0+36) Prise en compte du parallèle et de l'architecture hybride

L'objectif de l'utilisation des ondelettes dans le code ABINIT est de pouvoir simuler de grands systèmes sur des architectures massivement parallèles. Ceci est possible grâce aux méthodes d'ordre N (dont le temps de calcul varie linéairement en fonction du nombre d'atomes et non pas cubiquement). Combiner les possibilités de la parallélisation avec des architectures hybrides va amener de nouveaux problèmes de dimensionnement et d'ordonnancement des tâches. Ces problèmes nous sont complètement inconnues car les codes ab initio utilisent toujours une machine homogène. La tâche 7 (ordonnancement) devrait fournir les outils adéquats avec ceux de la tâche 6 pour dimensionner les différentes opérations.

 

Risques liés à cette tâche

Nous avons déjà commencé à évaluer le bénéfice de l'utilisation des cartes graphiques. Les sous-tâches 1 et 2 nous semblent sans risque. Par contre, pouvoir exploiter la parallélisation et une architecture hybride sur un serveur de calcul hétérogène nous semble difficile à réaliser mais important pour la simulation de larges systèmes, biologiques par exemple. Une solution de repli sera l'utilisation de plusieurs processus ou « threads » sur les composantes les plus rapides.

 

 

Tâche 2. Aérodynamique

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.

 

Note : le CEA/CESTA étant partenaire associé au projet (donc sans demande de financement auprès de l’ANR), il n’est pas précisé de tâches élémentaires formelles dans la tâche 2.

 

Thème 2. Extraction du parallélisme

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.

 

Tâche 3. Compilation et analyse statique de code

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 :

·      D'adapter  le code séquentiel pour une exécution multithreadée : en effet, la bande passante mémoire par thread doit être compatible avec la bande passante disponible sur l'architecture afin de garantir la scalabilité des performances, et plus généralement un certain nombre d'informations doivent être mises à disposition du runtime pour permettre la migration de tâches et le regroupement des threads par affinité.

 

Ce travail se dérive en les tâches suivantes :

 

Sous-tâche 3.1 (T0+12)

Analyse des performances des codes applicatifs et restructuration visant a la mise en oeuvre de parallélisme ILP/vectoriel pour les codes de threads.

 

Sous-tâche 3.2 (T0+24)

Définition des interactions entre la phase de compilation et le runtime pour la mise en oeuvre de migration de tâches et le groupement des threads par affinité.

 

Sous-tâche 3.3 (T0+36)

Mise en oeuvre des interactions compilateur/runtime et mesures de performances sur les codes applicatifs.

 

Risques liés à cette tâche

L'amélioration des performances par rapport à un code initial peut être difficile à obtenir. Une approche par compilation itérative, couplée à une détection fine du parallélisme latent par analyse de dépendances permet dans tous les cas d'identifier les difficultés éventuelles d'optimisation. Pour les interactions avec le runtime, il est possible que les informations fournies par le compilateur soient difficilement exploitables efficacement (sans surcoût d'exécution notable) par le runtime. La solution de repli est alors d'identifier des cas particuliers où cette interaction est bénéfique.

 

 

Tâche 4. Langages

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.

 

Sous-tâche 4.1 (T0+6) Analyse des jeux de directives pour la programmation parallèle

L'objectif de cette tâche est, dans un premier temps, d’analyser l’implication du mélange entre les jeux de directives à destination des cœurs homogènes (OpenMP) et des cœurs hétérogènes (HMPP).

 

Sous-tâche 4.2 (T0+12) Proposition d’un jeux de directives intégrant les caractéristiques d’OpenMP et d’HMPP

Ce travail d'analyse permettra alors dans un deuxième temps de définir des extensions des jeux de directives permettant d’améliorer leur interopérabilité d’une part et un meilleur contrôle des supports exécutifs d’autre part. Il s’agit de permettre à l’utilisateur d’exprimer de manière simple qu’un calcul puisse s’exécuter sur des cœurs généralistes ou sur un accélérateur matériel sans requérir une double programmation. Il s’agit de trouver un compromis entre la généralité d’OpenMP et le jeu de directives pour accélérateurs matériels proposé par HMPP.

 

Sous-tâche 4.3 (T0+24) Techniques de traduction associées au jeu de directives proposé

Enfin, dans un troisième temps, le jeu de directives ainsi proposé devra être traduit en actions effectives sur le support exécutif et sur l'ordonnanceur, en coopération avec les tâches 5 et 7. Il s'agit en outre d'extraire la structure du parallélisme des applications qui serait capturée lors de l’exécution via l’utilisation des compilateurs ou des bibliothèques instrumentés. Par exemple, il s’agirait de mettre à disposition de l’ordonnanceur (tâche 7) quelques caractéristiques clés des tâches à exécuter sur les accélérateurs comme les données ainsi que leur mode d’accès, des indicateurs sur le déroulement des exécutions passées ou sur la nature du calcul demandé.

 

Risques liés à cette tâche

Le principal risque lié à cette tâche est d'être déconnecté des initiatives autour de l'évolution d'OpenMP. Pour pallier ce risque, CAPS entreprise sera engagée dans le suivi de l'évolution du standard OpenMP et si possible participera aux travaux du consortium OpenMP.

 

 

 

Thème 3. Support logiciel

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.

 

 

Tâche 5. Support exécutif

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.

 

Sous-tâche 5.1 (T0+18) Modélisation des ressources matérielles

En matière de modélisation des machines hétérogènes, nous proposons d’acquérir la topologie de la machine lors de la phase d’exécution via l’utilisation de benchmarks et/ou de fichiers de configuration. Il s’agirait en particulier de modéliser les capacités de calcul et d’interaction de chaque processeur ou accélérateur et de représenter les coûts et les modes d’accès à la mémoire de ceux-ci. En parallèle et de façon à appréhender les caractéristiques pertinentes à figurer dans cette modélisation sera conduite une étude de type état de l’art détaillée, s’appuyant sur l’expertise de la société BULL, sur les formes d’exploitation des GPUs en tant que processeur « vecteur » sur les nœuds de calcul et sur les environnements, compilateurs et langages de programmation adaptés à l’exploitation des GPUs.

 

Sous-tâche 5.2 (T0+12) Gestion de la disponibilité des données et cohérence mémoire

Afin de gérer la disponibilité des données, il semble nécessaire de mettre en œuvre une gestion transparente des différents transferts mémoire afin de résoudre l’épineux problème des dépendances de données entre les accélérateurs et la mémoire principale. Il s’agirait de mettre au point des mécanismes facilitant la coopération entre l’ordonnanceur et les accélérateurs sur la synchronisation nécessaire entre les opérations de chargement/déchargement mémoire et l’exécution proprement dite des tâches. En particulier, la cohérence des différentes mémoires n’étant pas assurée par le matériel, il semble important de pouvoir déterminer qu’une tâche dispose ou non de l’ensemble de ses données dans le mode d’accès adéquat (lecture et/ou écriture).

 

Sous-tâche 5.3 (T0+36) Support à l’ordonnancement

Il s’agirait de concevoir un ordonnanceur de base qui piloté par les stratégies élaborées en Tâche 7 organiserait l’exécution structurée des threads et des tâches et ce en concertation avec le gestionnaire de transferts mémoire. Il s’agirait en particulier de maximiser la réutilisation des buffers des accélérateurs, des caches des microprocesseurs en tenant compte du coût d’accès aux données.

 

Risques liés à cette tâche

L'acquisition dynamique de la topologie peut se révéler un problème trop complexe pour être traité de façon générale. Ce risque pourra être limité soit en utilisant des fichiers de configuration statiques, soit en restreignant l'analyse à une gamme de machines de référence. Le risque lié à la sous-tâche 5.2 réside principalement en l'introduction d'un surcoût de gestion des optimisations, il s'agira alors soit de simplifier les optimisations, soit de compléter l'ensemble des directives de compilation afin d'orienter l'optimiseur. Le risque principal lié au support d'ordonnancement est le fait qu'il soit délaissé par les partenaires au profit de solutions ad hoc. Il s'agira de proposer très rapidement puis régulièrement des prototypes peut-être simplifiés mais, à coup sûr, fonctionnels.

 

 

Tâche 6. Bibliothèques

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.

 

Sous-tâche 6.1 (T0+24)

Définition de bibliothèques de performance pour les codes applicatifs. Mesures de performance.

 

Sous-tâche 6.2 (T0+36)

Définition de bibliothèques malléables, coopérant avec le runtime. Mesure de performances.

 

Risques liés à cette tâche

Idem que pour la tâche 3.

 

 

Tâche 7. Ordonnancement

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.

 

Sous-tâche 7.1 (T0+24) Intégration de variantes de mise en œuvre d’un calcul dans le runtime

La première partie des travaux traitera de techniques d’optimisation de code dynamique capables d’adapter à l’exécution la configuration d’un calcul en fonction des ressources de calcul allouées. Il s’agit de générer/configurer à l’exécution le code d’une partie de l’application afin de l’adapter à l’unité de calcul ciblée en fonction des décisions d’allocation et du contexte d’exécution. Par exemple, il s’agira de permettre la génération de codes pour cœurs généralistes (parallélisme entre cœurs), pour GPU et pour le parallélisme de type SIMD (via les instructions SSE par exemple) chacun étant généralement plus ou moins performant suivant la taille des données ou/et les communications induites (par exemple dans le cas des GPU).

Par exemple, il serait très intéressant de pouvoir adapter dynamiquement la granularité des tâches, en particulier, il serait judicieux qu’à chaque tâche soit associée une technique permettant de la subdiviser en sous tâches ou, réciproquement, une technique permettant de regrouper en une seule tâche un ensemble cohérent de sous tâches.

 

Sous-tâche 7.2. (T0+36) Stratégies d’allocation de calcul pour configurations de nœud de calcul variées

La deuxième partie des travaux consistera à définir des schémas d’allocation de ressources, eux aussi adaptatifs. Il s’agit de mettre en œuvre de manière dynamique une boucle de rétroaction capable de corriger/améliorer l’allocation des ressources de calculs.

 

Risques liés à cette tâche

Les risques liés à cette tâche sont les suivants. Le premier est lié à définition de workload typique d'un noeud de calcul hétérogène. Le second est lié à la difficulté de faire cohabiter des matériels différents dans un même noeud de calcul. Finalement, le dernier risque est lié au manque de support système pour monitorer la charge des unités de calcul. Ces risques sont limités car les partenaires disposent d'une expertise complémentaire forte pour l'ensemble des couches logicielles dont la maîtrise est nécessaire pour mener à bien ces travaux.

 

 

 

Thème 4. Analyse

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.

 

Tâche 8. Observation

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.

 

Sous-tâche 8.1 (T0+18)

Définition et première version des mécanismes de traçage, évaluation de l'intrusion.

 

Sous-tâche 8.2 (T0+24)

Définition du dispositif de visualisation des traces et des critères performances.

 

Sous-tâche 8.3 (T0+36)

Implémentation des outils logiciels de visualisation des performances.

 

Risques liés à cette tâche

La visualisation de traces est difficile à cause du parallélisme massif et hétérogène de l'architecture. Il est complètement inconcevable d'imaginer de pouvoir tout visualiser sur un seul écran. Nous proposons de développer une visualisation fonctionnelle et hiérarchique des traces.


 

1.6 Résultats escomptés et Retombées attendues. Expected results and potential impact.

Le projet ProHMPT dans sa globalité escompte des résultats à deux niveaux. En premier lieu, l'effort coordonné des partenaires sur la compilation, les support exécutifs, les langages, les bibliothèques et algorithmes appliqués à l'exploitation des multicœurs hétérogènes et accélérateurs permettra de délivrer une bien plus grande puissance de calcul à machine équivalente, pour un coût de développement maîtrisé. En second lieu, et comme conséquence du premier résultat, la capacité accrue en nanosimulation ainsi obtenue aura par nature un impact général sur le développement et la valorisation des nanotechnologies : en particulier, les résultats de projets tels que LN3M (ANR-05-CIGC-003-01) ou le projet européen BigDFT (http://www-drfmc.cea.fr/sp2m/L_Sim/BigDFT/), et plus largement  en nanosciences, en sciences des matériaux et en biologie seront « mécaniquement » amplifiés par les résultats de ProHMPT, du fait d’un calcul plus rapide des diverses configurations atomiques. Un code portable sur différentes plateformes permettra aux nombreuses équipes utilisant ABINIT (plusieurs centaines dont une dizaine en France) d'être prêtes pour l'utilisation de ces nouvelles architectures. Dans le cadre du CEA/INAC, ce code sera appliqué au cas de la diffusion des défauts dans les semi-conducteurs, ainsi qu'à des molécules sur des surfaces. Ces problèmes interviennent dans de nombreux domaines dont notamment le photovoltaïque et la catalyse. Les retombées attendues pour le CEA/INAC sont donc considérables, que ce soit au niveau de ses possibilités de simulation et donc de transferts avals, de son positionnement vers l'avenir en intégrant dès à présent l'exploitation multicœurs hétérogènes et accélérateurs dans ses codes de calcul, au niveau des bénéfices de l'effet symbiotique de ProHMPT avec le programme CEA / Nanosimulation et surtout au niveau du maintien et du renforcement de l'avance technologique du CEA/INAC, et donc de sa visibilité, sur le plan international.

Au-delà de la nanosimulation, les progrès réalisés au sein de ProHMPT dans la programmation des architectures de calcul émergentes avec un soucis permanent de généricité et de portabilité des performances seront disponibles pour l'ensemble des utilisateurs du calcul intensif. La collaboration du CEA/CESTA comme partenaire associé permettra tout au long du projet de vérifier la portée générale des résultats obtenus. Il ne s'agit cependant pas d'affirmer que nous parviendrons au terme du projet à une solution ultime et définitive dans la programmation des architectures hétérogènes, et du fait des contraintes fortes posées par ces architectures, le projet n'est pas exempt de risques. Cependant, la connaissance et l'expérience accumulées au cours du projet seront précieuses dans la compréhension et la caractérisation du potentiel des GPUs et des successeurs du processeur Cell.

Au niveau de la programmation des machines parallèle, le projet ProHMPT constitue pour les équipes académiques INRIA Runtime, INRIA Mescal et UVSQ/PRiSM un cadre exceptionnel pour amorcer conjointement la nécessaire transition de leur activité vers les architectures multicœurs hétérogènes en partenariat avec des utilisateurs intensifs de simulations. Parmi les bénéfices escomptés, il y a donc d'une part un positionnement en pointe sur la maîtrise des architectures émergentes, une maîtrise sur laquelle il est par nature stratégique de prendre et garder la main au plus vite. D'autre part, la perspective d'un transfert technologique vers un domaine aussi porteur d'avenir que les nanotechnologies constitue un moteur puissant et motivant pour les partenaires impliqués. Par ailleurs, l'application des techniques et outils développés au sein du projet à code de simulation AbInit appartenant au domaine du logiciel libre et déjà très utilisé dans la communauté ouvre des perspectives de diffusion large pour les résultats de ProHMPT.

L'espace de collaboration privilégié élaboré dans le cadre de ProHMPT, sa thématique de transfert technologique soutenu et réactif vers la nanosimulation apportent pour BULL et CAPS entreprise les conditions d'une renforcement déterminant du positionnement de ces entreprises sur l'exploitation des nœuds de calcul hétérogènes (Cell/GPU) avec à la clé un accroissement considérable du marché potentiel. Ces perspectives de positionnement et de visibilité de CAPS entreprise se doublent de perspectives de développement technologique interne. Une meilleure compréhension de l'articulation matériel/système d'exploitation/logiciel pour les architectures multicœurs, acquise grâce aux échanges avec les partenaires spécialistes des supports exécutifs aussi bien que grâce à l'implication forte d'utilisateurs finaux dans le projet, permettra à CAPS entreprise d'améliorer sa technologie dans le domaine des techniques de compilation pour multicœurs et d'étendre ses produits vers la maîtrise du segment clé de l'allocation dynamique des ressources de calcul.

La place de ce projet dans la stratégie industrielle du CEA/CESTA est importante pour le développement de ses outils de simulation. En effet, ces codes doivent désormais traiter des tailles de problèmes jusqu’alors inaccessibles et ce, pour les besoins de compréhension de phénomènes physiques de plus en plus fins. Il faut désormais que ces codes, non seulement optimisent les ressources matérielles (RAM, place disque) mais aussi, conservent des temps de restitution « raisonnables » pour l’utilisateur. Ces temps sont implicitement liés aux capacités de calcul des machines parallèles mais aussi à l’utilisation efficace de ces capacités de calcul. Le CEA/CESTA a développé la plupart de ses codes parallèles en utilisant MPI ou OpenMP, mais avec l’avènement des nouvelles machines et leurs composantes (GPU, Cell, ...) ces paradigmes « basiques » seront peut être remis en cause et il est nécessaire de s’y préparer. L’évaluation des performances du code KISS3D en fonction des nouveaux paradigmes proposés par le projet ProHMPT, et l’adéquation des codes avec les futures architectures proposées, paraît extrêmement intéressante. De plus, pour l’ensemble des codes de calcul, les propositions ou outils pourront être testés sur TERA afin d’anticiper les évolutions des machines de la DAM, en coopération avec BULL.

Les retombées attendues du projet ProHMPT et son incidence sur l'activité des partenaires sont donc considérables, à la mesure de l'enjeu double de la maîtrise des architectures de calcul hétérogènes et du progrès en capacité de nanosimulation, à la hauteur de l'impact — à tous les niveaux de la société — du calcul intensif et des nanotechnologies.


 

1.7  Organisation du projet. Project management : structure and flow.

Structure et flot de tâches du projet

Chronographe du projet

Étapes du projet

1.8 Organisation du partenariat. Description of the Consortium.

 

1.8.1     Pertinence des partenaires. Presentation of the relevance of each partner to the proposal.

RUNTIME

L'équipe-projet INRIA Runtime (commune au centre de recherche INRIA Bordeaux Sud-Ouest et au LaBRI) s'intéresse à la conception et la production de supports d’exécution parallèles facilitant la portabilité des performances. En particulier dans le cadre des ANR PARA et NUMASIS cette équipe-projet a développé une bibliothèque de threads adaptée aux machines parallèles hiérarchiques de type NUMA. Cette bibliothèque est basée sur une modélisation arborescente de la machine cible, sur le concept d’imbrication de bulles de threads (arborescence de threads) pour structurer le parallélisme de l’application et sur le concept d’ordonnanceur à bulle pour piloter de façon structurée l’exécution parallèle de l’application. La technologie ainsi développée a été mise en oeuvre avec succès pour l'exécution de programmes OpenMP. Dans le cadre du présent projet, l’objectif de l’équipe-projet RUNTIME est d’étendre cette bibliothèque aux architectures hétérogènes et de démontrer son apport quant à l'exécution de programmes HMPP ou OpenMP. 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 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.

CAPS Entreprise

Fondée en 2002 par des membres de l'équipe de recherche CAPS de l'INRIA (Rennes) et du laboratoire PRiSM de l'université de Versailles–Saint-Quentin-en-Yvelines, CAPS développe et commercialise des logiciels innovants de mise au point pour la performance des applications des domaines du HPC et de l'embarqué. CAPS offre une gamme d’outils de développement et de services permettant aux applications de ses clients de tirer la performance des processeurs multi-cœurs utilisés dans les nouvelles générations de matériel informatique.

CEA/INAC

Le CEA/INAC (Grenoble) développe dans le cadre du projet européen BigDFT un code de calcul ab initio à base de fonctions d'ondelettes couplé au code ABINIT. Les calculs ab initio n'utilisant pas de paramètres ajustables sont incontournables pour la détermination et la prédiction de la structure et des propriétés des matériaux et des molécules. Ces calculs sont coûteux car ils exigent de décrire des fonctions de probabilité pour chaque électron présent dans le système (nombre de l'ordre de plusieurs centaines voire milliers). Une version parallèle de ce code (MPI et OpenMP) sera bientôt opérationnelle sur des grappes de machines multiprocesseurs.

UVSQ/PRiSM

L’équipe architecture parallèle du PRiSM (http://www.prism.uvsq.fr/recherche/themes/arpa) se spécialise depuis plusieurs années dans l’étude des architectures des processeurs et systèmes modernes et dans l’optimisation des codes scientifiques qui les exploitent : l’objectif principal des recherches poursuivies est l’amélioration de l’interface entre matériel et logiciel bas niveau. Cet objectif se décline en deux sous axes : l’un porte sur les optimisations matérielles (conception de nouveaux mécanismes de caches par exemple) et l’autre sur l’optimisation de code (amélioration des performances sur un matériel donné). L'équipe participe au projet ANR PARA, à des projets du pôle de compétitivité System@tic (POPS, Teraops et auparavant FAME2) ainsi qu'au projet européen PARMA pour notamment l'optimisation multicœur d'applications industrielles. De plus, les résultats que nous avons obtenus pour la génération automatique de bibliothèques hautes performances ont été publiés dans plusieurs conférences de bon niveau et intéressent Intel qui nous a accordé des financements pour utiliser nos techniques. Nous collaborons également avec les universités de l’Illinois, de Purdue et de Carnegie Mellon sur les techniques de génération automatique de librairies de type Atlas/Spiral.

INRIA MESCAL

Les objectifs généraux de l'équipe-projet INRIA Mescal (commune au centre de recherche INRIA Grenoble–Rhône-Alpes et au LIG) sont d'étudier la problématique du passage à l'échelle des systèmes et applications parallèles/distribués. La méthodologie du projet est basée sur l'observation, l'analyse, la modélisation et l'évaluation des performances des architectures cibles, des couches logicielles ainsi que les applications. Mescal est également fortement impliqué dans plusieurs projets du pôle de compétitivité MINALOGIC, en particulier autour des simulations à haute performance de micro et nano objets.

L'équipe-projet Mescal a été en 2005 à l'initiative du montage et de l'animation du projet ANR NUMASIS sur le thème l'optimisation des performances des simulations sismiques sur des architectures NUMA. La contribution principale du projet Mescal concernait les problèmes de gestion et d'allocation mémoire pour plates-formes NUMA. Des allocateurs dynamiques de mémoire ont ainsi été développés pour les architectures hiérarchiques et utilisés dans le projet NUMASIS. Il s'agit ici de prolonger ces travaux sur la gestion mémoire au contexte des architectures multicœurs hybrides. Un des points critiques sera en effet très certainement le transfert des données entre la mémoire de la machine hôte et la mémoire des accélérateurs. La manière de stocker les données sur la mémoire des accélérateurs constitue un autre élément clé dans l'obtention de hautes performances.

L'équipe Mescal est également intéressée à renforcer ses collaborations avec le CEA Grenoble (Laboratoire de Simulation Atomistique) sur les simulations de structure électronique (calcul ab initio). Les compétences des autres partenaires du projet ProHMPT nous permettent de prolonger une première étude qui a été menée pour étudier le comportement des nanosimulations sur des architectures multiprocesseurs à mémoire partagée.

L'équipe Mescal a été à l'initiative d'une action de collaboration pour le nouvel accord cadre CEA-INRIA. Les thématiques de ce projet s'inscrivent également dans les problématiques scientifiques et technologiques du pôle de compétitivité MINALOGIC. Les travaux du projet ProHMPT pourraient être réutilisées et appliquées dans le contexte du projet MINALOGIC Ciloe (Calcul Intensif pour les LOgiciels de CAO électronique et les applications Embarquées) qui devrait être financé sur fonds européens FEDER.

BULL

L’équipe recherche et développement HPC de Bull est spécialisée dans le développement de logiciels système et middleware nécessaires au calcul scientifique. A ce titre elle s’intéresse aux environnements GPU afin de proposer des solutions co-processeurs sur les plates-formes de Bull. ProHMPT est en quelque sorte la continuation du projet ANR PARA où Bull participe au développement et à l’implémentation d’une carte FPGA pour des besoins bio informatique et modélisation moléculaire. 

Bull souhaite continuer d’expérimenter les différents environnements proposés par la communauté Open Source afin de faciliter l’exploitation de ces nouvelles puissances de calcul et de les rendre accessible aux applications scientifiques. Les travaux consistent à déterminer les séquences applicatives pouvant bénéficier des technologies GPU et à étudier les environnements (programmation, compilation, exécution) qui prennent en charge l’utilisation de cartes accélératrices sans modification ou avec des modifications légères du code applicatif. Seront particulièrement analysés les impacts et les échanges entre GPU et mémoires processeur pour comprendre l’efficacité de cette technologie pour les applications et les incidences sur le fonctionnement du système.

Un certain nombre d’expérimentations seront réalisées en parallèle par nos équipes sur des prototypes de nos futures plates-formes possédant des GPUs. Les meilleures technologies seront le cas échéant proposées à nos clients.

CEA/CESTA

Le CEA/CESTA a développé plusieurs codes de calcul et lancé des thèses en aérodynamique pour la rentrée atmosphérique depuis le début des années 90 (par exemple : Luc Mieussens, « Modèles à vitesses discrètes et méthodes numériques pour l’équation de Boltzmann-BGK », Thèse de l’Université de Bordeaux 1, septembre 1999). De nos jours, ces codes sont parallèles et en production sur la machine TERA de la DAM, tout en poursuivant les travaux de recherche amont. En ce qui concerne le domaine des solveurs parallèles (le CEA/CESTA est partenaire dans l’ANR SOLSTICE), des tests ont été effectués avec différentes bibliothèques (PaStiX de l’INRIA Sud Ouest, PETSc de Argonne National Laboratory) et de nombreux travaux ont été menés sur les préconditionneurs spécialisés. Le CEA/CESTA a un accès direct à la machine TERA de la DAM et utilise intensivement les ressources mises à sa disposition, tout en conservant un ensemble de serveurs de calcul sur le site du CESTA pour ses petits calculs et mise au point de codes. Des collaborations dans le domaine du calcul parallèle sont en cours avec l'équipe Runtime de l’INRIA Bordeaux Sud Ouest.

 


 

1.8.2     Complémentarité des partenaires. Description of complementarity within the consortium.

Pile logicielle

 

 

Le projet ProHMPT réunit tous les acteurs de la chaîne de programmation des applications scientifiques.

Le développement des architectures parallèles a jusqu’alors été très progressif, laissant la possibilité aux codes scientifiques de physique, chimie, biologie de progresser de concert avec la technologie disponible. Aussi, la montée en puissance rapide des architectures de type cartes graphiques (GPUs) et l’apparition récente de processeurs multicœurs hétérogènes à fort potentiel ont pris la communauté de vitesse : la programmation de ces architectures nécessite des transformations profondes — et ce dans un laps de temps très court — de méthodologie et de technologie de développement et d’exécution des applications scientifiques sur l’ensemble de la chaîne de programmation. C’est pourquoi le projet ProHMPT regroupe des équipes d'informaticiens et des physiciens en synergie, officiant à tous les niveaux, depuis le support exécutif et le matériel jusqu’au logiciel final. En apportant chacun leurs compétences dans des domaines différents, les partenaires offriront à la communauté scientifique des outils mathématiques et de simulation de haut niveau.

 

 

1.9  Stratégie de valorisation et de protection des résultats. Data management, data sharing, intellectual property strategy, and exploitation of project results.

Un accord de propriété intellectuelle des résultats du projet sera inclus dans le contrat de partenariat signé par l’ensemble des partenaires du projet ProHMPT. Le principe de cet accord se basera sur le respect de la propriété de l’apport de chacun des partenaires. Ce droit de propriété s’applique aux développements réalisés pendant la durée du projet et aux codes ou outils développés au préalable.

Connaissances antérieures

Chaque partenaire conserve la propriété totale et exclusive de ses connaissances antérieures. Cependant, pour les seuls besoins du projet et pour la seule durée du projet, chaque partenaire pourra, sur demande expresse et sous obligation de confidentialité, utiliser sans contrepartie financière les Connaissances Antérieures de l’autre partenaire.

Résultats Propres

Chaque partenaire sera propriétaire de ses Résultats Propres, qu’il aura générés seul, sans le concours du personnel de l’autre partenaire, et décidera seul de l’opportunité et de la nature des mesures de protection à prendre, à ses seuls nom et frais.

Résultats Communs

Ils seront la propriété conjointe des partenaires, qui décideront ensemble de l’opportunité et de la nature des mesures de protection à prendre, en leurs noms conjoints et à leur frais partagés. Les partenaires élaboreront un règlement de copropriété avant toute exploitation.

Principe d’exploitation

A) Exploitation des Connaissances Antérieures

Chaque partenaire dispose librement de ses Connaissances Antérieures.

Chaque partenaire s’engage à concéder à l’autre partenaire, sur demande expresse de celui-ci, des licences sur ses Connaissances Antérieures nécessaires à la valorisation des Résultats Propres ou Communs du projet, à des conditions financières préférentielles.

B) Exploitation des Résultats Propres

Chaque partenaire pourra librement exploiter et utiliser les Résultats Propres dont il est propriétaire, directement ou par voie de concession de licence. Les Résultats propres d’un partenaire nécessaires à l’exploitation des Résultats Propres de l’autre partenaire feront l’objet d’une licence à négocier à des conditions financières préférentielles.

C) Exploitation des Résultats Communs

Les partenaires copropriétaires des Résultats Communs, régleront les modalités d’exploitation dans le cadre du règlement de copropriété sus mentionné. Les codes et outils produits par les partenaires CEA/INAC, Runtime, Mescal seront diffusés et accompagnés d’une licence de logiciel libre.