[MPI3 Fortran] [Fwd: Library-based ASYNCHRONOUS I/O and SYNC MEMORY]

Iain Bason Iain.Bason at Sun.COM
Tue Sep 9 08:13:55 CDT 2008


On Sep 9, 2008, at 8:48 AM, Jeff Squyres wrote:

> Separation and asynchronocity between communication and computation  
> is a well-known philosophy (I don't know the first machine that had  
> dedicated communication co-processors, but it was many years ago --  
> probably more than 15-20?).  I'm guessing that it's pretty much  
> exactly the same arguments for why Fortran has a built-in  
> asynchronous IO library.

Yes, that's elementary.  It doesn't answer my question, though.  Let  
me attempt to rephrase the question.

A programming language allows the programmer to describe what the  
program does.  All reasonable languages have semantics that are  
defined (the definition may be poor, be it's there).  The defined  
semantics may leave certain decisions up to the compiler (e.g., x+y+z  
could be equal to (x+y)+z or x+(y+z) according to the Fortran standard).

We are looking for a way to describe the semantics of MPI_IRECV/ 
MPI_ISEND/MPI_WAIT (and other similar functions).  We all know what  
the actual semantics are.  My question is do we really need to have  
the program describe them precisely?  Is there any advantage to  
conveying to the compiler that the buffer's contents may change at any  
time between an MPI_IRECV call and its corresponding MPI_WAIT call?   
Is it not sufficient just to say the MPI_WAIT may be considered to  
modify any variable?  If that inhibits any optimizations that might  
have been performed with more precise information, are those  
optimizations actually important?

Iain




More information about the mpiwg-fortran mailing list