From 615c947c01bb9a7690dbeef263787fa613d3a796 Mon Sep 17 00:00:00 2001 From: gitpeterwind Date: Thu, 24 Aug 2023 15:26:46 +0200 Subject: [PATCH] bug in disjoin and adjoin with 1 MPI --- src/qmfunctions/orbital_utils.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qmfunctions/orbital_utils.cpp b/src/qmfunctions/orbital_utils.cpp index 9b05e36d2..ea737343e 100644 --- a/src/qmfunctions/orbital_utils.cpp +++ b/src/qmfunctions/orbital_utils.cpp @@ -332,7 +332,7 @@ OrbitalVector orbital::param_copy(const OrbitalVector &Phi) { OrbitalVector orbital::adjoin(OrbitalVector &Phi_a, OrbitalVector &Phi_b) { OrbitalVector out; for (auto &phi : Phi_a) { - if (phi.getRank() != out.size()) { + if (phi.getRank() % mrcpp::mpi::wrk_size != out.size() % mrcpp::mpi::wrk_size) { // need to send orbital from owner to new owner if (mrcpp::mpi::my_orb(phi)) { mrcpp::mpi::send_function(phi, out.size() % mrcpp::mpi::wrk_size, phi.getRank(), mrcpp::mpi::comm_wrk); } if (mrcpp::mpi::my_orb(out.size())) { mrcpp::mpi::recv_function(phi, phi.getRank() % mrcpp::mpi::wrk_size, phi.getRank(), mrcpp::mpi::comm_wrk); } @@ -341,7 +341,7 @@ OrbitalVector orbital::adjoin(OrbitalVector &Phi_a, OrbitalVector &Phi_b) { out.push_back(phi); } for (auto &phi : Phi_b) { - if (phi.getRank() != out.size()) { + if (phi.getRank() % mrcpp::mpi::wrk_size != out.size() % mrcpp::mpi::wrk_size) { // need to send orbital from owner to new owner if (mrcpp::mpi::my_orb(phi)) { mrcpp::mpi::send_function(phi, out.size() % mrcpp::mpi::wrk_size, phi.getRank(), mrcpp::mpi::comm_wrk); } if (mrcpp::mpi::my_orb(out.size())) { mrcpp::mpi::recv_function(phi, phi.getRank() % mrcpp::mpi::wrk_size, phi.getRank(), mrcpp::mpi::comm_wrk); } @@ -366,7 +366,7 @@ OrbitalVector orbital::disjoin(OrbitalVector &Phi, int spin) { OrbitalVector tmp; for (auto &i : Phi) { if (i.spin() == spin) { - if (i.getRank() != out.size()) { + if (i.getRank() % mrcpp::mpi::wrk_size != out.size() % mrcpp::mpi::wrk_size) { // need to send orbital from owner to new owner if (mrcpp::mpi::my_orb(i)) { mrcpp::mpi::send_function(i, out.size() % mrcpp::mpi::wrk_size, i.getRank(), mrcpp::mpi::comm_wrk); } if (mrcpp::mpi::my_orb(out.size())) { mrcpp::mpi::recv_function(i, i.getRank() % mrcpp::mpi::wrk_size, i.getRank(), mrcpp::mpi::comm_wrk); } @@ -374,7 +374,7 @@ OrbitalVector orbital::disjoin(OrbitalVector &Phi, int spin) { i.setRank(out.size()); out.push_back(i); } else { - if (i.getRank() != tmp.size()) { + if (i.getRank() % mrcpp::mpi::wrk_size != tmp.size() % mrcpp::mpi::wrk_size) { // need to send orbital from owner to new owner if (mrcpp::mpi::my_orb(i)) { mrcpp::mpi::send_function(i, tmp.size() % mrcpp::mpi::wrk_size, i.getRank(), mrcpp::mpi::comm_wrk); } if (mrcpp::mpi::my_orb(tmp.size())) { mrcpp::mpi::recv_function(i, i.getRank() % mrcpp::mpi::wrk_size, i.getRank(), mrcpp::mpi::comm_wrk); }