The Design and Evolution of the MPI-2 C++ Interface
ISCOPE '97 Proceedings of the Scientific Computing in Object-Oriented Parallel Environments
Object-Oriented MPI (OOMPI): A Class Library for the Message Passing Interface
MPIDC '96 Proceedings of the Second MPI Developers Conference
Generic programming for high-performance scientific computing
Generic programming for high-performance scientific computing
Design and implementation of a high-performance MPI for C# and the common language infrastructure
Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
Object-Oriented Message-Passing in Heterogeneous Environments
Proceedings of the 15th European PVM/MPI Users' Group Meeting on Recent Advances in Parallel Virtual Machine and Message Passing Interface
OpenMP extensions for generic libraries
IWOMP'08 Proceedings of the 4th international conference on OpenMP in a new era of parallelism
A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers
Software—Practice & Experience - Focus on Selected PhD Literature Reviews in the Practical Aspects of Software Technology
Hi-index | 0.00 |
The Message Passing Interface (MPI) is the de facto standard for writing message passing applications. Much of MPI's power stems from its ability to provide a high-performance, consistent interface across C, Fortran, and C++. Unfortunately, with cross-language consistency at the forefront, MPI tends to support only the lowest common denominator of the three languages, providing a level of abstraction far lower than typical C++ libraries. For instance, MPI does not inherently support standard C++ constructs such as containers and iterators, nor does it provide seamless support for user-defined classes. To map these common C++ constructs into MPI, programmers must often write non-trivial boiler-plate code and weaken the type-safety guarantees provided by C++. This paper describes several ideas for modernizing the C++ interface to MPI, providing a more natural syntax along with seamless support for user-defined types and C++ Standard Library constructs. We also sketch the C++ techniques required to implement this interface and provide a preliminary performance evaluation illustrating that our modern interface does not imply unnecessary overhead.