Loading…

Ginkgo—A math library designed for platform portability

In an era of increasing computer system diversity, the portability of software from one system to another plays a central role. Software portability is important for the software developers as many software projects have a lifetime longer than a specific system, e.g., a supercomputer, and it is impo...

Full description

Saved in:
Bibliographic Details
Published in:Parallel computing 2022-07, Vol.111 (C), p.102902, Article 102902
Main Authors: Cojean, Terry, Tsai, Yu-Hsiang Mike, Anzt, Hartwig
Format: Article
Language:English
Subjects:
Citations: Items that this one cites
Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:In an era of increasing computer system diversity, the portability of software from one system to another plays a central role. Software portability is important for the software developers as many software projects have a lifetime longer than a specific system, e.g., a supercomputer, and it is important for the domain scientists that realize their scientific application in a software framework and want to be able to run on one or another system. On a high level, there exist two approaches for realizing platform portability: (1) implementing software using a portability layer leveraging any technique which always generates specific kernels from another language or through an interface for running on different architectures; and (2) providing backends for different hardware architectures, with the backends typically differing in how and in which programming language functionality is realized due to using the language of choice for each hardware (e.g., CUDA kernels for NVIDIA GPUs, SYCL (DPC++) kernels to targeting Intel GPUs and other supported hardware, …). In practice, these two approaches can be combined in applications to leverage their respective strengths. In this paper, we present how we realize portability across different hardware architectures for the Ginkgo library by following the second strategy and the goal to not only port to new hardware architectures but also achieve good performance. We present the Ginkgo library design, separating algorithms from hardware-specific kernels forming the distinct hardware executors, and report our experience when adding execution backends for NVIDIA, AMD, and Intel GPUs. We also present the performance we achieve with this approach for distinct hardware backends. •We discuss the Ginkgo design separating the numerical core from the architecture-specific backends written in the architecture-specific language to allow for performance portability.•We discuss how we ported Ginkgo to AMD GPUs by creating a HIP backend.•We discuss how we ported Ginkgo to Intel GPUs by creating a DPC++ backend.•We present performance results for basic sparse linear algebra kernels and complete Krylov iterative solver running on AMD, NVIDIA, and Intel GPUs.
ISSN:0167-8191
1872-7336
DOI:10.1016/j.parco.2022.102902