Having had experience with both PVM and MPI, I can only say:
"Bring on the Co-arrays !"
They will, as Van clearly outlines, save people time and headaches.
Bruce Hedley
Atomic Energy of Canada Ltd
-----Original Message-----
From: Fortran 90 List [mailto:[log in to unmask]]On Behalf
Of Van Snyder
Sent: August 26, 2008 2:17 PM
To: [log in to unmask]
Subject: Re: j3 responses to public comments
On Tue, 2008-08-26 at 09:52 -0700, Aleksandar Donev wrote:
> No option is the best.
So let's not let the perfect be the enemy of the good.
> Parallel programming will be difficult and
> require work for some time to come.
In Fortran, parallel programming using MPI or PVM requires much more
labor than programming using CoArrays will.
Try shipping around a large (non SEQUENCE) structure.
If you want to respect Fortran's strong typing, you need one array for
each intrinsic type and kind. Then you need one assignment statement
for each component to copy stuff to the appropriate array element, and
another one to copy it from the appropriate array element to the
component on the receiving end. Then you need an MPI send for each
array, and an MPI receive for each one at the other end. When you
change the structure, you have to be careful to re-arrange the copying
to and from the arrays consistently. If you have only 30 components of
four different types and kinds, that's eight array declarations and 68
lines of executable code. If you've written explicit interfaces for
your MPI routines and put them in a module, add two USE statements.
Altogether something like 70 lines of code to maintain.
With CoArrays it's A[q] = A (or A = A[q]) to send it to image Q from the
current image (or vice versa).
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.
If you have a large MPI code, and somebody tells you that you need to
run it on a machine on which SHMEM is far more efficient, do you invest
the labor to convert it, or just use the machine inefficiently? Or do
you write an MPI-to-SHMEM layer, and hope to pound the square peg into
the round hole correctly and reasonable efficiently?
In addition to their reduction in labor cost, an important feature of
CoArrays, or any other language-based scheme, is that different
transport schemes can be used in different environments, with no change
to the code. The processor can choose which one to use, perhaps even
using different ones for different paths in the same application.
CONFIDENTIAL AND PRIVILEGED INFORMATION NOTICE
This e-mail, and any attachments, may contain information that
is confidential, subject to copyright, or exempt from disclosure.
Any unauthorized review, disclosure, retransmission,
dissemination or other use of or reliance on this information
may be unlawful and is strictly prohibited.
AVIS D'INFORMATION CONFIDENTIELLE ET PRIVILÉGIÉE
Le présent courriel, et toute pièce jointe, peut contenir de
l'information qui est confidentielle, régie par les droits
d'auteur, ou interdite de divulgation. Tout examen,
divulgation, retransmission, diffusion ou autres utilisations
non autorisées de l'information ou dépendance non autorisée
envers celle-ci peut être illégale et est strictement interdite.
|