MPIL_SPAWN (2)
Spawn MPI processes under LAM.
C SYNOPSIS
#include <mpi.h>
int MPIL_Spawn (MPI_Comm comm, char *app, int root, MPI_Comm *child_comm);
int MPIL_Comm_parent (MPI_Comm *parent_comm);
int MPIL_Universe_size (int *size);
FORTRAN SYNOPSIS
subroutine MPIL_SPAWN (comm, app, root, child_comm, ierr)
subroutine MPIL_COMM_PARENT (parent_comm, ierr)
subroutine MPIL_UNIVERSE_SIZE (size, ierr)
integer comm, root, child_comm, parent_comm, size, ierr
character app*(*)
DESCRIPTION
These functions are outdated - it has been replaced with
MPI_Comm_spawn() ,
MPI_Comm_spawn_multiple() ,
and
MPI_Comm_get_parent() ,
respectively. There is no MPI function replacement for
MPIL_Universe_size() .
Instead, the attribute MPI_UNIVERSIZE_SIZE is defined on
MPI_COMM_WORLD .
LAM defines this value as the number of hosts that
lamboot
launched LAM on.
While these functions have been left in LAM for backward
compatability, developers are
highly
encouraged to use the new functionality that is standard in
MPI-2.
A group of processes can create another group of processes with
MPIL_Spawn() .
The parent group is indicated by the first communicator argument.
MPIL_Spawn()
is a collective operation over the parent processes.
The child group starts up like any MPI application.
The processes must begin by calling MPI_Init(), after which
the pre-defined communicator, MPI_COMM_WORLD, may be used.
This world communicator contains only the child processes.
It is distinct from the MPI_COMM_WORLD of the parent processes.
The natural communication mechanism between two groups is
the inter-communicator.
The second communicator argument to
MPIL_Spawn()
returns an inter-communicator whose local group contains the parent
processes (same as the first communicator argument) and whose
remote group contains child processes.
The child processes get the same inter-communicator by calling
MPIL_Comm_parent() ,
which returns MPI_COMM_NULL if the process was created by mpirun(1)
instead of
MPIL_Spawn() .
Both groups can decide to merge the inter-communicator into an
intra-communicator and take advantage of other MPI collective operations.
They can then use the merged intra-communicator to create new
inter-communicators and reach other processes in the MPI application.
The program names, process counts and computing resources for the
new child processes are specified in an application schema identical
to that used by mpirun(1).
The application schema filename is given in the
app
argument to
MPIL_Spawn() .
As with mpirun(1), a simple SPMD application can be specified in the
app
argument itself (equivalent to the mpirun(1) command line).
The simplest way to run one copy of an executable file on any node
chosen by LAM is to specify "a.out -c 1" for the
app
argument.
A single filename by itself is taken to be an application schema, not an
excutable filename.
See mpirun(1) for complete details.
If an application schema is specified, it is located on the node
that is running the process indicated by the
root
argument.
On that node, the schema file is located by searching a few directories.
The directory defined by the LAMAPPLDIR environment variable, if set,
is searched first.
Then the local directory is searched.
If an executable file is specified, it is located on the node(s)
where the process(es) will execute, unless the -s option is specified
as with mpirun(1).
On any node, the directories specified by the user's PATH
environment variable are searched to find an executable file.
All MPI runtime options selected by mpirun(1) in the initial application
launch remain in effect for all child processes created by
MPIL_Spawn() .
The number of processes that an application spawns is often constrained
by the number of processors available.
That information (in nodes, not necessarily processors) is obtained from
LAM with
MPIL_Universe_size() .
Since LAM can dynamically add and subtract nodes, the universe size
can change at any time.
SEE ALSO
|