The MPI Forum did not standardize the mechanism for starting jobs. This
decision was
entirely appropriate; by way of comparison,
the Fortran standard does not specify how to start
Fortran programs. Nonetheless, the extreme diversity of the environments in
which MPICH runs and the diversity of job-starting mechanisms in those
environments (special commands like prun, poe, or mexec,
settings of various environment variables, or special command-line arguments to
the program being started) suggested to us that we should encapsulate the
knowledge of how to run a job on various machines in a single command. We
named it mpirun. In all environments, an MPI program, say
myprog, can be run with, say, 12 processes by issuing the command
mpirun -np 12 myprogNote that this might not be the only way to start a program, and additional arguments might usefully be passed to both mpirun and myprog (see Section Useful Commands ), but the mpirun command will always work, even if the starting of a job requires complex interaction with a resource manager. For example, at Argonne we use a home-grown scheduler called EASY instead of IBM's LoadLeveler to start jobs on our IBM SP; interaction with EASY is encapsulated in mpirun.
A number of other MPI implementations and environments have also decided to use the name mpirun to start MPI jobs. The MPI Forum is discussing whether this command can be at least partially standardized for MPI-2 (see Section MPI-2 ).