opengpu

Accueil > Projet OpenGPU > Présentation du projet

Envoyer Imprimer PDF

Introduction

Les GPUs (Graphics Processing Units) deviennent une solution de plus en plus prometteuse pour répondre au besoin croissant de puissance de calcul des traitements associés aux nouvelles méthodes industrielles de conception ou de simulation numérique.
Aujourd’hui très propriétaire, essentiellement axé sur le graphisme/multimédia et exclusivement développés par des fabricants informatiques américains (NVidia, ATI, Intel, IBM), les GPU séduisent de nombreux laboratoires et industriels à la recherche de standards et de puissance de calcul plus massive pour un coût contrôlé et une efficacité énergétique améliorée.

Ces travaux restent cependant isolés ou dispersés, bridés par l’absence de standards réels et d’outils suffisamment interopérables. Les acteurs européens sont de plus pratiquement absents de toute représentation dans les organismes de normalisation internationaux, ce qui exclut un dialogue constructif avec les fournisseurs de matériels GPU.

Les enjeux sont donc aujourd’hui :

• de constituer une plate-forme logicielle standard et ouverte accessible à l'ensemble de la recherche et de l'industrie,
• d’expérimenter et mesurer les résultats sur un démonstrateur matériel de grande puissance,
• de fédérer et mesurer les résultats avec le plus grand nombre de démonstrateurs industriels et académiques ouvrant ainsi de nouveaux débouchés marchés pour des acteurs spécialisés,
• de représenter enfin les intérêts des éditeurs et industriels français auprès des fabricants de matériels GPU et des organismes de normalisation mondiaux.

Le projet OpenGPU est né de ce constat et vise en particulier à réunir laboratoires spécialisés, industriels grandes entreprises et PME intéressés par ce sujet autour d’un projet collaboratif ambitieux permettant de faire face à ces enjeux. La localisation du projet au cœur du Groupe thématique OCDS du Pôle System@tic Paris Région ainsi que les liens établis avec des démonstrateurs partenaires des Pôles Cap Digital et Medisen ouvrent à la fois des perspectives d’excellence technologique en HPC dans le monde industriel et le portage vers des applications orientées marchés dans la simulation, la prospection pétrolière et la biologie.

En lien avec le Pôle Ter@tec, le projet OpenGPU permettra de fédérer de nombreux acteurs de toute taille autour du plus gros projet français voire européen autour des GPUs localisé dans la Région Ile de France. Il servira de base à la recherche de partenariats internationaux et notamment les grands fabricants de plate-formes matérielles haute performance à base de GPU.

L’ambition est à terme de construire autour du projet OpenGPU un pôle d’excellence économique et international basé géographiquement en Ile de France, capable d’attirer des acteurs industriels étrangers –fabricants, éditeurs, grandes entreprises, laboratoires et start-up- et constituer le 1er pôle Européen de recherche et développement dans le domaine des architectures hybrides.

Objet du projet


Les GPUs (Graphics Processing Units) deviennent une solution de plus en plus prometteuse pour répondre au besoin croissant de puissance de calcul et de traitement des applications numériques, des nouvelles méthodes de conception ou des simulations numériques liées à la recherche. Depuis l'année 2005, la montée en fréquence des processeurs généralistes a laissé la place à la multiplication des cœurs (core) rendant ces solutions plus complexes à exploiter. Dans le même temps, les GPUs ont évolué vers des architectures moins spécialisées rendant leur usage pour des calculs ou des traitements de données envisageable. Cette évolution a été accompagnée par l'émergence d‘architectures unifiées des GPU et en 2008 par la finalisation du standard OpenCL offrant une perspective intéressante pour la programmation de ces architectures. La puissance et le ratio puissance/consommation des GPUs étant supérieurs à ceux des CPUs standards, l’utilisation des GPUs représente une opportunité permettant de disposer de plus de puissance à un coût moindre et pour consommation d'énergie maitrisable.

Le projet OpenGPU se propose d’exploiter cette opportunité avec un triple objectif:

-    construire une plateforme intégrée et ouverte d'outils Open Source d'aide à la parallélisation de code existant,
-    expérimenter les gains de cette parallélisation au travers de grands démonstrateurs industriels et académiques
-    construire les architectures matérielles et logicielles adéquates pour l'exploitation de ces nouvelles puissances de calcul et l’amélioration de la consommation énergétique.
Le projet Open GPU comporte donc trois grands volets qui sont à la fois complémentaires et en synergie les uns avec les autres dans un but d'augmentation réciproque de la valeur dans chacun des domaines.

Un ensemble de prototypes d'outils d'aide à la parallélisation

Convertir un code existant en code parallèle ou développer une application parallélisée est une tâche difficile pour des raisons multiples: manque de formation et d'expertise des développeurs, nouveauté et complexité des architectures multi-core (de deux à plusieurs centaines de cores), hétérogénéité du matériel, complexité intrinsèque de la parallélisation. Le projet OpenGPU a pour objectif de développer, synthétiser et intégrer dans  l'environnement Eclipse l'ensemble des outils nécessaires à l'aide à la parallélisation d'applications écrites en langage C, C++, Java ou Fortran. Le standard OpenCL servira de format pivot afin d'assurer la portabilité des optimisations vers l'ensemble des architectures parallèles (CPU, GPU, OpenMP, MPI, Pthread, …). Le projet OpenGPU se réserve également la possibilité de cibler d'autres langages propriétaires (PTX ou autre langage spécifique à certaines architectures). Ces outils pourront être complétés par d'autres logiciels de mise au point (debugger) afin d'assurer la maîtrise maximale de la parallélisation en fonction des différents besoins.
Cet ensemble d'outils intégrés sera proposé sous la forme d'un projet Open Source avec une licence respectueuse des ambitions de tous les partenaires du projet, sur un modèle permettant leur propagation rapide et mondiale.

Des démonstrateurs industriels et académiques

La plupart des grandes librairies sur lesquelles s'appuient les industriels pour leurs calculs, simulations ou développements embarqués ne sont que peu (ou pas du tout) parallélisées actuellement. Cet état de fait empêche ces chaînes logicielles de bénéficier des gains de puissance de nouvelles architectures matérielles. Leur re-développement ou l'introduction de la parallélisation dans certaines parties critiques du code est un problème majeur pour ces applications qui n'ont pas été conçues pour être déployées sur des machines hautement parallèles.  Le projet Open GPU concernera dans un premier temps l'étude des code des démonstrateurs avec les équipes d'experts en parallélisation, puis dans un deuxième temps, à l'aide des outils cités précédemment, la parallélisation de tout ou parties des librairies métiers des partenaires du projet. Cette dimension du projet apportera un double bénéfice: la validation sur des exemples grandeur nature des outils de parallélisation et l'optimisation des librairies industrielles pour les architectures parallèles (CPU, GPU, FPGA, Cell, …).
Les trois domaines choisis en priorité dans le cadre du projet OpenGPU sont: la sécurité, la simulation et la biologie. La mise en forme de « bonnes pratiques » (design patterns) de parallélisation sous forme d'une bibliothèque OpenCL ou d'un corpus de règles de codage ouvrira le partage des acquis du projet OpenGPU aux membres du Club des utilisateurs du projet, puis à l'ensemble de la communauté HPC.

Des architectures logicielles et matérielles adaptées

La mise en place des applications parallélisées nécessite de prendre en compte un grand nombre de paramètres: nombre et typologie des processeurs, systèmes d'exploitation, ordonnancement et répartition des tâches de calculs. Le projet OpenGPU serait incomplet si cette dimension de déploiement n'était pas prise en compte. L'intégration des outils comme OpenMP ou MPI le plus en amont possible dans la chaîne d'optimisation garantira une pleine exploitation des moyens de calculs sur lesquels seront déployées les applications parallélisées. Le projet Open GPU s'appuiera sur les compétences déjà acquises par les partenaires du projet dans le domaine des architectures HPC ou GPU et de la compilation pour coller au mieux avec les systèmes ciblés pour les déploiements. Ces trois volets s’appuieront sur une plateforme de benchmark et une approche visant à valider l’excellence énergétique des solutions.

Une plateforme de benchmarks


La validation des optimisations apportées aux démonstrateurs devra être effectuée dans un cadre rigoureux afin de qualifier et de mesurer au mieux les gains obtenus à l'aide d'outils statistiques appropriés. Le projet OpenGPU mettra en œuvre une plate-forme matérielle et logicielle générique permettant à chaque démonstrateur de faire tourner ses tests, d'en créer de nouveaux si nécessaire et d'utiliser les outils de visualisation et d'analyse pour la validation des résultats.
Le projet OpenGPU garantira l'étanchéité des codes sources, des données de benchmarks et des résultats associés. Ces résultats seront publiés suivant deux indicateurs clés que sont la performance et l'optimisation énergétique.

La nécessité du « green computing »


L'optimisation des chaînes de calculs par la parallélisation devrait également permettre une meilleure utilisation du taux d'occupation des serveurs et de bénéficier du rapport Gflops/watt très en faveur des nouveaux matériels à base de GPU. Le projet Open GPU vise en particulier à valider l'efficacité énergétique apportée par ces optimisations et à qualifier des configurations matérielles et logicielles dont le bilan énergétique et carbone est optimal, en rapport avec les normes actuelles ou à venir.

 

 

 

 

 

Mis à jour ( Jeudi, 11 Mars 2010 09:46 )