  MPI applications matter. However, with the advent of many-core processors,
traditional MPI applications are challenged to achieve satisfactory
performance. This is due to the inability of these applications to respond to
load imbalances, to reduce serialization imposed by synchronous communication
patterns, to overlap communication with computation and finally to deal with
increasing memory overheads. The MPI specification provides asynchronous calls
to mitigate some of these factors. However, application developers rarely make
the effort to apply them efficiently. In this work, we present a methodology to
develop hybrid applications called Hierarchical Domain Over-decomposition with
Tasking (HDOT), that reduces programming effort by emphasizing the reuse of
data partition schemes from process-level and applying them on task-level,
allowing a top-down approach to express concurrency and allowing a natural
coexistence between MPI and shared-memory programming models. Our integration
of MPI and OmpSs-2 shows promising results in terms of programmability and
performance measured on a set of applications.
