How to have the cake and eat it too -- Rank-Polymorphism for Productivity and Performance

Sven-Bodo Scholz

Register to attend online
Day & Time

Monday 15 Jun, 15:00 - 16:00

Room

MCS0001

Abstract

Performance tuning for HPC traditionally requires combinations of non-trivial algorithmic changes.
Tiling for improved locality, data reorganisation for improved vectorisation, data distribution for minimised communication, scheduling of parallel compute units, to name just a few.
Most of these optimisations are architecture-specific rendering the optimisation process not only challenging in itself but also very costly when switching from one architecture to the next.
As a consequence, we typically have to choose how much productivity we are willing to sacrifice for performance.
In this talk, I advocate for Rank-Polymorphism as programming technique for shifting key optimisations from code into data shapes. That way, adjustments for new architectures do not require changes in the algorithm itself but solely in the shape of the data. In the context of the programming language SaC we have shown the potential of this approach for a few core algorithms, delivering competitive performance from very concise, easily verifiable, rank-polymorphic specifications.

Bio

Sven-Bodo Scholz received his Dr.rer.nat. and a German Habilitation from the University of Kiel in 1996 and in 2004, respectively. Currently, he is Professor at Radboud University, Nijmegen, Netherlands. Sven-Bodo Scholz's expertise spans from programming languages across compiler technology to High-Performance Computing. His research is primarily driven by the goal to develop compiler technology that enables the creation of tools that combine high-productivity of programmers with high-performance executions on a wide variety of parallel hardware platforms. This has led to numerous contributions, theoretical as well as practical, that affect the interplay of these goals. Among his contributions are novel type systems, partial evaluation techniques, code optimisation techniques, memory management techniques, code generation techniques, contributions to hardware-software co-design as well as approaches to generic programming. He is a key contributor to the design and implementation of the functional data-parallel array programming language SaC as well as to the coordination language S-Net which builds on asynchronous streaming for engineering concurrent applications. Both these systems are freely available and studies with academic as well as with industrial partners have demonstrated the suitability and the effectiveness of these systems for diverse performance-critical application areas such as scientific computing, financial modeling, supply-chain modelling, signal and image processing.