|
19 | 19 |
|
20 | 20 | #ifdef __MPI |
21 | 21 | #include <mpi.h> |
| 22 | +#include "source_base/parallel_comm.h" |
22 | 23 | #endif |
23 | 24 |
|
24 | 25 | using namespace hsolver; |
@@ -583,62 +584,9 @@ void Diago_DavSubspace<T, Device>::cal_elem(const int& dim, |
583 | 584 | // Only on dsp hardware need an extra space to reduce data |
584 | 585 | mtfunc::dsp_dav_subspace_reduce(hcc, scc, nbase, this->nbase_x, this->notconv, this->diag_comm.comm); |
585 | 586 | #else |
586 | | - auto* swap = new T[notconv * this->nbase_x]; |
587 | | - |
588 | | - syncmem_complex_op()(swap, hcc + nbase * this->nbase_x, notconv * this->nbase_x); |
589 | | - |
590 | | - if (std::is_same<T, double>::value) |
591 | | - { |
592 | | - Parallel_Reduce::reduce_pool(hcc + nbase * this->nbase_x, notconv * this->nbase_x); |
593 | | - Parallel_Reduce::reduce_pool(scc + nbase * this->nbase_x, notconv * this->nbase_x); |
594 | | - } |
595 | | - else |
596 | | - { |
597 | | - if (base_device::get_current_precision(swap) == "single") |
598 | | - { |
599 | | - MPI_Reduce(swap, |
600 | | - hcc + nbase * this->nbase_x, |
601 | | - notconv * this->nbase_x, |
602 | | - MPI_COMPLEX, |
603 | | - MPI_SUM, |
604 | | - 0, |
605 | | - this->diag_comm.comm); |
606 | | - } |
607 | | - else |
608 | | - { |
609 | | - MPI_Reduce(swap, |
610 | | - hcc + nbase * this->nbase_x, |
611 | | - notconv * this->nbase_x, |
612 | | - MPI_DOUBLE_COMPLEX, |
613 | | - MPI_SUM, |
614 | | - 0, |
615 | | - this->diag_comm.comm); |
616 | | - } |
617 | | - |
618 | | - syncmem_complex_op()(swap, scc + nbase * this->nbase_x, notconv * this->nbase_x); |
619 | | - |
620 | | - if (base_device::get_current_precision(swap) == "single") |
621 | | - { |
622 | | - MPI_Reduce(swap, |
623 | | - scc + nbase * this->nbase_x, |
624 | | - notconv * this->nbase_x, |
625 | | - MPI_COMPLEX, |
626 | | - MPI_SUM, |
627 | | - 0, |
628 | | - this->diag_comm.comm); |
629 | | - } |
630 | | - else |
631 | | - { |
632 | | - MPI_Reduce(swap, |
633 | | - scc + nbase * this->nbase_x, |
634 | | - notconv * this->nbase_x, |
635 | | - MPI_DOUBLE_COMPLEX, |
636 | | - MPI_SUM, |
637 | | - 0, |
638 | | - this->diag_comm.comm); |
639 | | - } |
640 | | - } |
641 | | - delete[] swap; |
| 587 | + assert(this->diag_comm.comm == POOL_WORLD); |
| 588 | + Parallel_Reduce::reduce_pool(hcc + nbase * this->nbase_x, notconv * this->nbase_x); |
| 589 | + Parallel_Reduce::reduce_pool(scc + nbase * this->nbase_x, notconv * this->nbase_x); |
642 | 590 | #endif |
643 | 591 | } |
644 | 592 | #endif |
|
0 commit comments