Hybrid/Heterogeneous Programming with StarSs

Jesus Labarta (BSC)

A plethora of hybrid and heterogeneous systems (both performance and functionality) are foreseeable for the years to come.

Getting productivity in application development and execution performance for such systems is really a challenge.

StarSs is node level programming model providing programmers with a natural interface to an underlying data-flow execution model and aiming allowing the “same” source code to run on “any” target architecture (SMP, GPUs,…). StarSs is task based and operates on a single logical memory address. Directionality directives provide information about the task arguments that the compiler and runtime can use dynamically at run time both to compute dependences and to handle the physical address space. The modularity of tasks allows for different implementations thus being a natural approach for portability tuning and approaching heterogeneous systems. The StarSs model can also be used within MPI, with the advantage over other approaches that the data-flow asynchronous execution within a process does propagate to the whole MPI application, thus providing the asynchrony and overlap that we think will be necessary to approach the exascale.

The talk will describe the characteristics and status of our compiler and run time implementations targeting nodes with general purpose multicores and GPUs on one side and hybrid MPI/StarSs on the other.