A high-quality implementation will allow any process (including those not started with a ``parallel application'' mechanism) to become an MPI-/ process by calling MPI_INIT. Such a process can then connect to other MPI-/ processes using the MPI_COMM_ACCEPT and MPI_COMM_CONNECT routines, or spawn other MPI-/ processes. MPI-/ does not mandate this behavior, but strongly encourages it where technically feasible.
When an application enters MPI_INIT, clearly it must be able to determine if these special steps were taken. MPI-/ does not say what happens if these special steps were not taken -- presumably this is treated as an error in starting the MPI-/ application. MPI-// recommends the following behavior.
If a process enters MPI_INIT and determines that no special steps were taken (i.e., it has not been given the information to form an MPI_COMM_WORLD with other processes) it succeeds and forms a singleton MPI-/ program, that is, one in which MPI_COMM_WORLD has size 1.
In some implementations, MPI-/ may not be able to function without an ``MPI environment.'' For example, MPI-/ may require that daemons be running or MPI-/ may not be able to work at all on the front-end of an MPP. In this case, an MPI-/ implementation may either
(End of advice to implementors.)
MPI-Standard for MARMOT