48 #ifndef __vtkMPIController_h
49 #define __vtkMPIController_h
51 #include "vtkParallelMPIModule.h"
67 void PrintSelf(ostream& os, vtkIndent indent);
82 virtual void Initialize(
int* vtkNotUsed(argc),
char*** vtkNotUsed(argv),
83 int initializedExternally);
93 virtual void Finalize(
int finalizedExternally);
110 static char* ErrorString(
int err);
133 int NoBlockSend(
const int* data,
int length,
int remoteProcessId,
int tag,
136 (data ,length, remoteProcessId, tag, req); }
137 int NoBlockSend(
const unsigned long* data,
int length,
int remoteProcessId,
140 (data, length, remoteProcessId, tag, req); }
141 int NoBlockSend(
const char* data,
int length,
int remoteProcessId,
144 (data, length, remoteProcessId, tag, req); }
145 int NoBlockSend(
const unsigned char* data,
int length,
int remoteProcessId,
148 (data, length, remoteProcessId, tag, req);}
149 int NoBlockSend(
const float* data,
int length,
int remoteProcessId,
152 (data, length, remoteProcessId, tag, req); }
153 int NoBlockSend(
const double* data,
int length,
int remoteProcessId,
156 (data, length, remoteProcessId, tag, req); }
168 (data, length, remoteProcessId, tag, req); }
170 int remoteProcessId,
int tag,
173 (data, length, remoteProcessId, tag, req); }
177 (data, length, remoteProcessId, tag, req); }
181 (data, length, remoteProcessId, tag, req); }
185 (data, length, remoteProcessId, tag, req); }
189 (data, length, remoteProcessId, tag, req); }
190 #ifdef VTK_USE_64BIT_IDS
191 int NoBlockReceive(vtkIdType* data,
int length,
int remoteProcessId,
194 (data, length, remoteProcessId, tag, req); }
206 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource)
208 source, tag, flag, actualSource); }
209 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
210 int* type,
int* size)
212 source, tag, flag, actualSource, type, size); }
213 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
214 unsigned long* type,
int* size)
216 source, tag, flag, actualSource, type, size); }
217 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
218 const char* type,
int* size)
220 source, tag, flag, actualSource, type, size); }
221 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
222 float* type,
int* size)
224 source, tag, flag, actualSource, type, size); }
225 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
226 double* type,
int* size)
228 source, tag, flag, actualSource, type, size); }
254 vtkIntArray *completed );
272 vtkIntArray *completed );
274 static const char* GetProcessorName();
293 void InitializeRMICommunicator();
300 void* arg,
int argLength,
int rmiTag,
bool propagate);
310 friend class vtkMPIOutputWindow;
315 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[])
int WaitAny(const int count, vtkMPICommunicator::Request requests[], int &idx)
virtual void Finalize()=0
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)
virtual void MultipleMethodExecute()=0
static int UseSsendForRMI
int NoBlockReceive(unsigned char *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
static void SetUseSsendForRMI(int use_send)
int NoBlockSend(const int *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
virtual void Initialize(int *vtkNotUsed(argc), char ***vtkNotUsed(argv))=0
int NoBlockReceive(unsigned long *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
A subgroup of processes from a communicator.
Process communication using MPI.
static vtkMPICommunicator * WorldRMICommunicator
int NoBlockReceive(float *data, int length, int remoteProcessId, int tag, vtkMPICommunicator::Request &req)
virtual void Initialize(int *argc, char ***argv)
int Iprobe(int source, int tag, int *flag, int *actualSource, double *type, int *size)
virtual void CreateOutputWindow()=0
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)
void PrintSelf(ostream &os, vtkIndent indent)
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)
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
virtual vtkMultiProcessController * PartitionController(int localColor, int localKey)
virtual vtkMultiProcessController * CreateSubController(vtkProcessGroup *group)
int Iprobe(int source, int tag, int *flag, int *actualSource)
Multiprocessing communication superclass.