On Nov 24, 2011, at 11:45 AM, Jed Brown wrote:

> On Thu, Nov 24, 2011 at 11:31, Barry Smith <bsmith at mcs.anl.gov> wrote:
>  You seem to have the tact assumption that the choice is between MPI+X or 
> some PGAS language, this I say is a major straw man! (And I totally agree 
> with you PGAS language are junk and will never take off).
> 
>     What I am suggesting is there is a third alternative that is compatible 
> with MPI (allowing people to transition from MPI to it without rewriting all 
> current MPI based code) and is COMPLETELY library based (as MPI is). This new 
> thing would provide a modern API suitable for many core, for GPUs and 
> distributed computing and the API would focus on moving data and scheduling 
> tasks. The API will be suitable for C/C++/Fortran 90. Now exact details of 
> the API and the model are not clear to me of course. I will be pushing the 
> MCS CS folks in this direction because I don't see any other reasonable 
> alternative (MPI+X is fundamentally not powerful enough for the new 
> configurations and PGAS are a joke).
> 
> I just wrote the following in a private discussion with Barry and Matt. 
> Copied here for the rest of you.

   I answered this in a private discussion and Matt and Jed and totally 
demolished his arguments.

   Barry

> 
> Do you want to abandon MPI as a foundation for distributed memory, or do you 
> just want a reliable way to manage multicore/SMT? I am far from convinced 
> that we can't or shouldn't build our ultimate communication abstraction on 
> top of MPI. In my opinion, the job of MPI is to abstract non-portable 
> network-level details to provide a minimal set of primitives on which to 
> write performant code and to implement libraries. Of course there is some 
> unnecessary cruft, and there are occasional holes where networks can do cool 
> things that are useful to libraries, but have not been exposed through MPI. 
> But cleaning that stuff up is what I think new MPI standards should be 
> targeting.
> 
> I do not believe the goal of MPI is to provide abstractions that are directly 
> usable by applications. That is the scope of domain-specific and 
> general-purpose libraries. If an abstraction can be implemented with portable 
> performance using primitives in MPI, then it should *not* be added to MPI.
> 
> I know that you want these cool high-level persistent communication 
> primitives. I want them too, but I don't want them *inside* of MPI, I want 
> them in their own portable library. For the library to be portable, its 
> network operations should be defined using some portable low-level 
> communication interface. If only one of those existed...
> 
> We can deal with distribution later so it's not a pain for users to get these 
> things installed.
> 
> As a general rule, I would much prefer that these high-level primitives be 
> libraries that use MPI (and are created using communicators), otherwise they 
> will not compose with other libraries and I think will suffer the fate of the 
> PGAS languages, Smalltalk, Lisp, GA, etc.


Reply via email to