[MPI3-IO] [EXTERNAL] New MPI-IO routines
dkimpe at mcs.anl.gov
Thu May 24 16:05:08 CDT 2012
* Mohamad Chaarawi <chaarawi at hdfgroup.org> [2012-05-24 15:53:04]:
> Hi Dries,
> On 5/24/2012 3:28 PM, Dries Kimpe wrote:
> > Also, what (if anything) would prevent implementing this on top of MPI,
> > using existing the MPI_File_iread/iwrite routines?
> How would you do this efficiently and asynchronously?
> you need to set atomic mode to get sequential consistency (which is not
> pretty and I don't think it is well supported). Even with atomic mode
> set, how would you guarantee serial execution order?
For each call, detect if there is a dependency on a previously issued but
not yet completed operation by checking the active range list (see below).
- If there is none,
issue normal MPI call (MPI_File_iread/iwrite) and record bytes touched in
the file (exactly, or approximation) in the active range list.
- If there is, don't issue the operation until the operation(s) it depends
on are completed, instead store it on an ordered queue (basically the
parameters passed to the function).
Using a combination of generalized requests (to hand out to the
application even if the underlying operation has not yet been started),
and a progress method (polling / thread) to start blocked operations when
the dependencies are satisfied should do it easily.
- test any of the underlying MPI_File request handles.
Remove completed entries from the active range list.
- Any time an operation completes, walk the queue of not-yet-started
operations and issue any operation which no longer is blocked.
Basically, exactly the same the MPI implementation would have to do if
this was provided by the MPI library.
No need to enable atomic mode...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 198 bytes
Desc: not available
More information about the mpiwg-io