Graph-based multi-core higher-order time integration of linear autonomous partial differential equations

Dominik Huber, Martin Schreiber, Martin Schulz

Research output: Contribution to journalArticlepeer-review

3 Scopus citations

Abstract

Modern high-performance computing (HPC) systems rely on increasingly complex nodes with a steadily growing number of cores and matching deep memory hierarchies. In order to fully exploit them, algorithms must be explicitly designed to exploit these features. In this work we address this challenge for a widely used class of application kernels: polynomial-based time integration of linear autonomous partial differential equations. We build on prior work [1] of a cache-aware, yet sequential solution and provide an innovative way to parallelize it, while addressing cache-awareness across a large number of cores. For this, we introduce a dependency graph driven view of the algorithm and then use both static graph partitioning and dynamic scheduling to efficiently map the execution to the underlying platform. We implement our approach on top of the widely available Intel Threading Building Blocks (TBB) library, although the concepts are programming model agnostic and can apply to any task-driven parallel programming approach. We demonstrate the performance of our approach for a 2nd, 4th and 6th order time integration of the linear advection equation on three different architectures with widely varying memory systems and achieve an up to 60% reduction of wall clock time compared to a conventional, state-of-the-art non-cache-aware approach.

Original languageEnglish
Article number101349
JournalJournal of Computational Science
Volume53
DOIs
StatePublished - Jul 2021

Keywords

  • Cache-blocking in time dimension
  • Higher-order time integration
  • Matrix exponentiation
  • Task-based parallelization

Fingerprint

Dive into the research topics of 'Graph-based multi-core higher-order time integration of linear autonomous partial differential equations'. Together they form a unique fingerprint.

Cite this