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) VTK_OVERRIDE;
101 int remoteProcessId,
int tag) VTK_OVERRIDE;
103 int remoteProcessId,
int tag) VTK_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() VTK_OVERRIDE;
168 int srcProcessId) VTK_OVERRIDE;
169 virtual
int GatherVoidArray(const
void *sendBuffer,
void *recvBuffer,
170 vtkIdType length,
int type,
int destProcessId) VTK_OVERRIDE;
171 virtual
int GatherVVoidArray(const
void *sendBuffer,
void *recvBuffer,
173 vtkIdType *offsets,
int type,
int destProcessId) VTK_OVERRIDE;
174 virtual
int ScatterVoidArray(const
void *sendBuffer,
void *recvBuffer,
175 vtkIdType length,
int type,
int srcProcessId) VTK_OVERRIDE;
176 virtual
int ScatterVVoidArray(const
void *sendBuffer,
void *recvBuffer,
179 int srcProcessId) VTK_OVERRIDE;
180 virtual
int AllGatherVoidArray(const
void *sendBuffer,
void *recvBuffer,
181 vtkIdType length,
int type) VTK_OVERRIDE;
182 virtual
int AllGatherVVoidArray(const
void *sendBuffer,
void *recvBuffer,
184 vtkIdType *offsets,
int type) VTK_OVERRIDE;
185 virtual
int ReduceVoidArray(const
void *sendBuffer,
void *recvBuffer,
187 int operation,
int destProcessId) VTK_OVERRIDE;
188 virtual
int ReduceVoidArray(const
void *sendBuffer,
void *recvBuffer,
190 Operation *operation,
int destProcessId) VTK_OVERRIDE;
191 virtual
int AllReduceVoidArray(const
void *sendBuffer,
void *recvBuffer,
193 int operation) VTK_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,
211 int* type,
int*
size);
212 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
213 unsigned long* type,
int* size);
214 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
215 const
char* type,
int* size);
216 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
217 float* type,
int* size);
218 int Iprobe(
int source,
int tag,
int* flag,
int* actualSource,
219 double* type,
int* size);
226 int WaitAll(const
int count,
Request requests[]);
233 int WaitAny(const
int count,
Request requests[],
int& idx);
241 const
int count,
Request requests[],
int &NCompleted,
int *completed );
248 int TestAll( const
int count,
Request requests[],
int& flag );
253 int TestAny(const
int count,
Request requests[],
int &idx,
int &flag );
261 int TestSome(const
int count,
Request requests[],
262 int& NCompleted,
int *completed);
266 vtkMPICommunicatorOpaqueComm *GetMPIComm()
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);
302 int InitializeNumberOfProcesses();
338 virtual int ReceiveDataInternal(
340 int remoteProcessId,
int tag,
341 vtkMPICommunicatorReceiveDataInfo*
info,
342 int useCopy,
int& senderId);
351 static int CheckForMPIError(
int err);
A custom operation to use in a reduce command.
vtkMPICommunicatorOpaqueRequest * Req
static vtkMPICommunicator * WorldCommunicator
Class for creating user defined MPI communicators.
Tests instantiations of the vtkNew class template.
vtkMPICommunicatorOpaqueComm * MPIComm
a simple class to control print indentation
A subgroup of processes from a communicator.
Process communication using MPI.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
Used to send/receive messages in a multiprocess environment.