00001 #ifndef MPIExchangeBlocksInfo_H_ 00002 #define MPIExchangeBlocksInfo_H_ 00003 00004 #include <mpi.h> 00005 00006 class MPIMessageSpec 00007 { 00008 public: 00009 int *displacement; 00010 int *count; 00011 MPI::Datatype *datatype; 00012 00013 void **buffer; 00014 00015 typedef enum { contentAnalog, contentMixed, contentSpiking} ContentType_t; 00016 00017 ContentType_t content_type; 00018 00019 bool hasContent; 00020 00021 }; 00022 00023 class MPIExchangeBlocksInfo 00024 { 00025 public: 00026 MPIExchangeBlocksInfo(int numBlocks); 00027 virtual ~MPIExchangeBlocksInfo(); 00028 00029 bool * hasContent; 00030 00031 void * baseBufferPtr; 00032 00033 int * counts; 00034 int * displs; 00035 void **buffers; 00036 00037 MPI::Datatype * datatypes; 00038 00039 int numBlocks; 00040 00041 MPIMessageSpec::ContentType_t * content_types; 00042 00043 MPIMessageSpec getMsgSpec(int buf_idx); 00044 00045 }; 00046 00047 00048 #endif /*MPIExchangeBlocksInfo_H_*/