Hybrid Multicore Parallel Programming
Hybrid Multicore Parallel Programming (HMPP) est un ensemble d'outils de développement au service de la programmation multi-cœurs hybride. HMPP est un produit commercial de CAPS entreprise.
Description
La suite HMPP comprend deux outils :
- un compilateur C et Fortran ;
- un environnement d'exécution.
Plates-formes supportées :
- Debian 4.0 et supérieure ;
- RedHat Entreprise Linux 4.5 et supérieure ;
- RedHat Entreprise Linux 5.1 et supérieure.
Les principes
L'idée fondatrice est : « Pour adresser le monde du multi-cœurs hybride le développeur doit annoter son application et non pas la modifier. » De ce principe est né un jeu de directives de compilation. Lesquelles permettent la déclaration et l'appel de codelets, pouvant être déportés et exécutés sur des accélérateurs. Elles indiquent également les conditions d'exécution des codelets (synchrone, asynchrone, garde) et permettent aussi de spécifier les transferts de données.
Les codelets étant liés dynamiquement à l'application, HMPP peut, sans nécessiter de recompilation, utiliser de nouveaux accélérateurs ou même des versions améliorées des codelets.
Les directives HMPP
Les directives HMPP permettent l'exécution distante de partie de code ainsi qu'une gestion des transferts de données vers et depuis les accélérateurs matériels.
Reconnaître une directive HMPP
<label> : identifiant unique pour un couple (codelet, callsite)
<directive type> : type de directive HMPP
<directive parameter> : paramètre de directive HMPP
[&] : permet de continuer la directive sur une nouvelle ligne
Langage C
#pragma hmpp <label> <directive type> [, <directive parameter>]* [&]
Langage Fortran
!hmpp <label> <directive type> [, <directive parameter>]* [&]
Type des directives HMPP
Les directives principales sont :
- codelet
- callsite
La directive codelet permet de déclarer une fonction comme étant un codelet.
La directive callsite permet l'appel d'un codelet dans le code.
Les directives suivantes permettent une utilisation plus avancée (asynchronisme) :
- hmppGlobalInit
- synchronize
- advanceload
- delegatedstore
- release
Références
- Automatic Parallelization for Graphics Processing Units in JikesRVM par Alan Chun-Wai Leung télécharger la thèse[PDF]
- Workshop on General Purpose Processing on Graphics Processing Units Northeastern University, Boston, MA information
- An Hybrid Data Transfer Optimization for GPU par E. Petit, F. Bodin, R. Dolbeau. Compilers for Parallel Computers (CPC2007),
- (en) Lead, Follow. or… Blog de DougOF et Strypdbass
- PRACE project[PDF] par François Robin
Publications
- CAPS boosts multicore software applications with HMPP www.hpcwire.com
- CAPS supports AMD FireStream processors www.hpcwire.com
- An Evolutionary path for High Performance Heterogeneous Multicore Programming par François Bodin www.hpcwire.com
Voir aussi
Articles connexes
Liens externes
- (fr) Le site officiel d'HMPP
- (en) CAPS entreprise
- (en) OpenHMPP
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.