An approach to performance portability through generic programming

Andreas Hadjigeorgiou, Chris Stylianou, Michele Weiland, Dirk Jacob Verschuur, Jacob Finkenrath

Research output: Contribution to conferencePaperpeer-review

Abstract / Description of output

The expanding hardware diversity in high performance computing adds enormous complexity to scientific software development. Developers who aim to write maintainable software have two options: 1) To use a so-called data locality abstraction that handles portability internally, thereby, performance-productivity becomes a trade off. Such abstractions usually come in the form of libraries, domain-specific languages, and run-time systems. 2) To use generic programming where performance, productivity and portability are subject to software design. In the direction of the second, this work describes a design approach that allows the integration of low-level and verbose programming tools into high-level generic algorithms based on template meta-programming in
C++. This enables the development of performance-portable applications
targeting host-device computer architectures, such as CPUs and GPUs.
With a suitable design in place, the extensibility of generic algorithms to
new hardware becomes a well defined procedure that can be developed
in isolation from other parts of the code. That allows scientific software
to be maintainable and efficient in a period of diversifying hardware in
HPC. As proof of concept, a finite-difference modelling algorithm for
the acoustic wave equation is developed and benchmarked using roofline
model analysis on Intel Xeon Gold 6248 CPU, Nvidia Tesla V100 GPU,
and AMD MI100 GPU.
Original languageEnglish
Publication statusPublished - 16 Apr 2024
EventHeteroPar 2023: Algorithms, Models and Tools for Parallel Computing on Heterogeneous Platforms - Limassol, Cyprus
Duration: 28 Aug 2023 → …

Conference

ConferenceHeteroPar 2023
Country/TerritoryCyprus
Period28/08/23 → …

Fingerprint

Dive into the research topics of 'An approach to performance portability through generic programming'. Together they form a unique fingerprint.

Cite this