Efficient automated marshaling of C++ data structures for MPI applications
- 1 April 2008
- conference paper
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE) in 2008 IEEE International Symposium on Parallel and Distributed Processing
Abstract
We present an automated approach for marshaling C++ data structures in high performance computing (HPC) applications. Our approach utilizes a graphical editor through which the user can express a subset of an object's state to be marshaled and sent across a network. Our tool, MPI serializer, then automatically generates efficient marshaling and unmarshaling code for use with the message passing interface (MPI), the predominant communication middleware for HPC systems. Our approach provides a more comprehensive level of support for C++ language features than the existing state of the art, and does so in full compliance with the C++ language standard. Specifically, we can marshal effectively and efficiently non-trivial language constructs such as polymorphic pointers, dynamically allocated arrays, non-public member fields, inherited members, and STL container classes. Additionally, our marshaling approach is also applicable to third party libraries, as it does not require any modifications to the existing C++ source code. We validate our approach through two case studies of applying our tool to automatically generate the marshaling functionality of two realistic HPC applications. The case studies demonstrate that the automatically generated code matches the performance of typical hand-written implementations and surpasses current state-of-the-art C++ marshaling libraries, in some cases by more than an order of magnitude. The results of our case studies indicate that our approach can be beneficial for both the initial construction of HPC applications as well as for the refactoring of sequential applications for parallel execution.Keywords
This publication has 15 references indexed in Scilit:
- A Maintainable Software Architecture for Fast and Modular Bioinformatics Sequence SearchPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2007
- MPI Pre-Processor: Generating MPI Derived Datatypes from C Datatypes AutomaticallyPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2006
- An empirical study to compare two parallel programming modelsPublished by Association for Computing Machinery (ACM) ,2006
- Optimizing Marshalling by Run-Time Program GenerationLecture Notes in Computer Science, 2005
- Evolving Neural Networks through Augmenting TopologiesEvolutionary Computation, 2002
- Efficient Java RMI for parallel programmingACM Transactions on Programming Languages and Systems, 2001
- Will C++ be faster than Fortran?Lecture Notes in Computer Science, 1997
- Adaptive parameter passingLecture Notes in Computer Science, 1996
- A metaobject protocol for C++ACM SIGPLAN Notices, 1995
- Determinants of program repair maintenance requirementsCommunications of the ACM, 1984