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.
[1]
Xiaobo Sharon Hu,et al.
Generic programming for high-performance scientific computing
,
2003
.
[2]
Andrew Lumsdaine,et al.
The Design and Evolution of the MPI-2 C++ Interface
,
1997,
ISCOPE.
[3]
Michael Wolf,et al.
Object‐oriented analysis and design of the Message Passing Interface
,
2001,
Concurr. Comput. Pract. Exp..
[4]
Gregory V. Wilson,et al.
Parallel Programming Using C
,
1996
.
[5]
Jeffrey M. Squyres,et al.
Object Oriented MPI (OOMPI): a class library for the Message Passing Interface
,
1996,
Proceedings. Second MPI Developer's Conference.
[6]
Andrew Lumsdaine,et al.
Generic programming for high‐performance scientific applications
,
2002,
JGI '02.