Subject: Re: [boost] "I want everything" should build "out of the box" (on Windows)
From: John Phillips (phillips_at_[hidden])
Date: 2009-07-28 11:57:21
> On Tue, Jul 28, 2009 at 8:45 AM, OvermindDL1<overminddl1_at_[hidden]> wrote:
>> Also, I have never used an MPI system, but from quick perusing of what
>> MPI based systems look like, why does Boost.MPI create a full MPI
>> system instead of just create a glue on top of it? Especially since
>> all the MPI system I see seem to cost a rather ridiculous amounts of
>> money? I am probably missing something about the MPI standard though,
>> but I do not see what from a quick reading that would warrant such
>> costs I see.
> why doesn't Boost.MPI create a full MPI*
Christopher's answer is the basic reason, but there are some other
First, the MPI specification is big. It is documented at the MPI
Forum, and is being revised as we speak. You can read the MPI 2.1
specification documents on line, or buy the 608 page book. Meetings on
2.2 and 3.0 are currently ongoing.
Second is that to be useful the implementations have to be carefully
tuned and tested. Some of the comercial packages simplify this by being
very platform dependent. A boost implementation would not want to do
that, and so the implementation gets harder. However, MPI is used for
ultra high performance codes, so even a few percent performance
difference is reason for a user to choose something else. Boost doesn't
have the testing resources to play in this game.
Third, there are a few widely used and high quality open source
packages already available. OpenMPI is the best known and most modern
but others include LamMPI, LaMPI, MPICH and more.Many installations are
locked in to certain systems because they have gone through the
extensive process of installing, tuning and getting to know one
implementation. You would have to supply a lot of value to get them to
change. Boost.MPI is intentionally designed to be package agnostic.
Whatever the installation chooses, Boost.MPI should work with it.
Fourth, MPI includes Fortran and C APIs, as well as a C++ API that is
different from what Boost.MPI provides. To make a useful version, these
would have to be included. Now is a particularly bad time to start the
C++ part of this work, however. News from the MPI Forum is that the
members of the forum think Boost.MPI is a far better C++ interface than
the one they provided. They have also noticed that Boost.MPI uses the C
bindings under the hood and not the C++ bindings. This combination has
them considering first depricating and then removing the C++ bindings
from the MPI specification in favor of telling people to look to
libraries like Boost.MPI.
In all, I just don't think trying to implement the underlying MPI as
part of boost is a great choice. Maybe you could do it and convince me
I'm wrong, but I think there are better uses for your time. (Which might
include contributing to one of the existing MPI packages.)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk