On Wed, 2008-08-27 at 19:26 +0100, Harvey Richardson wrote:
> Van Snyder wrote:
> > Cray people have commented that converting some codes from MPI to
> > CoArrays resulted in substantial performance gains. I speculate that
> > this is because CoArrays mapped to SHMEM under the covers.
>
> Maybe, but you need the details. Was it one-sided MPI? I'm not
> surprised that you can beat a message-passing API by another
> approach on a shared-memory system because there is a good chance
> you are doing extra copying within the message-passing library.
>
> There is some quite interesting comparative work you can find by
> Google searches related to the NAS Parallel Benchmarks. For example...
>
> http://www.gwu.edu/~upc/publications/ppopp05.pdf
>
> Harvey
The point of my remark was not that a shared-memory data transport
system might be more efficient than one that uses message passing.
Rather, with CoArrays, the compiler and its run-time library can choose
which one to use, perhaps dynamically, without asking you to rewrite
your code.
This is actually a very old idea that somehow never took hold widely.
Read "On the problem of uniform references to data structures" by
Charles M. Geschke and James G. Mitchell in IEEE Transactions on
Software Engineering SE-1, 2 (June 1975) pp 207-219 and "Uniform
referents: An essential property for a software engineering language" by
Douglas T. Ross in Software Engineering (J. T. Tsou, Ed.), Academic
Press (1969) pp 91-101.
Then read "On the criteria for decomposing systems into modules" by
David L. Parnas in CACM 15, 12 (Dec 1972) pp 1053-1058. Unfortunately,
almost everybody has followed Parnas's advice and stopped thinking
because they believe they've solved the problem. They've actually
worked around the problem in a reasonable but frequently-suboptimal way.
|