TY - JOUR
T1 - A precompiler to reduce the memory footprint of multiscale PDE solvers in C++
AU - Bungartz, H. J.
AU - Eckhardt, W.
AU - Weinzierl, T.
AU - Zenger, C.
N1 - Funding Information:
This work has partially been funded by the DFG project HA 1517/25-1/2, by DFG’s research unit FOR493 and by TUM’s International Graduate School of Science and Engineering (IGSSE) as part of the Excellence Initiative of the German Federal and State Governments.
PY - 2010/1
Y1 - 2010/1
N2 - 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.
AB - 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.
KW - Code generation
KW - Data compaction and compression
KW - Multigrid and multilevel methods
UR - http://www.scopus.com/inward/record.url?scp=69549111267&partnerID=8YFLogxK
U2 - 10.1016/j.future.2009.05.011
DO - 10.1016/j.future.2009.05.011
M3 - Article
AN - SCOPUS:69549111267
SN - 0167-739X
VL - 26
SP - 175
EP - 182
JO - Future Generation Computer Systems
JF - Future Generation Computer Systems
IS - 1
ER -