HWRF  trunk@4391
Classes | Variables
produtil.mpiprog Namespace Reference

Object structure for describing MPI programs. More...

Detailed Description

Object structure for describing MPI programs.

Do not load this module directly. It is meant to be loaded only by the produtil.run module.

This module handles execution of MPI programs, and execution of groups of non-MPI programs through an MPI interface (which requires all sorts of tricks). This module is also the interface to the various produtil.mpi_impl.* modules that generate the shell command to run MPI programs. This module is built on top of the produtil.prog module and uses it to run the MPI-launching program for your local cluster (mpiexec, mpirun, poe, etc.)

In addition, this module contains code to simplify adding new MPI implementations to the produtil.mpi_impl subpackage. High-level code, such as the HWRF scripts, use the produtil.run module to generate object trees of MPIRanksBase objects. The produtil.mpi_impl subpackages then implement an mpirunner function that turns those into a produtil.prog.Runner to be directly executed. The MPIRanksBase object, and its subclasses, implement a few utilites to automate that for you:

For MPI implementations that require a command file, see the produtil.mpi_impl.mpi_impl_base CMDFGen class to have the produtil.prog module automatically write the command file before executing the program. The produtil.mpi_impl.mpirun_lsf shows an example of how to use it.

See the produtil.run module for full documentation.

Classes

class  ComplexProgInput
 Raised when something that cannot be expressed as a pure MPI rank is given as a pure MPI rank. More...
 
class  InputsNotStrings
 Raised when the validation scripts were expecting string arguments or string executable names, but something else was found. More...
 
class  MPIProgSyntaxError
 Base class of syntax errors in MPI program specifications. More...
 
class  MPIRank
 Represents a single MPI rank. More...
 
class  MPIRanksBase
 This is the abstract superclass of all classes that represent one or more MPI ranks, including MPI ranks that are actually serial programs. More...
 
class  MPIRanksMPMD
 Represents a group of MPI programs, each of which have some number of ranks assigned. More...
 
class  MPIRanksSPMD
 Represents one MPI program duplicated across many ranks. More...
 
class  MPISerial
 Represents a single rank of an MPI program that is actually running a serial program. More...
 
class  NotMPIProg
 Raised when an MPI program was expected but something else was given. More...
 
class  NotSerialProg
 Raised when a serial program was expected, but something else was given. More...
 

Variables

list __all__ = []
 Ensure nothing is loaded by "from produtil.mpiprog import *".