[cig-commits] [commit] master: Fix sweep collection MPI datatype (b5f63a4)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Wed Oct 8 17:05:30 PDT 2014
Repository : https://github.com/geodynamics/vc
On branch : master
Link : https://github.com/geodynamics/vc/compare/23464fca3efa2b6ad7ee0ce8f60c225b18b49741...e4325192ad1118379f46ba66899cb98143d09e04
>---------------------------------------------------------------
commit b5f63a47147afa2c32f89b17052421b047174313
Author: Eric Heien <emheien at ucdavis.edu>
Date: Wed Sep 24 16:21:36 2014 -0700
Fix sweep collection MPI datatype
>---------------------------------------------------------------
b5f63a47147afa2c32f89b17052421b047174313
src/core/VCBlock.h | 5 +++--
src/core/VCComm.cpp | 17 ++++++++++-------
src/core/VCComm.h | 2 +-
3 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/core/VCBlock.h b/src/core/VCBlock.h
index 6522be7..7438f58 100644
--- a/src/core/VCBlock.h
+++ b/src/core/VCBlock.h
@@ -62,8 +62,9 @@ enum BlockValOp {
};
struct BlockSweepVals {
- double slip, init_shear, init_normal, final_shear, final_normal;
- BlockID block_id;
+ double slip, init_shear, init_normal, final_shear, final_normal;
+ unsigned int sweep_num;
+ BlockID element_id;
};
typedef struct BlockSweepVals BlockSweepVals;
diff --git a/src/core/VCComm.cpp b/src/core/VCComm.cpp
index e4c20c0..bc071b0 100644
--- a/src/core/VCComm.cpp
+++ b/src/core/VCComm.cpp
@@ -166,9 +166,9 @@ int VCComm::broadcastValue(const int &bval) {
*/
VCComm::VCComm(void) {
#ifdef MPI_C_FOUND
- int block_lengths[2];
- MPI_Aint displacements[2];
- MPI_Datatype datatypes[2];
+ int block_lengths[3];
+ MPI_Aint displacements[3];
+ MPI_Datatype datatypes[3];
updateFieldCounts = updateFieldDisps = NULL;
updateFieldSendBuf = updateFieldRecvBuf = NULL;
@@ -193,13 +193,16 @@ VCComm::VCComm(void) {
// Register BlockSweepVals datatype
block_lengths[0] = 5;
block_lengths[1] = 1;
+ block_lengths[2] = 1;
displacements[0] = 0;
displacements[1] = 5*sizeof(double);
+ displacements[1] = 5*sizeof(double)+sizeof(unsigned int);
datatypes[0] = MPI_DOUBLE;
- datatypes[1] = MPI_INT;
+ datatypes[1] = MPI_UNSIGNED;
+ datatypes[2] = MPI_INT;
- MPI_Type_struct(2, block_lengths, displacements, datatypes, &block_sweep_type);
- MPI_Type_commit(&block_sweep_type);
+ MPI_Type_struct(3, block_lengths, displacements, datatypes, &element_sweep_type);
+ MPI_Type_commit(&element_sweep_type);
#endif
}
@@ -230,6 +233,6 @@ VCComm::~VCComm(void) {
MPI_Op_free(&bv_min_op);
MPI_Op_free(&bv_max_op);
MPI_Op_free(&bv_sum_op);
- MPI_Type_free(&block_sweep_type);
+ MPI_Type_free(&element_sweep_type);
#endif
}
diff --git a/src/core/VCComm.h b/src/core/VCComm.h
index e4ec7f8..72afd96 100644
--- a/src/core/VCComm.h
+++ b/src/core/VCComm.h
@@ -53,7 +53,7 @@ class VCComm : virtual public SimTimer {
MPI_Op bv_min_op, bv_max_op, bv_sum_op;
//! Registered MPI datatype for the block-sweep data structure
- MPI_Datatype block_sweep_type;
+ MPI_Datatype element_sweep_type;
#endif
public:
More information about the CIG-COMMITS
mailing list