Hybrid Multicore Parallel Programming
HMPP™ (Hybrid Multicore Parallel Programming) est une plate-forme qui permet aux développeurs d'intégrer facilement et rapidement des accélérateurs matériels dans leurs applications afin de construire de puissantes applications multi-cœurs. Cette technologie est développée par CAPS entreprise.
Le concept
Le concept d'HMPP™ est d'intégrer l'utilisation des accélérateurs matériels dans les applications plutôt que d'avoir à modifier les applications afin de les rendres compatibles aux accélérateurs matériels. Les versions matérielles de fonctions de calculs devant s'exécuter sur les accélérateurs sont dissociées du code source de l'application.
Les principes
La suite HMPP™ comprend des outils logiciels et un environnement d'exécution. Basée sur un jeu de directives de compilation, la suite HMPP™ permet le développement en C et Fortran d'applications multi-cœurs hybrides sur systèmes Unix.
Les directives permettent de déclarer des fonctions, appelées codelets, pouvant être exécutées sur des accélérateurs. Elles indiquent également les conditions d'exécution des codelets, leur propriété synchrone ou asynchrone ainsi que les transferts de données.
Les codelets étant liés dynamiquement à l'application, HMPP™ peut, sans nécessiter de re-compilation, 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 ansi qu'une gestion des transferts de données vers et depuis les accélérateurs matériels.
Syntaxe des directives 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™
- hmppGlobalInit
- codelet
- callsite
- synchronize
- advanceload
- delegatedstore
- release