Skip to content

Commit

Permalink
Fix MPI overlapping buffer issue
Browse files Browse the repository at this point in the history
  • Loading branch information
stanmoore1 committed Mar 14, 2018
1 parent d62277f commit 52f017d
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions src/comm_types/comm_mpi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,44 +149,44 @@ void CommMPI::create_domain_decomposition() {

void CommMPI::scan_int(T_INT* vals, T_INT count) {
if(std::is_same<T_INT,int>::value) {
MPI_Scan(vals,vals,count,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
MPI_Scan(MPI_IN_PLACE,vals,count,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
}
}

void CommMPI::reduce_int(T_INT* vals, T_INT count) {
if(std::is_same<T_INT,int>::value) {
MPI_Allreduce(vals,vals,count,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
MPI_Allreduce(MPI_IN_PLACE,vals,count,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
}
}

void CommMPI::reduce_float(T_FLOAT* vals, T_INT count) {
if(std::is_same<T_FLOAT,double>::value) {
// This generates MPI_ERR_BUFFER for count>1
MPI_Allreduce(vals,vals,count,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
MPI_Allreduce(MPI_IN_PLACE,vals,count,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
}
}

void CommMPI::reduce_max_int(T_INT* vals, T_INT count) {
if(std::is_same<T_INT,int>::value) {
MPI_Allreduce(vals,vals,count,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
MPI_Allreduce(MPI_IN_PLACE,vals,count,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
}
}

void CommMPI::reduce_max_float(T_FLOAT* vals, T_INT count) {
if(std::is_same<T_FLOAT,double>::value) {
MPI_Allreduce(vals,vals,count,MPI_DOUBLE,MPI_MAX,MPI_COMM_WORLD);
MPI_Allreduce(MPI_IN_PLACE,vals,count,MPI_DOUBLE,MPI_MAX,MPI_COMM_WORLD);
}
}

void CommMPI::reduce_min_int(T_INT* vals, T_INT count) {
if(std::is_same<T_INT,int>::value) {
MPI_Allreduce(vals,vals,count,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
MPI_Allreduce(MPI_IN_PLACE,vals,count,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
}
}

void CommMPI::reduce_min_float(T_FLOAT* vals, T_INT count) {
if(std::is_same<T_FLOAT,double>::value) {
MPI_Allreduce(vals,vals,count,MPI_DOUBLE,MPI_MAX,MPI_COMM_WORLD);
MPI_Allreduce(MPI_IN_PLACE,vals,count,MPI_DOUBLE,MPI_MAX,MPI_COMM_WORLD);
}
}

Expand Down

0 comments on commit 52f017d

Please sign in to comment.