VTK
|
Process communication using MPI. More...
#include <vtkMPIController.h>
Public Types | |
typedef vtkMultiProcessController | Superclass |
![]() | |
enum | Errors { RMI_NO_ERROR, RMI_TAG_ERROR, RMI_ARG_ERROR } |
enum | Consts { ANY_SOURCE = -1, INVALID_SOURCE = -2 } |
enum | Tags { RMI_TAG = 1, RMI_ARG_TAG = 2, BREAK_RMI_TAG = 3, XML_WRITER_DATA_INFO = 4 } |
typedef vtkObject | Superclass |
![]() | |
typedef vtkObjectBase | Superclass |
Public Member Functions | |
virtual int | IsA (const char *type) |
vtkMPIController * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) |
virtual void | Initialize (int *vtkNotUsed(argc), char ***vtkNotUsed(argv), int initializedExternally) |
virtual void | Initialize () |
virtual void | Finalize () |
virtual void | Finalize (int finalizedExternally) |
virtual void | SingleMethodExecute () |
virtual void | MultipleMethodExecute () |
virtual void | CreateOutputWindow () |
void | SetCommunicator (vtkMPICommunicator *comm) |
virtual vtkMPIController * | CreateSubController (vtkProcessGroup *group) |
virtual vtkMPIController * | PartitionController (int localColor, int localKey) |
bool | TestAll (const int count, vtkMPICommunicator::Request requests[]) |
bool | TestAny (const int count, vtkMPICommunicator::Request requests[], int &idx) |
virtual void | Initialize (int *argc, char ***argv) |
int | NoBlockSend (const int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (const unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (const char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (const unsigned char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (const float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockSend (const double *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 (unsigned char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockReceive (float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | NoBlockReceive (double *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req) |
int | Iprobe (int source, int tag, int *flag, int *actualSource) |
int | Iprobe (int source, int tag, int *flag, int *actualSource, int *type, int *size) |
int | Iprobe (int source, int tag, int *flag, int *actualSource, unsigned long *type, int *size) |
int | Iprobe (int source, int tag, int *flag, int *actualSource, const char *type, int *size) |
int | Iprobe (int source, int tag, int *flag, int *actualSource, float *type, int *size) |
int | Iprobe (int source, int tag, int *flag, int *actualSource, double *type, int *size) |
int | WaitAll (const int count, vtkMPICommunicator::Request requests[]) |
int | WaitAny (const int count, vtkMPICommunicator::Request requests[], int &idx) |
int | WaitSome (const int count, vtkMPICommunicator::Request requests[], vtkIntArray *completed) |
![]() | |
vtkMultiProcessController * | NewInstance () const |
virtual void | Initialize (int *vtkNotUsed(argc), char ***vtkNotUsed(argv))=0 |
void | SetSingleMethod (vtkProcessFunctionType, void *data) |
int | GetLocalProcessId () |
virtual unsigned long | AddRMI (vtkRMIFunctionType, void *localArg, int tag) |
virtual int | RemoveFirstRMI (int tag) |
virtual int | RemoveRMI (unsigned long id) |
virtual unsigned long | AddRMICallback (vtkRMIFunctionType, void *localArg, int tag) |
virtual void | RemoveAllRMICallbacks (int tag) |
virtual bool | RemoveRMICallback (unsigned long id) |
void | TriggerRMI (int remoteProcessId, void *arg, int argLength, int tag) |
void | TriggerBreakRMIs () |
void | Barrier () |
vtkIdType | GetCount () |
void | SetNumberOfProcesses (int num) |
int | GetNumberOfProcesses () |
void | SetSingleProcessObject (vtkProcess *p) |
void | SetMultipleMethod (int index, vtkProcessFunctionType, void *data) |
virtual void | RemoveRMI (vtkRMIFunctionType f, void *arg, int tag) |
void | TriggerRMI (int remoteProcessId, const char *arg, int tag) |
void | TriggerRMI (int remoteProcessId, int tag) |
void | TriggerRMIOnAllChildren (void *arg, int argLength, int tag) |
void | TriggerRMIOnAllChildren (const char *arg, int tag) |
void | TriggerRMIOnAllChildren (int tag) |
int | ProcessRMIs (int reportErrors, int dont_loop=0) |
int | ProcessRMIs () |
virtual void | SetBreakFlag (int) |
virtual int | GetBreakFlag () |
virtual vtkCommunicator * | GetCommunicator () |
int | Send (const int *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (const unsigned int *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (const unsigned long *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (const char *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (const unsigned char *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (const float *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (const double *data, vtkIdType length, int remoteProcessId, int tag) |
int | Send (vtkDataObject *data, int remoteId, int tag) |
int | Send (vtkDataArray *data, int remoteId, int tag) |
int | Send (const vtkMultiProcessStream &stream, int remoteId, int tag) |
int | Receive (int *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (unsigned int *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (unsigned long *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (char *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (unsigned char *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (float *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (double *data, vtkIdType maxlength, int remoteProcessId, int tag) |
int | Receive (vtkDataObject *data, int remoteId, int tag) |
int | Receive (vtkDataArray *data, int remoteId, int tag) |
int | Receive (vtkMultiProcessStream &stream, int remoteId, int tag) |
vtkDataObject * | ReceiveDataObject (int remoteId, int tag) |
int | Broadcast (int *data, vtkIdType length, int srcProcessId) |
int | Broadcast (unsigned int *data, vtkIdType length, int srcProcessId) |
int | Broadcast (unsigned long *data, vtkIdType length, int srcProcessId) |
int | Broadcast (unsigned char *data, vtkIdType length, int srcProcessId) |
int | Broadcast (char *data, vtkIdType length, int srcProcessId) |
int | Broadcast (float *data, vtkIdType length, int srcProcessId) |
int | Broadcast (double *data, vtkIdType length, int srcProcessId) |
int | Broadcast (vtkDataObject *data, int srcProcessId) |
int | Broadcast (vtkDataArray *data, int srcProcessId) |
int | Broadcast (vtkMultiProcessStream &stream, int srcProcessId) |
int | Gather (const int *sendBuffer, int *recvBuffer, vtkIdType length, int destProcessId) |
int | Gather (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int destProcessId) |
int | Gather (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int destProcessId) |
int | Gather (const char *sendBuffer, char *recvBuffer, vtkIdType length, int destProcessId) |
int | Gather (const float *sendBuffer, float *recvBuffer, vtkIdType length, int destProcessId) |
int | Gather (const double *sendBuffer, double *recvBuffer, vtkIdType length, int destProcessId) |
int | Gather (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int destProcessId) |
int | GatherV (const int *sendBuffer, int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (const char *sendBuffer, char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (const float *sendBuffer, float *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (const double *sendBuffer, double *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) |
int | GatherV (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int destProcessId) |
int | Scatter (const int *sendBuffer, int *recvBuffer, vtkIdType length, int srcProcessId) |
int | Scatter (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int srcProcessId) |
int | Scatter (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int srcProcessId) |
int | Scatter (const char *sendBuffer, char *recvBuffer, vtkIdType length, int srcProcessId) |
int | Scatter (const float *sendBuffer, float *recvBuffer, vtkIdType length, int srcProcessId) |
int | Scatter (const double *sendBuffer, double *recvBuffer, vtkIdType length, int srcProcessId) |
int | Scatter (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int srcProcessId) |
int | ScatterV (const int *sendBuffer, int *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId) |
int | ScatterV (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId) |
int | ScatterV (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId) |
int | ScatterV (const char *sendBuffer, char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId) |
int | ScatterV (const float *sendBuffer, float *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId) |
int | ScatterV (const double *sendBuffer, double *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId) |
int | AllGather (const int *sendBuffer, int *recvBuffer, vtkIdType length) |
int | AllGather (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length) |
int | AllGather (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length) |
int | AllGather (const char *sendBuffer, char *recvBuffer, vtkIdType length) |
int | AllGather (const float *sendBuffer, float *recvBuffer, vtkIdType length) |
int | AllGather (const double *sendBuffer, double *recvBuffer, vtkIdType length) |
int | AllGather (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer) |
int | AllGatherV (const int *sendBuffer, int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (const char *sendBuffer, char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (const float *sendBuffer, float *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (const double *sendBuffer, double *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdType *recvLengths, vtkIdType *offsets) |
int | AllGatherV (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer) |
int | Reduce (const int *sendBuffer, int *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (const char *sendBuffer, char *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (const float *sendBuffer, float *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (const double *sendBuffer, double *recvBuffer, vtkIdType length, int operation, int destProcessId) |
int | Reduce (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int operation, int destProcessId) |
int | Reduce (const int *sendBuffer, int *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId) |
int | Reduce (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId) |
int | Reduce (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId) |
int | Reduce (const char *sendBuffer, char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId) |
int | Reduce (const float *sendBuffer, float *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId) |
int | Reduce (const double *sendBuffer, double *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId) |
int | Reduce (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkCommunicator::Operation *operation, int destProcessId) |
int | AllReduce (const int *sendBuffer, int *recvBuffer, vtkIdType length, int operation) |
int | AllReduce (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int operation) |
int | AllReduce (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int operation) |
int | AllReduce (const char *sendBuffer, char *recvBuffer, vtkIdType length, int operation) |
int | AllReduce (const float *sendBuffer, float *recvBuffer, vtkIdType length, int operation) |
int | AllReduce (const double *sendBuffer, double *recvBuffer, vtkIdType length, int operation) |
int | AllReduce (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int operation) |
int | AllReduce (const int *sendBuffer, int *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation) |
int | AllReduce (const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation) |
int | AllReduce (const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation) |
int | AllReduce (const char *sendBuffer, char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation) |
int | AllReduce (const float *sendBuffer, float *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation) |
int | AllReduce (const double *sendBuffer, double *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation) |
int | AllReduce (vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkCommunicator::Operation *operation) |
![]() | |
vtkObject * | NewInstance () const |
virtual void | DebugOn () |
virtual void | DebugOff () |
unsigned char | GetDebug () |
void | SetDebug (unsigned char debugFlag) |
virtual void | Modified () |
virtual unsigned long | GetMTime () |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
vtkCommand * | GetCommand (unsigned long tag) |
void | RemoveObserver (vtkCommand *) |
void | RemoveObservers (unsigned long event, vtkCommand *) |
void | RemoveObservers (const char *event, vtkCommand *) |
int | HasObserver (unsigned long event, vtkCommand *) |
int | HasObserver (const char *event, vtkCommand *) |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
int | HasObserver (unsigned long event) |
int | HasObserver (const char *event) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
int | InvokeEvent (unsigned long event, void *callData) |
int | InvokeEvent (const char *event, void *callData) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
![]() | |
const char * | GetClassName () const |
virtual void | Delete () |
virtual void | FastDelete () |
void | Print (ostream &os) |
virtual void | Register (vtkObjectBase *o) |
virtual void | UnRegister (vtkObjectBase *o) |
void | SetReferenceCount (int) |
void | PrintRevisions (ostream &) |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
int | GetReferenceCount () |
Static Public Member Functions | |
static vtkMPIController * | New () |
static int | IsTypeOf (const char *type) |
static vtkMPIController * | SafeDownCast (vtkObjectBase *o) |
static char * | ErrorString (int err) |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkMultiProcessController * | SafeDownCast (vtkObjectBase *o) |
static vtkMultiProcessController * | GetGlobalController () |
static void | SetGlobalController (vtkMultiProcessController *controller) |
static int | GetBreakRMITag () |
static int | GetRMITag () |
static int | GetRMIArgTag () |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkObject * | SafeDownCast (vtkObjectBase *o) |
static vtkObject * | New () |
static void | BreakOnError () |
static void | SetGlobalWarningDisplay (int val) |
static void | GlobalWarningDisplayOn () |
static void | GlobalWarningDisplayOff () |
static int | GetGlobalWarningDisplay () |
![]() | |
static int | IsTypeOf (const char *name) |
static vtkObjectBase * | New () |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
void | InitializeCommunicator (vtkMPICommunicator *comm) |
void | InitializeRMICommunicator () |
virtual void | TriggerRMIInternal (int remoteProcessId, void *arg, int argLength, int rmiTag, bool propagate) |
![]() | |
vtkMultiProcessController () | |
~vtkMultiProcessController () | |
void | GetMultipleMethod (int index, vtkProcessFunctionType &func, void *&data) |
void | ProcessRMI (int remoteProcessId, void *arg, int argLength, int rmiTag) |
virtual vtkMultiProcessController * | GetLocalController () |
![]() | |
vtkObject () | |
virtual | ~vtkObject () |
virtual void | RegisterInternal (vtkObjectBase *, int check) |
virtual void | UnRegisterInternal (vtkObjectBase *, int check) |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
void | InternalReleaseFocus () |
![]() | |
vtkObjectBase () | |
virtual | ~vtkObjectBase () |
virtual void | CollectRevisions (ostream &) |
virtual void | ReportReferences (vtkGarbageCollector *) |
vtkObjectBase (const vtkObjectBase &) | |
void | operator= (const vtkObjectBase &) |
Static Protected Attributes | |
static vtkMPICommunicator * | WorldRMICommunicator |
static int | Initialized |
static char | ProcessorName [] |
Friends | |
class | vtkMPIOutputWindow |
static const char * | GetProcessorName () |
bool | TestSome (const int count, vtkMPICommunicator::Request requests[], vtkIntArray *completed) |
static void | SetUseSsendForRMI (int use_send) |
static int | GetUseSsendForRMI () |
vtkMPIController () | |
~vtkMPIController () | |
static int | UseSsendForRMI |
Additional Inherited Members | |
![]() | |
vtkProcessFunctionType | SingleMethod |
void * | SingleData |
int | BreakFlag |
int | ForceDeepCopy |
vtkOutputWindow * | OutputWindow |
vtkCommunicator * | Communicator |
vtkCommunicator * | RMICommunicator |
![]() | |
unsigned char | Debug |
vtkTimeStamp | MTime |
vtkSubjectHelper * | SubjectHelper |
![]() | |
vtkAtomicInt< vtkTypeInt32 > | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
Process communication using MPI.
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 the CreateSubController method. 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 60 of file vtkMPIController.h.
Definition at line 66 of file vtkMPIController.h.
|
protected |
When set to 1, TriggerRMI uses Ssend() instead of Send() calls. Off (0) by default.
|
protected |
When set to 1, TriggerRMI uses Ssend() instead of Send() calls. Off (0) by default.
|
static |
|
static |
|
virtual |
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 vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkMultiProcessController.
|
static |
|
protectedvirtual |
Reimplemented from vtkMultiProcessController.
vtkMPIController* vtkMPIController::NewInstance | ( | ) | const |
|
virtual |
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.
|
inlinevirtual |
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 78 of file vtkMPIController.h.
|
virtual |
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.
|
virtual |
Same as Initialize(0, 0, 1). Mainly for calling from wrapped languages.
|
inlinevirtual |
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 91 of file vtkMPIController.h.
|
virtual |
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.
|
virtual |
Execute the SingleMethod (as define by SetSingleMethod) using this->NumberOfProcesses processes.
Implements vtkMultiProcessController.
|
virtual |
Execute the MultipleMethods (as define by calling SetMultipleMethod for each of the required this->NumberOfProcesses methods) using this->NumberOfProcesses processes.
Implements vtkMultiProcessController.
|
virtual |
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.
|
static |
Given an MPI error code, return a string which contains an error message. This string has to be freed by the user.
void vtkMPIController::SetCommunicator | ( | vtkMPICommunicator * | comm | ) |
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 CONTAINS PROCESSES 0 AND 1, INVOKING THIS METHOD ON ANY OTHER PROCESS WILL CAUSE AN MPI ERROR AND POSSIBLY LEAD TO A CRASH.
|
virtual |
Creates a new controller with the processes specified by the given group. The new controller will already be initialized for you. You are responsible for deleting the controller once you are done. It is invalid to pass this method a group with a different communicator than is used by this controller. This operation is collective across all processes defined in the group. It is undefined what will happen if the group is not the same on all processes. This method must be called by all processes in the controller regardless of whether they are in the group. NULL is returned on all process not in the group.
Reimplemented from vtkMultiProcessController.
|
virtual |
Partitions this controller based on a coloring. That is, each process passes in a color. All processes with the same color are grouped into the same partition. The processes are ordered by their self-assigned key. Lower keys have lower process ids. Ties are broken by the current process ids. (For example, if all the keys are 0, then the resulting processes will be ordered in the same way.) This method returns a new controller to each process that represents the local partition. This is basically the same operation as MPI_Comm_split.
Reimplemented from vtkMultiProcessController.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 133 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 137 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 141 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 145 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 149 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 153 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 165 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 169 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 174 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 178 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 182 of file vtkMPIController.h.
|
inline |
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. Return values are 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 186 of file vtkMPIController.h.
Nonblocking test for a message. Inputs are: source – the source rank or ANY_SOURCE; tag – the tag value. Outputs are: flag – True if a message matches; actualSource – the rank sending the message (useful if ANY_SOURCE is used) if flag is True and actualSource isn't NULL; size – the length of the message in bytes if flag is true (only set if size isn't NULL). The return value is 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 206 of file vtkMPIController.h.
|
inline |
Nonblocking test for a message. Inputs are: source – the source rank or ANY_SOURCE; tag – the tag value. Outputs are: flag – True if a message matches; actualSource – the rank sending the message (useful if ANY_SOURCE is used) if flag is True and actualSource isn't NULL; size – the length of the message in bytes if flag is true (only set if size isn't NULL). The return value is 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 209 of file vtkMPIController.h.
|
inline |
Nonblocking test for a message. Inputs are: source – the source rank or ANY_SOURCE; tag – the tag value. Outputs are: flag – True if a message matches; actualSource – the rank sending the message (useful if ANY_SOURCE is used) if flag is True and actualSource isn't NULL; size – the length of the message in bytes if flag is true (only set if size isn't NULL). The return value is 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 213 of file vtkMPIController.h.
|
inline |
Nonblocking test for a message. Inputs are: source – the source rank or ANY_SOURCE; tag – the tag value. Outputs are: flag – True if a message matches; actualSource – the rank sending the message (useful if ANY_SOURCE is used) if flag is True and actualSource isn't NULL; size – the length of the message in bytes if flag is true (only set if size isn't NULL). The return value is 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 217 of file vtkMPIController.h.
|
inline |
Nonblocking test for a message. Inputs are: source – the source rank or ANY_SOURCE; tag – the tag value. Outputs are: flag – True if a message matches; actualSource – the rank sending the message (useful if ANY_SOURCE is used) if flag is True and actualSource isn't NULL; size – the length of the message in bytes if flag is true (only set if size isn't NULL). The return value is 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 221 of file vtkMPIController.h.
|
inline |
Nonblocking test for a message. Inputs are: source – the source rank or ANY_SOURCE; tag – the tag value. Outputs are: flag – True if a message matches; actualSource – the rank sending the message (useful if ANY_SOURCE is used) if flag is True and actualSource isn't NULL; size – the length of the message in bytes if flag is true (only set if size isn't NULL). The return value is 1 for success and 0 otherwise. Note: These methods delegate to the communicator
Definition at line 225 of file vtkMPIController.h.
|
inline |
Given the request objects of a set of non-blocking operations (send and/or receive) this method blocks until all requests are complete. Note: This method delegates to the communicator
Definition at line 235 of file vtkMPIController.h.
|
inline |
Blocks until one of the specified requests in the given request array completes. Upon return, the index in the array of the completed request object is returned through the argument list. Note: this method delegates to the communicator
Definition at line 244 of file vtkMPIController.h.
int vtkMPIController::WaitSome | ( | const int | count, |
vtkMPICommunicator::Request | requests[], | ||
vtkIntArray * | completed | ||
) |
Blocks until one or more of the specified requests in the given request request array completes. Upon return, the list of handles that have completed is stored in the completed vtkIntArray.
bool vtkMPIController::TestAll | ( | const int | count, |
vtkMPICommunicator::Request | requests[] | ||
) |
Returns true iff all of the communication request objects are complete.
bool vtkMPIController::TestAny | ( | const int | count, |
vtkMPICommunicator::Request | requests[], | ||
int & | idx | ||
) |
Returns true iff at least one of the communication request objects is complete. The index of the completed request, w.r.t. the requests array, is reflected in the out parameter idx. Otherwise, if none of the communication requests are complete false is returned.
bool vtkMPIController::TestSome | ( | const int | count, |
vtkMPICommunicator::Request | requests[], | ||
vtkIntArray * | completed | ||
) |
Return true iff one or more of the communicator request objects is complete. The indices of the completed requests, w.r.t. the requests array, are given in the completed user-supplied vtkIntArray.
|
static |
Return true iff one or more of the communicator request objects is complete. The indices of the completed requests, w.r.t. the requests array, are given in the completed user-supplied vtkIntArray.
|
inlinestatic |
When set to 1, TriggerRMI uses Ssend() instead of Send() calls. Off (0) by default.
Definition at line 280 of file vtkMPIController.h.
|
inlinestatic |
When set to 1, TriggerRMI uses Ssend() instead of Send() calls. Off (0) by default.
Definition at line 282 of file vtkMPIController.h.
|
protected |
|
protected |
|
protectedvirtual |
Implementation for TriggerRMI() provides subclasses an opportunity to modify the behaviour eg. MPIController provides ability to use Ssend instead of Send.
Reimplemented from vtkMultiProcessController.
|
friend |
Definition at line 310 of file vtkMPIController.h.
|
staticprotected |
Definition at line 308 of file vtkMPIController.h.
|
staticprotected |
Definition at line 313 of file vtkMPIController.h.
|
staticprotected |
Definition at line 315 of file vtkMPIController.h.
|
staticprotected |
When set, TriggerRMI uses Ssend instead of Send.
Definition at line 319 of file vtkMPIController.h.