#include <vtkMPIController.h>
Inheritance diagram for vtkMPIController:
vtkMPIController is a concrete class which implements the abstract multi-process control methods defined in vtkMultiProcessController using MPI (Message Passing Interface) cf. Using MPI / Portable Parallel Programming with the Message-Passing Interface, Gropp et al, MIT Press. It also provide functionality specific to MPI and not present in vtkMultiProcessController. Before any MPI communication can occur Initialize() must be called by all processes. It is required to be called once, controllers created after this need not call Initialize(). At the end of the program Finalize() must be called by all processes. The use of user-defined communicators are supported with vtkMPICommunicator and vtkMPIGroup. Note that a duplicate of the user defined communicator is used for internal communications (RMIs). This communicator has the same properties as the user one except that it has a new context which prevents the two communicators from interfering with each other.
Definition at line 67 of file vtkMPIController.h.
Public Types | |
typedef vtkMultiProcessController | Superclass |
Public Member Functions | |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
void | PrintSelf (ostream &os, vtkIndent indent) |
virtual void | Initialize (int *vtkNotUsed(argc), char ***vtkNotUsed(argv), int initializedExternally) |
virtual void | Finalize () |
virtual void | Finalize (int finalizedExternally) |
virtual void | SingleMethodExecute () |
virtual void | MultipleMethodExecute () |
void | Barrier () |
virtual void | CreateOutputWindow () |
void | SetCommunicator (vtkMPICommunicator *comm) |
virtual void | Initialize (int *argc, char ***argv) |
int | NoBlockSend (int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockReceive (int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockReceive (unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockReceive (char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockReceive (float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
Static Public Member Functions | |
vtkMPIController * | New () |
int | IsTypeOf (const char *type) |
vtkMPIController * | SafeDownCast (vtkObject *o) |
char * | ErrorString (int err) |
const char * | GetProcessorName () |
Protected Member Functions | |
vtkMPIController () | |
~vtkMPIController () | |
int | InitializeNumberOfProcesses () |
void | InitializeCommunicator (vtkMPICommunicator *comm) |
void | InitializeRMICommunicator () |
Static Protected Attributes | |
vtkMPICommunicator * | WorldRMICommunicator |
int | Initialized |
char | ProcessorName [] |
|
Reimplemented from vtkMultiProcessController. Definition at line 73 of file vtkMPIController.h. |
|
|
|
|
|
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. Reimplemented from vtkMultiProcessController. |
|
Reimplemented from vtkMultiProcessController. |
|
Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h. Reimplemented from vtkMultiProcessController. |
|
Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h. Reimplemented from vtkMultiProcessController. |
|
Reimplemented from vtkMultiProcessController. |
|
Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes. Reimplemented from vtkMultiProcessController. |
|
This method is for setting up the processes. It needs to be called only once during program execution. Calling it more than once will have no effect. Controllers created after this call will be initialized automatically (i.e. they will have the proper LocalProcessId and NumberOfProcesses). The addresses of argc and argv should be passed to this method otherwise command line arguments will not be correct (because usually MPI implementations add their own arguments during startup). Definition at line 85 of file vtkMPIController.h. References vtkMultiProcessController::Initialize(). |
|
This method is for setting up the processes. If a subclass needs to initialize process communication (i.e. MPI) it would over ride this method. Provided for initialization outside vtk. Implements vtkMultiProcessController. |
|
This method is for cleaning up and has to be called before the end of the program if MPI was initialized with Initialize() Implements vtkMultiProcessController. Definition at line 94 of file vtkMPIController.h. References vtkMultiProcessController::Finalize(). |
|
This method is for cleaning up. If a subclass needs to clean up process communication (i.e. MPI) it would over ride this method. Provided for finalization outside vtk. Implements vtkMultiProcessController. |
|
Execute the SingleMethod (as define by SetSingleMethod) using this->NumberOfProcesses processes. Implements vtkMultiProcessController. |
|
Execute the MultipleMethods (as define by calling SetMultipleMethod for each of the required this->NumberOfProcesses methods) using this->NumberOfProcesses processes. Implements vtkMultiProcessController. |
|
This method can be used to synchronize MPI processes in the current communicator. This uses the user communicator. Implements vtkMultiProcessController. |
|
This method can be used to tell the controller to create a special output window in which all messages are preceded by the process id. Implements vtkMultiProcessController. |
|
Given an MPI error code, return a string which contains an error message. This string has to be freed by the user. |
|
MPIController uses this communicator in all sends and receives. By default, MPI_COMM_WORLD is used. THIS SHOULD ONLY BE CALLED ON THE PROCESSES INCLUDED IN THE COMMUNICATOR. FOR EXAMPLE, IF THE COMMUNICATOR CONTAINES PROCESSES 0 AND 1, INVOKING THIS METHOD ON ANY OTHER PROCESS WILL CAUSE AN MPI ERROR AND POSSIBLY LEAD TO A CRASH. |
|
This method sends data to another process (non-blocking). Tag eliminates ambiguity when multiple sends or receives exist in the same process. The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 135 of file vtkMPIController.h. |
|
This method sends data to another process (non-blocking). Tag eliminates ambiguity when multiple sends or receives exist in the same process. The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 139 of file vtkMPIController.h. |
|
This method sends data to another process (non-blocking). Tag eliminates ambiguity when multiple sends or receives exist in the same process. The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 143 of file vtkMPIController.h. |
|
This method sends data to another process (non-blocking). Tag eliminates ambiguity when multiple sends or receives exist in the same process. The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 147 of file vtkMPIController.h. |
|
This method receives data from a corresponding send (non-blocking). The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 158 of file vtkMPIController.h. |
|
This method receives data from a corresponding send (non-blocking). The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 162 of file vtkMPIController.h. |
|
This method receives data from a corresponding send (non-blocking). The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 167 of file vtkMPIController.h. |
|
This method receives data from a corresponding send (non-blocking). The last argument, vtkMPICommunicator::Request& req can later be used (with req.Test() ) to test the success of the message. Note: These methods delegate to the communicator Definition at line 171 of file vtkMPIController.h. |
|
|
|
|
|
|
|
|
|
Definition at line 202 of file vtkMPIController.h. |
|
Definition at line 205 of file vtkMPIController.h. |
|
Definition at line 207 of file vtkMPIController.h. |