[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MPI_FINALIZE



On Thu, May 10, 2001 at 10:49:50AM +0200, Rolf Rabenseifner wrote:
> (This mail is a response to the Mail of Jeff and the replies from Hubert and Tony) 
> 
> As far as I know, an MPI routine is "collective" over a group of 
> processes means that all these processes have to call the  
> MPI routine in a way, that the collective MPI routine is allowed to
> make a barrier synchronization internally,
> but it does __NOT__ mean that the MPI routine must do such a barrier. 
> 
> I.e. it is always allowed to implement MPI_Finalize in a way, 
> that it delivers all pending messages to the destination processes
> and then it exits the process in a way, that the other MPI processes
> are not touched (or killed or...).
> 
> Therefore, the sentence "MPI_FINALIZE is collective over "the
> union of all processes that have been and continue to be connected"  
> has no impact on the implementation.
> It has also no impact on the application, because it is trivial, that
> all processes have to call MPI_Finalize exactly once.
> 
> And I do not see any dfference between "are connected" and 
> "have been and continue to be connected".
> 
> And each implementor should check, whether it makes sense 
> to do a barrier inside of MPI_Finalize or whether such a barrier is
> mainly a performance drawback.
> 
> Is my answer correct, or does I have overlooked some lines in 
> the standard that imply a barrier inside of MPI_Finalize? 
> 
> Rolf 
> 

Correct handling of my most disliked feature in MPI, the cancelling of
sends, seems to require a barrier or something similar in
MPI_Finalize.

See example 3.4 in section 3.2.2 (Clarification of MPI_Finalize) of the MPI-2
standard. Pages 23-24.

-nick