To: mpi-external @ mcs.anl.gov
cc: (bcc: Marc Snir/Watson/IBM Research)
Subject: Re: new version of threads section
I really like defining the new MPI_THREAD_INIT() routine as an alternative
to MPI_INIT(). Some random thoughts:
- What happens if MPI is unable to provide the requested level of
strictness? Is this an error?
MPI should provide as much strictness as it can, and let the user abort if
this is not enough. I shall clarify
- The names for the different degees of strictness are a bit of a mess; it
would not be immediately obvious to the casual observer that they are
related. So I would propose the following (still imperfect) names instead:
MPI_THREAD_QUERY (see below)
I am not sure these names are obvious either. Should think about it.
I think it would also be nice if we specified that these values should
translate to integers with increasing values, so that programmers can just
use a simple greater-than/less-than test instead of a switch/case
- Adding yet another flavor of MPI_INITIALIZED() is ugly, especially since
it breaks the symmetry that we just gave ourselves by adding
MPI_FINALIZED(). Instead, I propose that we add a MPI_THREAD_QUERY value,
which simply asks MPI_THREAD_INIT() to return the current level of
strictness, or MPI_UNDEFINED if MPI has not yet been initialized.
Either is OK by me -- can have a beauty contest. I have replaced the pair
INIT/INITIALIZED by THREAD_INIT/THREAD_INITIALIZED. If we go back to
MPI_THREAD_QUERY, then there is no need to allow this call before INIT.
- The new MPI_THREAD_MAIN() routine should more properly be named
- Let's do keep the argc/argv arguments out, please!
-- Eric Salo Silicon Graphics Inc. email@example.com