Simplifying heterogeneity programming with OpenCL targets using the OmpSs Programming Model

OpenCL is now one of the preferred “non-proprietary” way for programming the “acceleration”
part of a heterogeneous platform. OpenCL is supported by a large panel of manufacturers, enabling it
for programming on various GPUs, including SoCs accelerators but also FPGAs.
OpenCL enables writing computing kernels with a C-like language in a very simple way.
But a drawback of OpenCL is the code that is required to access these kernels from the CPU. Provided
APIs propose “buffer oriented” data transfers, and execution control requires multiple statements.
These APIS are not difficult to understand, but they break the continuity of the computing code,
increasing its complexity through the addition of large sets of statements. As a consequence, it also
increases code maintenance or evolution cost.
The OmpSs environment proposed by the Barcelona Supercomputing Center as a component of the
TANGO programming model provides an elegant and transparent way to manage integration of
OpenCL code.
This blog presents an example that demonstrates the efficiency of this coding approach.

For more details you can find attached the full document!