The main objective of this group is to investigate programming paradigms towards productive programming and their implementation through intelligent runtime systems that effectively exploit performance out of the target architecture - from multicore and SMT processors to shared- and distributed-memory systems, small and large-scale cluster systems, including both homogeneous and heterogeneous systems that use accelerators like GPUs.
The Programming Models team currently organizes its work around the design of the OmpSs programming model. OmpSs is an effort to integrate features from the StarSs programming model developed by BSC into a single programming model. In particular, the objective is to extend OpenMP with new directives to support asynchronous parallelism and heterogeneity - devices like GPUs. However, it can also be understood as new directives extending other accelerator based APIs like CUDA or OpenCL. The OmpSs environment is built on top of the Mercurium compiler and Nanos++ runtime system.
Summarizing the efforts of the last year, the group has released a new stable version of OmpSs. In this new version, apart from several bug-fixes in both tools, they have introduced the following features:
1. New cluster support
2. Support for non-contiguous data
3. Thread manager
4. Task reductions