OpenHMPP

This approach based on directives has been implemented because they enable a loose relationship between an application code and the use of a hardware accelerator (HWA).

OpenHMPP is based on the concept of codelets, functions that can be remotely executed on HWAs.

HMPP considers two address spaces: the host processor one and the HWA memory.

They address the remote execution (RPC) of a function as well as the transfers of data to/from the HWA memory.

There are two kinds of labels: In order to simplify the notations, regular expressions will be used to describe the syntax of the HMPP directives.

To limit the communication overhead, data transfers can be overlapped with successive executions of the same codelet by using the asynchronous property of the HWA.

The delegatedstore directive is a synchronization barrier to wait for an asynchronous codelet execution to complete and to then download the results.

The synchronize directive allows to wait for the asynchronous execution of the codelet to complete before launching another iteration.

The syntax of this directive is: The notation ::var_name with the prefix ::, indicates an application's variable declared as resident.

In C language: The OpenHMPP Open Standard is based on HMPP Version 2.3 (May 2009, CAPS entreprise).

Synchronous versus asynchronous RPC
HMPP memory Model