
Doug Gregor wrote:
I think there's also a philosophical difference between the two. OOMPI provides some syntactic innovations (such as ports) that can make MPI easier to use. Boost.MPI is a little more "purist", attempting to keep the flavor of the C MPI bindings while adapting better to modern C++. We still "send" in the same way as "MPI_Send" in Boost.MPI. Of course, should something like ports be useful, they could be added as syntactic sugar.
I'm not terribly familiar with OOMPI but my brief look-see got me interested in the ports feature. Something like this on top of Boost.MPI would be great. Even better would be a communication interface that could work with various underlying technologies (MPI, Boost.asio, Boost.interprocess, etc.). I don't know how practically realizable it is to do with while maintaining performance, though. A while back I did some experiments with a colleague to hack up a UPC compiler to recognize UPC constructs in C++. It turns out that one can do a bunch of nifty things with template metaprogramming in the context of parallel computation in the style of UPC. I wonder if it would be possible to emulate something like a UPC++ with creative operator overloading, a parallel communication library and template metaprogramming wizardry? I don't think it would be possible to approach the speed of a native UPC++ but it might be interesting for some machine architectures such as clusters or other low-bandwidth systems. -Dave