Re: [MPI3-IO] [EXTERNAL] New MPI-IO routines
* Mohamad Chaarawi <[email protected]> [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. Using poll: - 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... Dries
participants (1)
-
Dries Kimpe