17template <
typename FPTYPE,
typename Device>
22 const double& try_emin,
23 const double& try_emax,
24 const int& nbands_sto,
43 int re = num_all % np;
67 info_gatherv(
const int& ngroup_per,
const int& np,
const int& num_in_group, MPI_Comm comm_world)
71 MPI_Allgather(&ngroup_per, 1, MPI_INT,
nrecv, 1, MPI_INT, comm_world);
73 for (
int i = 1; i < np; ++i)
77 for (
int i = 0; i < np; ++i)
79 nrecv[i] *= num_in_group;
99template <
typename FPTYPE_IN,
typename FPTYPE_OUT,
typename Device>
105 psi::Psi<std::complex<FPTYPE_OUT>, Device>& psi_out)
125template <
typename FPTYPE,
typename Device>
129 psi::Psi<std::complex<FPTYPE>, Device>& chi_all,
133 const int perbands_sto);
Definition hamilt_sdft_pw.h:11
Definition memory_op.h:61
Definition memory_op.h:45
Check if Emin and Emax are converged.
Definition sto_tool.h:19
void operator()(const int &nche_in, const double &try_emin, const double &try_emax, const int &nbands_sto, K_Vectors *p_kv, Stochastic_WF< std::complex< FPTYPE >, Device > *p_stowf, hamilt::HamiltSdftPW< std::complex< FPTYPE >, Device > *p_hamilt_sto)
Definition sto_tool.cpp:13
convert psi from double to float
Definition sto_tool.h:101
base_device::memory::cast_memory_op< std::complex< FPTYPE_OUT >, std::complex< FPTYPE_IN >, Device, Device > castmem_complex_op
Definition sto_tool.h:103
void operator()(const psi::Psi< std::complex< FPTYPE_IN >, Device > &psi_in, psi::Psi< std::complex< FPTYPE_OUT >, Device > &psi_out)
Definition sto_tool.h:104
gather chi from all processors
Definition sto_tool.h:127
psi::Psi< std::complex< FPTYPE >, Device > * operator()(psi::Psi< std::complex< FPTYPE >, Device > &chi, psi::Psi< std::complex< FPTYPE >, Device > &chi_all, const int &npwx, int *nrecv_sto, int *displs_sto, const int perbands_sto)
Definition sto_tool.cpp:117
gather information from all processors
Definition sto_tool.h:66
info_gatherv(const int &ngroup_per, const int &np, const int &num_in_group, MPI_Comm comm_world)
Definition sto_tool.h:67
int * nrecv
Definition sto_tool.h:88
int * displs
Definition sto_tool.h:89
~info_gatherv()
Definition sto_tool.h:83
structure to distribute calculation among processors
Definition sto_tool.h:38
parallel_distribution(const int &num_all, const int &np, const int myrank)
Definition sto_tool.h:39
int start
Definition sto_tool.h:56
int num_per
Definition sto_tool.h:57