Hybrid Multicore Parallel Programming

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis HMPP)

HMPP (Hybrid Multicore Parallel Programming) 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[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

<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[modifier | modifier le code]

#pragma hmpp <label> <directive type> [, <directive parameter>]* [&]

Langage Fortran[modifier | modifier le code]

!hmpp <label> <directive type> [, <directive parameter>]* [&]

Type des directives HMPP[modifier | modifier le code]

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[modifier | modifier le code]

Publications[modifier | modifier le code]

  • 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[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]