On Apr 30, 2010, at 5:59 AM, N.M. Maclaren wrote: > MPI quite rightly does not specify this, because the matter is very system- > dependent, and it is not possible to return the exit code (or display it) > in all environments. Sorry, but that is reality.
Correct -- MPI intentionally does not say what happens after MPI_FINALIZE. MPI intentionally doesn't even specify much about how to start an MPI job (just like Fortran, actually). > The last paragraph of the specification of MPI_Finalize makes it clear > that it is the USER'S responsibility to return an exit code to the system > for process 0, and that what happens for other ones is undefined. Or > fairly clear - it could be stated in so many words, rather than being > implicit in the requirement on implementors. I don't think that's quite feasible, because the user doesn't directly control what mpirun returns. So (many) implementations *have* to choose something from their job start agent (mpirun or mpiexec or whatever). I think OMPI's behavior of returning 0 from mpirun if and only if all processes call MPI_FINALIZE successfully *and* return 0 is good. Return arbitrary nonzero if some process aborts (calling MPI_ABORT, not calling MPI_INIT, not calling MPI_FINALIZE, or otherwise). Return any of the individual MPI processes' non-zero exit status if all call MPI_FINALIZE but some (or all) don't return an exit status of 0 (I don't have a strong opinion about which one to return -- e.g., the *first* one to return a non-zero exit value, the *highest* or *lowest* non-zero exit status, ...etc.). -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/