36 #ifndef vtkMPICommunicator_h
37 #define vtkMPICommunicator_h
39 #include "vtkParallelMPIModule.h"
45 class vtkMPICommunicatorOpaqueComm;
46 class vtkMPICommunicatorOpaqueRequest;
47 class vtkMPICommunicatorReceiveDataInfo;
63 vtkMPICommunicatorOpaqueRequest*
Req;
67 void PrintSelf(ostream& os,
vtkIndent indent)
override;
101 int remoteProcessId,
int tag)
override;
103 int remoteProcessId,
int tag)
override;
115 int NoBlockSend(
const int*
data,
int length,
int remoteProcessId,
int tag,
117 int NoBlockSend(
const unsigned long*
data,
int length,
int remoteProcessId,
119 int NoBlockSend(
const char*
data,
int length,
int remoteProcessId,
121 int NoBlockSend(
const unsigned char*
data,
int length,
int remoteProcessId,
123 int NoBlockSend(
const float*
data,
int length,
int remoteProcessId,
125 int NoBlockSend(
const double*
data,
int length,
int remoteProcessId,
127 #ifdef VTK_USE_64BIT_IDS
141 int NoBlockReceive(
int*
data,
int length,
int remoteProcessId,
143 int NoBlockReceive(
unsigned long*
data,
int length,
144 int remoteProcessId,
int tag,
Request& req);
145 int NoBlockReceive(
char*
data,
int length,
int remoteProcessId,
147 int NoBlockReceive(
unsigned char*
data,
int length,
int remoteProcessId,
149 int NoBlockReceive(
float*
data,
int length,
int remoteProcessId,
151 int NoBlockReceive(
double*
data,
int length,
int remoteProcessId,
153 #ifdef VTK_USE_64BIT_IDS
166 virtual void Barrier()
override;
168 int srcProcessId)
override;
169 virtual int GatherVoidArray(
const void *sendBuffer,
void *recvBuffer,
171 virtual int GatherVVoidArray(
const void *sendBuffer,
void *recvBuffer,
174 virtual int ScatterVoidArray(
const void *sendBuffer,
void *recvBuffer,
176 virtual int ScatterVVoidArray(
const void *sendBuffer,
void *recvBuffer,
179 int srcProcessId)
override;
180 virtual int AllGatherVoidArray(
const void *sendBuffer,
void *recvBuffer,
182 virtual int AllGatherVVoidArray(
const void *sendBuffer,
void *recvBuffer,
185 virtual int ReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
187 int operation,
int destProcessId)
override;
188 virtual int ReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
190 Operation *operation,
int destProcessId)
override;
191 virtual int AllReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
193 int operation)
override;
194 virtual int AllReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
209 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource);
210 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
212 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
214 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
216 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
218 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
226 int WaitAll(
const int count,
Request requests[]);
241 const int count,
Request requests[],
int &NCompleted,
int *completed )
VTK_SIZEHINT(requests, count);
248 int TestAll(
const int count,
Request requests[],
int& flag )
VTK_SIZEHINT(requests, count);
253 int TestAny(
const int count,
Request requests[],
int &idx,
int &flag )
VTK_SIZEHINT(requests, count);
261 int TestSome(
const int count,
Request requests[],
262 int& NCompleted,
int *completed)
VTK_SIZEHINT(requests, count);
268 return this->MPIComm;
271 int InitializeExternal(vtkMPICommunicatorOpaqueComm *comm);
273 static char* Allocate(
size_t size);
274 static void Free(
char* ptr);
282 vtkSetClampMacro(UseSsend,
int, 0, 1);
283 vtkGetMacro(UseSsend,
int);
284 vtkBooleanMacro(UseSsend,
int);
302 int InitializeNumberOfProcesses();
315 vtkSetMacro(KeepHandle,
int);
316 vtkBooleanMacro(KeepHandle,
int);
338 virtual int ReceiveDataInternal(
340 int remoteProcessId,
int tag,
341 vtkMPICommunicatorReceiveDataInfo*
info,
342 int useCopy,
int& senderId);
351 static int CheckForMPIError(
int err);