@@ -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