HMPP ( Hybrid Multicore Parallel Programming ) é um conjunto de ferramentas de desenvolvimento para programação híbrida multicore. HMPP é um produto comercial da empresa CAPS.
O pacote HMPP inclui duas ferramentas:
Plataformas suportadas:
A ideia base é: “Para abordar o mundo dos multicore híbridos, o desenvolvedor deve fazer anotações em sua aplicação e não modificá-la. “ Este princípio nasceu de um conjunto de diretivas de compiladores. Que permitem a declaração e chamada de codelets, que podem ser deportados e executados em aceleradores. Eles também indicam as condições para a execução de codelets (síncrono, assíncrono, guarda) e também permitem a especificação de transferências de dados.
Como os codelets estão dinamicamente vinculados ao aplicativo, o HMPP pode, sem a necessidade de recompilação, usar novos aceleradores ou até mesmo versões aprimoradas dos codelets.
As diretivas HMPP permitem a execução remota de parte do código, bem como o gerenciamento de transferências de dados de e para aceleradores de hardware.
<label>: identificador único para um par (codelet, callite)
<diretiva de tipo>: tipo de diretiva HMPP
<parâmetro da diretiva>: parâmetro da diretiva HMPP
[&]: permite continuar a diretiva em uma nova linha
Linguagem C#pragma hmpp <label> <directive type> [, <directive parameter>]* [&]
Linguagem Fortran!hmpp <label> <directive type> [, <directive parameter>]* [&]
As principais diretrizes são:
A diretiva codelet permite que uma função seja declarada como um codelet. A diretiva callsite permite a chamada de um codelet no código.
As seguintes diretivas permitem um uso mais avançado (assincronismo):