Skip to content

Commit 5f17633

Browse files
committed
fix mpi reduce long double
1 parent 3d28b9b commit 5f17633

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/core/parallel_mpi.hpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ template <typename S> struct MPICommunicator : ParallelCommunicator<S> {
152152
void broadcast(long double *data, size_t len, int owner) override {
153153
_t.get_time();
154154
for (size_t offset = 0; offset < len; offset += chunk_size) {
155-
int ierr = MPI_Bcast((double *)(data + offset),
156-
min(chunk_size, len - offset) * 2, MPI_DOUBLE,
155+
int ierr = MPI_Bcast((long double *)(data + offset),
156+
min(chunk_size, len - offset), MPI_LONG_DOUBLE,
157157
owner, comm);
158158
assert(ierr == 0);
159159
}
@@ -162,9 +162,9 @@ template <typename S> struct MPICommunicator : ParallelCommunicator<S> {
162162
void broadcast(complex<long double> *data, size_t len, int owner) override {
163163
_t.get_time();
164164
for (size_t offset = 0; offset < len; offset += chunk_size) {
165-
int ierr = MPI_Bcast((double *)(data + offset),
166-
min(chunk_size, len - offset) * 4, MPI_DOUBLE,
167-
owner, comm);
165+
int ierr = MPI_Bcast((long double *)(data + offset),
166+
min(chunk_size, len - offset) * 2,
167+
MPI_LONG_DOUBLE, owner, comm);
168168
assert(ierr == 0);
169169
}
170170
tcomm += _t.get_time();
@@ -419,19 +419,20 @@ template <typename S> struct MPICommunicator : ParallelCommunicator<S> {
419419
void allreduce_min(long double *data, size_t len) override {
420420
_t.get_time();
421421
for (size_t offset = 0; offset < len; offset += chunk_size) {
422-
int ierr = MPI_Allreduce(MPI_IN_PLACE, (double *)(data + offset),
423-
min(chunk_size, len - offset) * 2,
424-
MPI_DOUBLE, MPI_MIN, comm);
422+
int ierr = MPI_Allreduce(
423+
MPI_IN_PLACE, (long double *)(data + offset),
424+
min(chunk_size, len - offset), MPI_LONG_DOUBLE, MPI_MIN, comm);
425425
assert(ierr == 0);
426426
}
427427
tcomm += _t.get_time();
428428
}
429429
void allreduce_min(complex<long double> *data, size_t len) override {
430430
_t.get_time();
431431
for (size_t offset = 0; offset < len; offset += chunk_size) {
432-
int ierr = MPI_Allreduce(MPI_IN_PLACE, (double *)(data + offset),
433-
min(chunk_size, len - offset) * 4,
434-
MPI_DOUBLE, MPI_MIN, comm);
432+
int ierr =
433+
MPI_Allreduce(MPI_IN_PLACE, (long double *)(data + offset),
434+
min(chunk_size, len - offset) * 2,
435+
MPI_LONG_DOUBLE, MPI_MIN, comm);
435436
assert(ierr == 0);
436437
}
437438
tcomm += _t.get_time();

0 commit comments

Comments
 (0)