In recent years, a substantial improvement in computer and networking technology made available parallel and distributed architectures with an unprecedented power. Parallelism is moving from HPC systems to all day systems, ranging from smartphone and tables to personal computers and laptops. For this reason, applications of Parallel Computing have become increasingly pervasive in our everyday life. This (re-)raised the issue of the programmability wall, an impediment to software productivity, code and performance portability.
The main objective of the group is to investigate programming models most suitable to exploit commodity parallel architectures (multi/many core, GPU and heterogeneous architectures) in a ease-to-use way to programmers. In our vision, parallel programs are defined through high-level constructs (e.g. skeletons, patterns) that are composed each other to form complex computations. The study and definition of parallel patterns for recurrent computations, their cost models (both analytical or empirical), and the evaluation of their expressive power to model real-life applications is a central research issue on which he research group has been actively focused for many years.