33 #ifndef __H__PCL_METHODS__
34 #define __H__PCL_METHODS__
61 #define PCL_RO_MAX MPI_MAX
62 #define PCL_RO_MIN MPI_MIN
63 #define PCL_RO_SUM MPI_SUM
64 #define PCL_RO_PROD MPI_PROD
65 #define PCL_RO_LAND MPI_LAND
66 #define PCL_RO_BAND MPI_BAND
67 #define PCL_RO_LOR MPI_LOR
68 #define PCL_RO_BOR MPI_BOR
69 #define PCL_RO_LXOR MPI_LXOR
70 #define PCL_RO_BXOR MPI_BXOR
71 #define PCL_RO_MAXLOC MPI_MAXLOC
72 #define PCL_RO_MINLOC MPI_MINLOC
84 void SendData(
ProcID destProc,
void* pBuffer,
int bufferSize,
int tag);
91 void* pBuffer,
int bufferSizePerProc,
int tag);
103 void* pBuffer,
int* pBufferSegSizes,
int tag);
112 void* pBuffer,
int* pBufferSegSizes,
int tag);
128 inline void MPI_Waitall(
int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses)
136 inline void Waitall(std::vector<MPI_Request> &requests, std::vector<MPI_Status> &statuses)
140 assert(requests.size() == statuses.size());
141 if(requests.size() > 0)
146 inline void Waitall(std::vector<MPI_Request> &requests)
150 if(requests.size() > 0)
155 inline void Waitall(std::vector<MPI_Request> &requests, std::vector<MPI_Request> &requests2)
159 if(requests.size() > 0)
pcl::MPI_Waitall(requests.size(), &requests[0], MPI_STATUSES_IGNORE);
160 if(requests2.size() > 0)
pcl::MPI_Waitall(requests2.size(), &requests2[0], MPI_STATUSES_IGNORE);
164 inline int MPI_Wait(MPI_Request *request, MPI_Status *status=MPI_STATUS_IGNORE)
MPI_Datatype DataType
Definition: pcl_datatype.h:61
int MPI_Wait(MPI_Request *request, MPI_Status *status=MPI_STATUS_IGNORE)
Definition: pcl_methods.h:164
void SendData(ProcID destProc, void *pBuffer, int bufferSize, int tag)
sends data to another process. data may be received using
Definition: pcl_methods.cpp:51
int ProcID
Definition: pcl_methods.h:58
void ReceiveData(void *pBuffOut, ProcID srcProc, int bufferSize, int tag)
receives the data that was send with
Definition: pcl_methods.cpp:63
void Waitall(std::vector< MPI_Request > &requests, std::vector< MPI_Status > &statuses)
Definition: pcl_methods.h:136
MPI_Op ReduceOperation
Definition: pcl_methods.h:74
void AllReduce(void *sendBuf, void *recBuf, int count, DataType type, ReduceOperation op)
reduces the data to a single buffer using the specified ReduceOperation and distributes the result to...
Definition: pcl_methods.cpp:146
void CollectData(ProcID thisProcID, int firstSendProc, int numSendProcs, void *pBuffer, int bufferSizePerProc, int tag)
collect the data send with send_data from proc firstSendProc to numSendProcs excluding destProc.
Definition: pcl_methods.cpp:77
void MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses)
Definition: pcl_methods.h:128
double Time()
returns the time in seconds
Definition: pcl_methods.cpp:44
void DistributeData(ProcID thisProcID, int firstRecProc, int numRecProcs, void *pBuffer, int *pBufferSegSizes, int tag)
sends the data in the different sections of the buffer to the specified processes.
Definition: pcl_methods.cpp:101
Definition: parallel_grid_layout.h:46
#define PROFILE_FUNC_GROUP(groups)
Definition: profiler.h:258