Karl Rupp was born in Austria in 1984. He received the BSc degree in electrical engineering from the Technische Universität Wien in 2006, the MSc in computational mathematics from Brunel University in 2007, and the degree of Diplomingenieur in microelectronics and in technical mathematics from the Technische Universität Wien in 2009. He completed his doctoral degree on deterministic numerical solutions of the Boltzmann transport equation in 2011. His scientific interests include discretization schemes and massively parallel algorithms in multiphysics problems.
Graphics Processing Units in Computational Science
Graphics processing units (GPUs) offer high data transfer rates, as well as high raw arithmetic performance. GPUs are therefore supposed to be very well suited for accelerating scientific calculations, such as fluid dynamics, machine learning, weather prediction or semiconductor device simulation. Because of these favorable properties, modern supercomputers provide most of their processing power through GPUs.
However, many research codes do not yet use GPUs. The reason is that code written for conventional processors does not automatically run on GPUs; the code needs to be rewritten. Such a rewrite of the code is challenging because it is not only the code that changes, but also the underlying algorithms may have to be replaced with parallel alternatives.
To aggravate the situation, the software ecosystem for GPUs is fragmented. Different GPU vendors provide different low-level interfaces. Thus, many existing software libraries for GPUs only support devices from a single vendor. As a consequence, applications built on top of these libraries only support GPUs from a single vendor as well. And so, these applications run efficiently only on supercomputers with GPUs from that particular vendor. If an application aims to support GPUs from all major vendors, it has to provide multiple interfaces to the different GPU software libraries (Fig. 1). This is often too high of a development and maintenance burden for a small research team.
Ideally, applications need to interface with only a single software library that provides fast execution on GPUs from all different vendors. This is the aim of the free open-source library libaxb developed at the Institute for Microelectronics. The software library provides a common programming interface to applications and internally selects the best low-level library for the GPU available on a prospective system. Thus, applications no longer need to maintain multiple GPU interfaces – a single interface to libaxb suffices (Fig. 2). Consequently, libaxb will simplify the use of GPUs such that both scientific and non-scientific applications can leverage GPUs for new insights.
Fig. 1: Applications currently have to interface with multiple GPU-enabled libraries to support GPUs from different vendors.
Fig. 2: Libaxb provides a single interface to applications, while dealing with differences among the lower-level GPU libraries internally.