49 #ifndef vtkMPIController_h
50 #define vtkMPIController_h
53 #include "vtkParallelMPIModule.h"
83 int* vtkNotUsed(argc),
char*** vtkNotUsed(argv),
int initializedExternally)
override;
97 void Finalize(
int finalizedExternally)
override;
123 static char* ErrorString(
int err);
153 ->NoBlockSend(data, length, remoteProcessId, tag, req);
159 ->NoBlockSend(data, length, remoteProcessId, tag, req);
165 ->NoBlockSend(data, length, remoteProcessId, tag, req);
171 ->NoBlockSend(data, length, remoteProcessId, tag, req);
177 ->NoBlockSend(data, length, remoteProcessId, tag, req);
183 ->NoBlockSend(data, length, remoteProcessId, tag, req);
185 #ifdef VTK_USE_64BIT_IDS
190 ->NoBlockSend(data, length, remoteProcessId, tag, req);
206 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
212 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
218 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
224 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
230 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
236 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
238 #ifdef VTK_USE_64BIT_IDS
243 ->NoBlockReceive(data, length, remoteProcessId, tag, req);
259 return ((
vtkMPICommunicator*)this->Communicator)->Iprobe(source, tag, flag, actualSource);
264 ->Iprobe(source, tag, flag, actualSource, type, size);
269 ->Iprobe(source, tag, flag, actualSource, type, size);
274 ->Iprobe(source, tag, flag, actualSource, type, size);
279 ->Iprobe(source, tag, flag, actualSource, type, size);
284 ->Iprobe(source, tag, flag, actualSource, type, size);
339 static const char* GetProcessorName();
359 void InitializeRMICommunicator();
367 int remoteProcessId,
void* arg,
int argLength,
int rmiTag,
bool propagate)
override;
376 friend class vtkMPIOutputWindow;
381 static char ProcessorName[];
int NoBlockSend(const double *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 unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
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 WaitAny(const int count, vtkMPICommunicator::Request requests[], int &idx)
Blocks until one of the specified requests in the given request array completes.
virtual void Finalize()=0
This method is for cleaning up.
Class for creating user defined MPI communicators.
int Iprobe(int source, int tag, int *flag, int *actualSource, const char *type, int *size)
virtual void TriggerRMIInternal(int remoteProcessId, void *arg, int argLength, int rmiTag, bool propagate)
Implementation for TriggerRMI() provides subclasses an opportunity to modify the behaviour eg...
virtual void MultipleMethodExecute()=0
Execute the MultipleMethods (as define by calling SetMultipleMethod for each of the required this->Nu...
static int UseSsendForRMI
When set, TriggerRMI uses Ssend instead of Send.
int NoBlockReceive(unsigned char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
void Initialize(int *argc, char ***argv) override
This method is for setting up the processes.
static void SetUseSsendForRMI(int use_send)
When set to 1, TriggerRMI uses Ssend() instead of Send() calls.
void Finalize() override
This method is for cleaning up and has to be called before the end of the program if MPI was initiali...
dynamic, self-adjusting array of int
int NoBlockSend(const int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
This method sends data to another process (non-blocking).
virtual void Initialize(int *vtkNotUsed(argc), char ***vtkNotUsed(argv))=0
This method is for setting up the processes.
int NoBlockReceive(unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
a simple class to control print indentation
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
A subgroup of processes from a communicator.
Process communication using MPI.
static vtkMPICommunicator * WorldRMICommunicator
#define VTK_SIZEHINT(...)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
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)
virtual void CreateOutputWindow()=0
This method can be used to tell the controller to create a special output window in which all message...
int NoBlockSend(const char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int Iprobe(int source, int tag, int *flag, int *actualSource, unsigned long *type, int *size)
int NoBlockReceive(double *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int NoBlockReceive(char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int Iprobe(int source, int tag, int *flag, int *actualSource, float *type, int *size)
static int GetUseSsendForRMI()
int NoBlockReceive(int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
This method receives data from a corresponding send (non-blocking).
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
int NoBlockSend(const float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
int Iprobe(int source, int tag, int *flag, int *actualSource, int *type, int *size)
virtual void SingleMethodExecute()=0
Execute the SingleMethod (as define by SetSingleMethod) using this->NumberOfProcesses processes...
virtual vtkMultiProcessController * PartitionController(int localColor, int localKey)
Partitions this controller based on a coloring.
virtual vtkMultiProcessController * CreateSubController(vtkProcessGroup *group)
Creates a new controller with the processes specified by the given group.
int Iprobe(int source, int tag, int *flag, int *actualSource)
Nonblocking test for a message.
Multiprocessing communication superclass.