[MPI3-IO] shared file pointer

Adam T. Moody moody20 at llnl.gov
Thu Feb 16 14:43:35 CST 2012


Hi guys,
My interpretation of the standard is that the following use of split 
collectives is ok:

MPI_File_read_ordered_begin()
MPI_File_read_shared()
MPI_File_read_ordered_end()

This understanding comes from the following:

p405, 17-9
"In general, each I/O operation leaves the file pointer pointing to the 
next data itme after the last one that is accessed by the operation.  In 
a nonblocking or split collective operation, the pointer is updated by 
the call that initiates the I/O, possibly before the access completes."

and:

p417, 1-2
"After a shared file pointer operation is initiated, the shared file 
pointer is updated to point to the next etype after the last one that 
will be accessed."

Assuming this interpretation is correct, when removing split collectives 
from an existing app, then it's natural for the user to want to replace 
the above with:

MPI_File_iread_ordered()
MPI_File_read_shared()
MPI_Wait()

If possible, we should strive to allow this.  I can see cases where it 
would be useful, e.g., rank 0 always reads some special fields, perhaps 
the header of the next shared array.  And it's consistent with current 
behavior of the split collectives.

However, to do this, the read_shared() call would need to block until 
all procs have called iread_ordered().  This does pose two difficulties:
    1) It requires MPI to track any outstanding non-blocking collective 
calls so that it knows to wait on them.
    2) It forces read_shared() into this limbo between being local / not 
local.  It's supposed to be a local call, but in this context, it can't 
return until all other procs have called the collectives that come 
before it.  So is it still "local"?

Assuming #1 doesn't impose too big a burden on MPI implementations, then 
we need to decide whether the problem in #2 is a show stopper or not.
-Adam



Finally, there is

Quincey Koziol wrote:

>Hi Mohamad,
>
>On Feb 12, 2012, at 11:52 AM, Mohamad Chaarawi wrote:
>
>Hi All,
>
>So after laying out these choices, I see 3 options for the nbcio ticket:
>
>1) Keep it the way it is, and adding an advise to users saying that intermixing nonblocking collective shared fp operation and independent shared fp operations is undefined.
>
>2) Make the previous case illegal.
>
>3) remove the nonblocking ordered operations from this ticket (to be handled in a separate ticket)
>
>keep in mind, as mentioned previously, we can't provide a prototype implementation for those routines. From our side, if the forum accepts only a pseudo code implementation for those routines, we  would like to proceed with option 1, otherwise we would go with option 3.
>
>Sounds good to me.
>
>Quincey
>
>
>Any other opinions?
>
>Thanks,
>Mohamad
>
>On 2/6/2012 1:19 PM, Dries Kimpe wrote:
>
>Yes, that's an accurate summary.
>
>  Dries
>
>* Mohamad Chaarawi <chaarawi at hdfgroup.org><mailto:chaarawi at hdfgroup.org> [2012-02-06 10:48:50]:
>
>
>
>Hi Dries,
>
>
>I'm jumping late on this thread, but to summarize so far (and correct me
>if I made a mistake understanding), we have two cases:
>
>
>1) two non-blocking collective shared FP operations:
>
>
>        MPI_File_iread_ordered
>        MPI_File_iread_ordered
>
>
>This will be ordered in the sense that the user will see that the first
>operations will occur before the second one.
>
>
>2) mixed collective and independent
>
>
>         MPI_File_iread_ordered
>        MPI_File_read_shared
>
>
>Where the choices that you mentioned apply, right?
>
>
>  * make that case illegal
>  * make it undefined
>
>
>As you mentioned that since the split collectives leave it as undefined,
>makes me lean more towards keeping it that way.
>
>
>Thanks,
>Mohamad
>
>
>
>
>
>
>On 02/02/2012 04:22 PM, Dries Kimpe wrote:
>
>
>There might be some use in 'undefined ordering' as opposed to 'illegal'
>for those application that don't care about the ordering.
>
>
>Applications that do rely on the ordering can easily use the existing MPI
>functions to enforce ordering.
>
>
>So, the way I see it: 2 choices:
>1) Say order is undefined in the standard (basically there's a precedent
>with the split collective versions).
>2) Say it is illegal. The user can duplicate the file handle and easily
>implement their own version of what they need.
>
>
>(2) is easier for the implementor.
>
>
>
>
>
>
>_______________________________________________
>MPI3-IO mailing list
>MPI3-IO at lists.mpi-forum.org<mailto:MPI3-IO at lists.mpi-forum.org>
>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-io
>
>
>
>
>_______________________________________________
>MPI3-IO mailing list
>MPI3-IO at lists.mpi-forum.org<mailto:MPI3-IO at lists.mpi-forum.org>
>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-io
>
>
>_______________________________________________
>MPI3-IO mailing list
>MPI3-IO at lists.mpi-forum.org<mailto:MPI3-IO at lists.mpi-forum.org>
>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-io
>
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>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