Re: Clarification of close semantics

Linda Stanberry (linda@anduin.ocf.llnl.gov)
Fri, 28 Feb 1997 15:08:01 -0800 (PST)

> My understanding is that this case is no different from the following
> clearly legal case:

> Process 0 Process 1

> MPI_Send( node 1, ...)
> MPI_Finalize()
> MPI_Receive( node 0, ...)
> MPI_Finalize()

> The MPI implementation is responsible for ensuring that all requests
> completed by the user are actually carried out by the system (except
> when exceptional conditions prevent, e.g, memory overflow).
> MPI does not require the user to synchronize, nor does it require the
> implementation to synchronize, but it does require the implementation
> to ensure that the user's unsynchronized code works.

I think this is different from your example in that MPI_Close is a
collective call and (if I got this right) MPI_Finalize is not? I'm
still learning MPI-1 semantics, obviously, but if I understand them
correctly, it is erroneous for a collective call to be issued
without synchronizing (making sure no other op is pending). The wording
for MPI_CLOSE is a little blurry about whether it is erroneous to call
MPI_CLOSE without synchronizing (1) just on all threads on this node or
(2) on all threads on all nodes to guarantee that there are no outstanding
requests on the given file handle.

Linda Stanberry
lstanberry@llnl.gov