[MPI3-IO] shared file pointer
Adam T. Moody
moody20 at llnl.gov
Wed Feb 22 19:25:04 CST 2012
I will say, though, given that we can now have multiple outstanding
non-blocking collective I/O calls, it would be really nice to be able to
do the following:
MPI_File_iread_ordered()
MPI_File_iread_ordered()
MPI_File_iread_ordered()
MPI_Waitall()
This provides a natural way for someone to read in three different
sections from a file -- just issue all the calls and sit back and wait.
However, this can only be done if the pointer is updated in the
initiation call.
-Adam
Adam T. Moody wrote:
>Hi Mohamad and Dries,
>Yes, I see your point now about "using the corresponding blocking
>collective routines when ... the end call is issued". I don't think
>that's what the standard intended, but you're very right in that the
>text says two different things. Some statements say the pointer is
>updated by the call that initiates the operation, i.e., the _begin call,
>but this says the opposite in that an implementation is allowed to do
>all the work (including updating of the pointer) in the _end call.
>Thus, it's not clear whether the pointer will always be updated after
>returning from the _begin call.
>-Adam
>
>
>Mohamad Chaarawi wrote:
>
>
>
>>Hi Adam,
>>
>>
>>
>>
>>
>>>This statement says that an app can't know whether the begin call will
>>>synchronize or not, so a portable app must assume that the call does
>>>synchronize. However, the earlier statements say that regardless of
>>>whether the MPI library implements the begin call as blocking or
>>>non-blocking, the app is always guaranteed that the shared file
>>>pointer will be updated upon return from the begin call.
>>>
>>>
>>>
>>>
>>Yes but I agree with Dries that there is a contradiction, and it can be
>>interpreted by a developer either way, i.e. the pointer can be either
>>updated in the begin or end call..
>>
>>
>>
>>
>>
>>>With split collectives, the "begin" call that initiates the operation
>>>*can* block, but with non-blocking collectives (as currently defined),
>>>the "i" call that initiates the operation *never* blocks. It's this
>>>difference between split collectives and non-blocking collectives that
>>>causes the difficulty here. To efficiently meet the requirements of
>>>updating the shared file pointer, we'd really like to update the
>>>pointer during the "i" call, but this would require the "i" call to
>>>block.
>>>
>>>
>>>
>>>
>>I do not have a strong opinion here, as we don't really use this
>>feature.. But I can see how this could complicate things more to the
>>user and the developer, which makes me more inclined to keep the
>>ordering undefined.
>>That said, we do want to start working on a ticket for new MPI-I/O
>>features that would actually track order inside the implementation for
>>nonblocking file access and manipulation routines (more like queuing)..
>>We discussed that at the last Chicago meeting.. This is not MPI-3.0
>>bound though :)
>>
>>Thanks,
>>Mohamad
>>
>>
>>_______________________________________________
>>MPI3-IO mailing list
>>MPI3-IO at lists.mpi-forum.org
>>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-io
>>
>>
>>
>>
>
>
>
>
More information about the mpiwg-io
mailing list