HMPP ( Programación paralela híbrida multinúcleo ) es un conjunto de herramientas de desarrollo para la programación multinúcleo híbrida. HMPP es un producto comercial de la empresa CAPS.
La suite HMPP incluye dos herramientas:
Plataformas compatibles:
La idea fundacional es: “Para abordar el mundo del híbrido multinúcleo, el desarrollador debe anotar su aplicación y no modificarla. " Este principio nació de un conjunto de directivas de compilación. Que permiten la declaración y llamada de codelets, que pueden ser deportados y ejecutados en aceleradores. También indican las condiciones para ejecutar codelets (síncronos, asíncronos, guardia) y también permiten especificar transferencias de datos.
Dado que los codelets están vinculados dinámicamente a la aplicación, HMPP puede, sin necesidad de volver a compilarlos, utilizar nuevos aceleradores o incluso versiones mejoradas de los codelets.
Las directivas HMPP permiten la ejecución remota de parte del código, así como la gestión de transferencias de datos hacia y desde aceleradores de hardware.
<label>: identificador único para una pareja (codelet, callsite)
<directiva de tipo>: tipo de directiva HMPP
<directiva de parámetro>: parámetro de directiva HMPP
[&]: permite continuar la directiva en una nueva línea
Lenguaje C#pragma hmpp <label> <directive type> [, <directive parameter>]* [&]
Idioma fortran!hmpp <label> <directive type> [, <directive parameter>]* [&]
Las principales pautas son:
La directiva codelet permite declarar una función como codelet. La directiva del sitio de llamadas permite la llamada de un codelet en el código.
Las siguientes directivas permiten un uso más avanzado (asincronismo):