To clarify the debate surrounding the ABI
proposal I've gone through Greg Lindahl's talk
and broken the main points of the talk down into the following categories:
User-MPI interactions
Application-MPI interactions
System-MPI interactions
As we've discussed, about morph layers address
all the points under the "Application-MPI
interactions" category. In other words, if we
used morph layers we wouldn't need to
standardize things like mpi.h. What's left are
the User-MPI and System-MPI interactions. The
question that I would like to put forward is:
How useful are these? Most of the discussion
I've heard recently focuses on Application-MPI
interactions. If we can table this for the time
being until morph layers can be evaluated, is
there enough support to proceed with the rest of
the proposal or is the Application-MPI
interactions the core part? Please speak up.
User-MPI interactions
?mpistart? -- ?mpirun? with standard args
Start over: ?mpistart? with standardized args
Require features such as
supporting pipes of stdin, stdout, error
--batch and batch-wait to
assist scripting in the presense of batch queues... noop if no queue sys
Application-MPI interactions
Fully specify what's in <mpi.h> and ?mpif.h?
Variably-sized items have to be nailed down
MPI_Status must have fixed length
Need a sane shared-library setup to avoid relinking
I think this means we need 1
base library instead of the usual chaos
Implementers can dlopen() additional libs as needed
Perhaps we can have a clever
upward-compatible scheme for MPI 1 and MPI 2 libs
System-MPI interactions
Fully specify startup and queue system interaction in a flexible way
Queue sys handles creation of MPI processes
Standard command-line for MPI
process, with enough info to connect to the ? job?
MPI implementation provides ? job? process; all
MPI processes contact to coordinate.
? job? process started by mpistart
Queue sys ensures all MPI processes exit at end.
I think this supports all
existing queue systems and MPI implementations
Specify environmental items so that most apps are portable
Getenv / putenv: most
implementations don't propagate env vars to
ranks 1+; few support using putenv to other processes.
Cwd depends on batch system and sysadmin
2 choices: least common denominator, or query fns?
Stack size. Usually painful for users to fix.
stdin/stdout/stderr... oh, don't forget buffering...
MPI-I/O.
Actions before/after mpi_init/finalize
Greg Bronevetsky
Post-Doctoral Researcher
1028 Building 451
Lawrence Livermore National Lab
(925) 424-5756
bronevetsky1@xxxxxxxx