You're right, I forgot a MPI_Finalize() in a #ifdef the line before...
Thank you!

Le Friday 07 May 2010 15:26:28 Jeff Squyres, vous avez écrit :
> 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.

Reply via email to