Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] About the correct use of DIET_Finalize()
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2010-05-07 09:26:28


The error message is telling you that you have invoked MPI_Finalize more than once n a single process. The issue is that you can't do that -- you should only invoke MPI_Finalize exactly once in a given process. It's not an issue of ongoing communications when you invoke MPI_Finalize.

It's ok for different MPI processes to invoke MPI_Finalize at different times; Open MPI should figure that out without problem.

FWIW, you should also be able to invoke the MPI_Finalized function to see if MPI_Finalize has already been invoked.

On May 7, 2010, at 12:54 AM, Yves Caniou wrote:

> Dear All,
>
> My parallel application ends when each process receives a msg, done in an
> async way (but my question still arise if sync comm were used, see the ref to
> the manpage). Senders call MPI_Finalize() after a call to MPI_Wait() and
> receivers call MPI_Finalize() after having received the message.
>
> An execution gives me that all proc finish as planned but I obtain the
> following errors (times the number of processor used)
> --------------------------------
> With openMPI 1.4.2 compiled with gcc-4.5 on a Quad-Core AMD Opteron(tm)
> Processor 8356
> *** The MPI_Finalize() function was called after MPI_FINALIZE was invoked.
> *** This is disallowed by the MPI standard.
> *** Your MPI job will now abort.
> Abort after MPI_FINALIZE completed successfully; not able to guarantee that
> all other processes were killed!
>
> With openMPI 1.4.1 (debian package), Intel(R) Core(TM)2 Duo CPU P9600
> *** An error occurred in MPI_Finalize
> *** after MPI was finalized
> *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
> Abort after MPI_FINALIZE completed successfully; not able to guarantee that
> all other processes were killed!
> ---------------------------------
>
> I think it comes from the fact that, as mentionned in the man of
> MPI_Finalize():
> For example, a successful return from a blocking communication opera-
> tion or from MPI_Wait or MPI_Test means that the communication is com-
> pleted by the user and the buffer can be reused, but does not guarantee
> that the local process has no more work to do.
>
> Nonetheless, if MPI_Finaliaze() is called before that the exchange of messages
> really takes place, receivers wouldn't call their MPI_Finalize(), but would
> just be issuing an abort thing, no?
>
> Well, I'm perplex. When do I know when my proc can make the call to
> MPI_Finalize() and obtain an execution without error messages?
>
> Thank you for any help.
>
> .Yves.
>
> --
> Yves Caniou
> Associate Professor at Université Lyon 1,
> Member of the team project INRIA GRAAL in the LIP ENS-Lyon,
> Délégation CNRS in Japan French Laboratory of Informatics (JFLI),
> * in Information Technology Center, The University of Tokyo,
> 2-11-16 Yayoi, Bunkyo-ku, Tokyo 113-8658, Japan
> tel: +81-3-5841-0540
> * in National Institute of Informatics
> 2-1-2 Hitotsubashi, Chiyoda-ku, Tokyo 101-8430, Japan
> tel: +81-3-4212-2412
> http://graal.ens-lyon.fr/~ycaniou/
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/