DaStGen-A Data Structure Generator for Parallel C++ HPC Software

Simulation codes often suffer from high memory requirements. This holds in particular if they are memory-bounded, and, with multicore systems coming up, the problem will become even worse as more and more cores have to share the memory connections. To optimise data structures with respect to memory manually is error-prone and cumbersome. This paper presents the tool DaStGen translating classes declared in C++ syntax and augmented by new keywords into plain C++ code. The tool automates the record optimisation, as it analyses the potential range of each attribute, and as the user can restrict this range further. Herefrom, the generated code stores multiple attributes within one single primitive type. Furthermore, the tool derives user-defined MPI data types for each class. Using the tool reduces any algorithm's memory footprint, it speeds up memory-bounded applications such as CFD codes, and it hides technical details of MPI applications from the programmer.

[1]  Éric Renault Extended MPICC to Generate MPI Derived Datatypes from C Datatypes Automatically , 2007, PVM/MPI.

[2]  Christopher R. Johnson,et al.  The SCIRun Computational Steering Software System , 1997, SciTools.

[3]  Miriam Mehl,et al.  A cache‐oblivious self‐adaptive full multigrid method , 2006, Numer. Linear Algebra Appl..

[4]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[5]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[6]  Hans-Joachim Bungartz,et al.  Numerical Simulation of Particle Transport in a Drift Ratchet , 2008, SIAM J. Sci. Comput..

[7]  Satoshi Matsuoka,et al.  ECOOP'97 — Object-Oriented Programming , 1997, Lecture Notes in Computer Science.

[8]  Hans-Joachim Bungartz,et al.  A Parallel Adaptive Cartesian PDE Solver Using Space-Filling Curves , 2006, Euro-Par.

[9]  David E. Keyes,et al.  Towards Realistic Performance Bounds for Implicit CFD Codes , 2000 .

[10]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[11]  Josef Weidendorfer,et al.  A Tool Suite for Simulation Based Analysis of Memory Access Behavior , 2004, International Conference on Computational Science.

[12]  Roger Hillson,et al.  C++2MPI: a software tool for automatically generating MPI datatypes from C++ classes , 2000, Proceedings International Conference on Parallel Computing in Electrical Engineering. PARELEC 2000.

[13]  Stephen Gilmore,et al.  Evaluating the Performance of Skeleton-Based High Level Parallel Programs , 2004, International Conference on Computational Science.

[14]  Norbert Meyer,et al.  Euro-Par 2006 Workshops: Parallel Processing , 2007, Lecture Notes in Computer Science.

[15]  Laurie J. Hendren,et al.  SableCC, an object-oriented compiler framework , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[16]  Jack Dongarra,et al.  Recent Advances in Parallel Virtual Machine and Message Passing Interface, 15th European PVM/MPI Users' Group Meeting, Dublin, Ireland, September 7-10, 2008. Proceedings , 2008, PVM/MPI.