[MPI3-IO] shared file pointer

Torsten Hoefler htor at illinois.edu
Wed Feb 1 15:18:41 CST 2012


On Wed, Feb 01, 2012 at 03:16:30PM -0600, Dries Kimpe wrote:
> 
> * Torsten Hoefler <htor at illinois.edu> [2012-02-01 15:04:41]:
> 
> > > 	Torsten?  (CC'd)
> > There are obviously no filehandles in NBC. The scan operations match in
> > issue-order and the buffers specified have to be disjunct (as for any
> > nonblocking communication in MPI). I.e., the two NBCs do not influence
> > each other from a correctness perspective.
> 
> Meaning that the ordering issue for non-blocking collectives (but not
> mixed case) is straigtforward, right?
yes

> Implementation of MPI_File_Iread_ordered:
>    MPI_Iscan (amount of local data)
>    <make progress>
>    When MPI_Iscan completes:
>    update shared file pointer <atomic: one rank can do this>
>    MPI_File_iread_at 
Not really --- one would have to "collect" all other (noncollective)
operations that update the shared FP and make sure they update it
*after* the scan completed.

> As long as it is possible to adjust and get the shared file pointer
> (which is what I'll be proposing in the ticket I've talked about to you
> guys) it is possible to do this and not have 'undefined' behaviour.
> 
> Also note that currently, ROMIO already has this functionality.
> (As this is how MPI_File_read_shared is implemented).
> 
> Because of the MPI_Iscan properties, a second MPI_File_iread_ordered could
> not proceed before the first one finished the scan phase, hence they would
> be properly ordered.
Well, they *can* complete out of order (not match though!) you need to
make sure the order it preserved.

> Now, for mixing in indepentent shared FP operations, while not undefined,
> the ordering would not be determined and will depend on what happens on
> other nodes and other things.
> 
> As in:
> 
> (1) MPI_File_iread_ordered
> ...
> (2) MPI_File_read_shared
> 
> (3) MPI_Wait ()
> 
> If (1) can complete the scan before the call to (2), (1) will appear to
> logically execute before (2). In all other cases, (1) will logically
> execute before (2).
> 
>    Dries



-- 
 bash$ :(){ :|:&};: --------------------- http://www.unixer.de/ -----
Torsten Hoefler         | Performance Modeling and Simulation Lead
Blue Waters Directorate | University of Illinois (UIUC)
1205 W Clark Street     | Urbana, IL, 61801
NCSA Building           | +01 (217) 244-7736



More information about the mpiwg-io mailing list