38 #ifndef __vtkMPICommunicator_h
39 #define __vtkMPICommunicator_h
46 class vtkMPICommunicatorOpaqueComm;
47 class vtkMPICommunicatorOpaqueRequest;
48 class vtkMPICommunicatorReceiveDataInfo;
65 vtkMPICommunicatorOpaqueRequest*
Req;
71 void PrintSelf(ostream& os,
vtkIndent indent);
94 int remoteProcessId,
int tag);
96 int remoteProcessId,
int tag);
104 int NoBlockSend(
const int*
data,
int length,
int remoteProcessId,
int tag,
106 int NoBlockSend(
const unsigned long*
data,
int length,
int remoteProcessId,
108 int NoBlockSend(
const char*
data,
int length,
int remoteProcessId,
110 int NoBlockSend(
const float*
data,
int length,
int remoteProcessId,
118 int NoBlockReceive(
int*
data,
int length,
int remoteProcessId,
120 int NoBlockReceive(
unsigned long*
data,
int length,
121 int remoteProcessId,
int tag,
Request& req);
122 int NoBlockReceive(
char*
data,
int length,
int remoteProcessId,
124 int NoBlockReceive(
float*
data,
int length,
int remoteProcessId,
126 #ifdef VTK_USE_64BIT_IDS
136 virtual void Barrier();
139 virtual int GatherVoidArray(
const void *sendBuffer,
void *recvBuffer,
141 virtual int GatherVVoidArray(
const void *sendBuffer,
void *recvBuffer,
144 virtual int ScatterVoidArray(
const void *sendBuffer,
void *recvBuffer,
146 virtual int ScatterVVoidArray(
const void *sendBuffer,
void *recvBuffer,
150 virtual int AllGatherVoidArray(
const void *sendBuffer,
void *recvBuffer,
152 virtual int AllGatherVVoidArray(
const void *sendBuffer,
void *recvBuffer,
155 virtual int ReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
157 int operation,
int destProcessId);
158 virtual int ReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
160 Operation *operation,
int destProcessId);
161 virtual int AllReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
164 virtual int AllReduceVoidArray(
const void *sendBuffer,
void *recvBuffer,
175 return this->MPIComm;
179 static char* Allocate(
size_t size);
180 static void Free(
char* ptr);
186 vtkSetClampMacro(UseSsend,
int, 0, 1);
187 vtkGetMacro(UseSsend,
int);
188 vtkBooleanMacro(UseSsend,
int);
204 int InitializeNumberOfProcesses();
214 vtkSetMacro(KeepHandle,
int);
215 vtkBooleanMacro(KeepHandle,
int);
233 virtual int ReceiveDataInternal(
235 int remoteProcessId,
int tag,
236 vtkMPICommunicatorReceiveDataInfo*
info,
237 int useCopy,
int& senderId);
247 static int CheckForMPIError(
int err);