Go to the documentation of this file.
49 #ifndef vtkMPIController_h
50 #define vtkMPIController_h
52 #include "vtkParallelMPIModule.h"
81 virtual void Initialize(
int* argc,
char*** argv)
override
84 virtual void Initialize(
int* vtkNotUsed(argc),
char*** vtkNotUsed(argv),
85 int initializedExternally)
override;
99 virtual void Finalize(
int finalizedExternally)
override;
176 #ifdef VTK_USE_64BIT_IDS
196 int remoteProcessId,
int tag,
216 #ifdef VTK_USE_64BIT_IDS
235 source, tag, flag, actualSource); }
330 void* arg,
int argLength,
int rmiTag,
bool propagate)
override;
339 friend class vtkMPIOutputWindow;
344 static char ProcessorName[];
virtual void Initialize(int *argc, char ***argv) override
This method is for setting up the processes.
virtual void MultipleMethodExecute() override
Execute the MultipleMethods (as define by calling SetMultipleMethod for each of the required this->Nu...
int NoBlockReceive(char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int 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.
int NoBlockReceive(float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int Iprobe(int source, int tag, int *flag, int *actualSource, double *type, int *size)
bool TestAny(const int count, vtkMPICommunicator::Request requests[], int &idx)
Returns true iff at least one of the communication request objects is complete.
int Iprobe(int source, int tag, int *flag, int *actualSource, float *type, int *size)
int NoBlockSend(const unsigned char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int NoBlockReceive(double *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int NoBlockReceive(unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
bool TestSome(const int count, vtkMPICommunicator::Request requests[], vtkIntArray *completed)
Return true iff one or more of the communicator request objects is complete.
bool TestAll(const int count, vtkMPICommunicator::Request requests[])
Returns true iff all of the communication request objects are complete.
int NoBlockSend(const double *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
virtual void Finalize(int finalizedExternally) override
This method is for cleaning up.
virtual void Initialize()
Same as Initialize(0, 0, 1).
void SetCommunicator(vtkMPICommunicator *comm)
MPIController uses this communicator in all sends and receives.
static int GetUseSsendForRMI()
void InitializeRMICommunicator()
int NoBlockReceive(int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
This method receives data from a corresponding send (non-blocking).
int Iprobe(int source, int tag, int *flag, int *actualSource)
Nonblocking test for a message.
int Iprobe(int source, int tag, int *flag, int *actualSource, int *type, int *size)
Class for creating user defined MPI communicators.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void TriggerRMIInternal(int remoteProcessId, void *arg, int argLength, int rmiTag, bool propagate) override
Implementation for TriggerRMI() provides subclasses an opportunity to modify the behaviour eg.
static const char * GetProcessorName()
#define VTK_SIZEHINT(...)
virtual void Initialize(int *vtkNotUsed(argc), char ***vtkNotUsed(argv), int initializedExternally) override
This method is for setting up the processes.
Multiprocessing communication superclass.
a simple class to control print indentation
int NoBlockSend(const char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
dynamic, self-adjusting array of int
int Iprobe(int source, int tag, int *flag, int *actualSource, unsigned long *type, int *size)
virtual void CreateOutputWindow() override
This method can be used to tell the controller to create a special output window in which all message...
virtual void Finalize() override
This method is for cleaning up and has to be called before the end of the program if MPI was initiali...
virtual void SingleMethodExecute() override
Execute the SingleMethod (as define by SetSingleMethod) using this->NumberOfProcesses processes.
virtual void Initialize(int *vtkNotUsed(argc), char ***vtkNotUsed(argv))=0
This method is for setting up the processes.
int NoBlockSend(const float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int NoBlockReceive(unsigned char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
static int UseSsendForRMI
When set, TriggerRMI uses Ssend instead of Send.
A subgroup of processes from a communicator.
int Iprobe(int source, int tag, int *flag, int *actualSource, const char *type, int *size)
static void SetUseSsendForRMI(int use_send)
When set to 1, TriggerRMI uses Ssend() instead of Send() calls.
void InitializeCommunicator(vtkMPICommunicator *comm)
int WaitAll(const int count, vtkMPICommunicator::Request requests[])
Given the request objects of a set of non-blocking operations (send and/or receive) this method block...
int NoBlockSend(const int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
This method sends data to another process (non-blocking).
virtual vtkMPIController * CreateSubController(vtkProcessGroup *group) override
Creates a new controller with the processes specified by the given group.
static vtkMPICommunicator * WorldRMICommunicator
static char * ErrorString(int err)
Given an MPI error code, return a string which contains an error message.
int NoBlockSend(const unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
Process communication using MPI.
int WaitAny(const int count, vtkMPICommunicator::Request requests[], int &idx)
Blocks until one of the specified requests in the given request array completes.
virtual vtkMPIController * PartitionController(int localColor, int localKey) override
Partitions this controller based on a coloring.
static vtkMPIController * New()