From 1f6e7bebc524a62bb85ab9a29765cbdb70a57f02 Mon Sep 17 00:00:00 2001 From: AsTonyshment Date: Thu, 23 Jul 2026 15:46:13 +0800 Subject: [PATCH] Fix: Prevent MPI communicator growth in LCAO matrix output --- source/source_io/module_dhs/write_dH.cpp | 1 - source/source_io/module_dm/write_dmr.cpp | 1 - source/source_io/module_hs/write_HS_R.cpp | 3 --- source/source_io/module_hs/write_H_terms.cpp | 1 - source/source_lcao/module_deepks/LCAO_deepks_interface.cpp | 1 - source/source_lcao/module_operator_lcao/overlap.cpp | 2 -- 6 files changed, 9 deletions(-) diff --git a/source/source_io/module_dhs/write_dH.cpp b/source/source_io/module_dhs/write_dH.cpp index ea062bf45a4..bf31e4889b5 100644 --- a/source/source_io/module_dhs/write_dH.cpp +++ b/source/source_io/module_dhs/write_dH.cpp @@ -48,7 +48,6 @@ void write_dh_perI(WriteDHParams& params, #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, pv.comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(params.iat2iwt, nat, nbasis); #endif diff --git a/source/source_io/module_dm/write_dmr.cpp b/source/source_io/module_dm/write_dmr.cpp index 713e5a11883..234db48ef8f 100644 --- a/source/source_io/module_dm/write_dmr.cpp +++ b/source/source_io/module_dm/write_dmr.cpp @@ -95,7 +95,6 @@ void write_dmr(const std::vector*> dmr, // gather the parallel matrix to serial matrix #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, paraV.comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(iat2iwt, nat, nbasis); hamilt::HContainer dm_serial(&serialV); diff --git a/source/source_io/module_hs/write_HS_R.cpp b/source/source_io/module_hs/write_HS_R.cpp index f9ebe893ec8..d3a6cfbb0d0 100644 --- a/source/source_io/module_hs/write_HS_R.cpp +++ b/source/source_io/module_hs/write_HS_R.cpp @@ -316,7 +316,6 @@ void ModuleIO::write_hsr(const std::vector*>& hr_vec, #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, paraV.comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(iat2iwt, nat, nbasis); hamilt::HContainer hr_serial(&serialV); @@ -339,7 +338,6 @@ void ModuleIO::write_hsr(const std::vector*>& hr_vec, #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, paraV.comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(iat2iwt, nat, nbasis); hamilt::HContainer sr_serial(&serialV); @@ -410,7 +408,6 @@ void ModuleIO::write_matrix_r(const std::string& matrix_label, // Gather parallel matrix to serial #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, paraV.comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(iat2iwt, nat, nbasis); diff --git a/source/source_io/module_hs/write_H_terms.cpp b/source/source_io/module_hs/write_H_terms.cpp index a94e234a9a2..5560e49d06b 100644 --- a/source/source_io/module_hs/write_H_terms.cpp +++ b/source/source_io/module_hs/write_H_terms.cpp @@ -78,7 +78,6 @@ static void gather_and_write(const std::string& prefix, const int nbasis = hR.get_nbasis(); #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, pv.comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(iat2iwt, nat, nbasis); hamilt::HContainer hr_serial(&serialV); diff --git a/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp index b18b448459a..2bc0bba8ce0 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -528,7 +528,6 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, const int nbasis = hR_tot->get_nbasis(); #ifdef __MPI Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, ParaV->comm()); serialV.set_serial(nbasis, nbasis); serialV.set_atomic_trace(ucell.get_iat2iwt(), ucell.nat, nbasis); hamilt::HContainer hR_serial(&serialV); diff --git a/source/source_lcao/module_operator_lcao/overlap.cpp b/source/source_lcao/module_operator_lcao/overlap.cpp index ebb7a1ed44b..ca3a20b8e13 100644 --- a/source/source_lcao/module_operator_lcao/overlap.cpp +++ b/source/source_lcao/module_operator_lcao/overlap.cpp @@ -413,11 +413,9 @@ void hamilt::Overlap>::output_SR_async_csr(const in #ifdef __MPI // Gather distributed SR_async to rank 0 for serial output - const Parallel_Orbitals* paraV = SR_async->get_paraV(); const int nbasis = SR_async->get_nbasis(); Parallel_Orbitals serial_paraV; - serial_paraV.init(nbasis, nbasis, nbasis, paraV->comm()); serial_paraV.set_serial(nbasis, nbasis); serial_paraV.set_atomic_trace(this->ucell->get_iat2iwt(), this->ucell->nat, nbasis);