A precompiler to reduce the memory footprint of multiscale PDE solvers in C++

H. J. Bungartz, W. Eckhardt, T. Weinzierl, C. Zenger

Research output: Contribution to journalArticlepeer-review

10 Scopus citations

Abstract

A PDE solver's value is increasingly co-determined by its memory footprint, as the increase of computational multicore power overtakes the memory access speed, and as memory restricts the maximum experiment size. Tailoring a code to require less memory is technical challenging, error-prone, and hardware-dependent. Object-oriented code typically consumes much memory, though developers favour such high-level languages offering meaningful models and good maintainability. We augment the language C++ with new keywords branding records to be memory-critical. Our precompiler DaStGen then transforms this augmented specification into plain C++ optimised for low memory requirements. Hereby, it encodes multiple attributes with fixed range within one variable, and it reduces the number of bits per floating point value. The tool also generates one user-defined MPI data type per class and, thus, facilitates the construction of parallel codes with small messages.

Original languageEnglish
Pages (from-to)175-182
Number of pages8
JournalFuture Generation Computer Systems
Volume26
Issue number1
DOIs
StatePublished - Jan 2010

Keywords

  • Code generation
  • Data compaction and compression
  • Multigrid and multilevel methods

Fingerprint

Dive into the research topics of 'A precompiler to reduce the memory footprint of multiscale PDE solvers in C++'. Together they form a unique fingerprint.

Cite this