|
| PW_Basis_Big () |
|
| PW_Basis_Big (std::string device_, std::string precision_) |
|
| ~PW_Basis_Big () |
|
void | setbxyz (const int bx_in, const int by_in, const int bz_in) |
|
void | autoset_big_cell_size (int &b_size, const int &nc_size, const int nproc=0) |
|
virtual void | initgrids (const double lat0_in, const ModuleBase::Matrix3 latvec_in, const double gridecut) |
|
virtual void | initgrids (const double lat0_in, const ModuleBase::Matrix3 latvec_in, const int nx_in, int ny_in, int nz_in) |
|
virtual void | distribute_r () |
| distribute real-space grids to different processors
|
|
| PW_Basis_Sup () |
|
| PW_Basis_Sup (std::string device_, std::string precision_) |
|
| ~PW_Basis_Sup () |
|
void | setuptransform (const ModulePW::PW_Basis *pw_rho) |
|
| PW_Basis () |
|
| PW_Basis (std::string device_, std::string precision_) |
|
virtual | ~PW_Basis () |
|
void | initmpi (const int poolnproc_in, const int poolrank_in, MPI_Comm pool_world_in) |
|
void | initparameters (const bool gamma_only_in, const double pwecut_in, const int distribution_type_in=1, const bool xprime_in=true) |
|
void | setfullpw (const bool inpt_full_pw=false, const int inpt_full_pw_dim=0) |
|
void | setuptransform () |
|
void | collect_local_pw () |
|
void | collect_uniqgg () |
|
template<typename FPTYPE > |
void | real2recip (const FPTYPE *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const |
| transform real space to reciprocal space
|
|
template<typename FPTYPE > |
void | real2recip (const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const |
| transform real space to reciprocal space
|
|
template<typename FPTYPE > |
void | recip2real (const std::complex< FPTYPE > *in, FPTYPE *out, const bool add=false, const FPTYPE factor=1.0) const |
| transform reciprocal space to real space
|
|
template<typename FPTYPE > |
void | recip2real (const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const |
| transform reciprocal space to real space
|
|
template<typename FPTYPE > |
void | real2recip_gpu (const FPTYPE *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const |
|
template<typename FPTYPE > |
void | real2recip_gpu (const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const |
|
template<typename FPTYPE > |
void | recip2real_gpu (const std::complex< FPTYPE > *in, FPTYPE *out, const bool add=false, const FPTYPE factor=1.0) const |
|
template<typename FPTYPE > |
void | recip2real_gpu (const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const |
|
template<typename TK , typename TR , typename Device , typename std::enable_if<!std::is_same< TK, typename GetTypeReal< TK >::type >::value &&(std::is_same< TR, typename GetTypeReal< TK >::type >::value||std::is_same< TR, TK >::value) &&std::is_same< Device, base_device::DEVICE_CPU >::value, int >::type = 0> |
void | recip_to_real (TK *in, TR *out, const bool add=false, const typename GetTypeReal< TK >::type factor=1.0) const |
| Converts data from reciprocal space to real space on Cpu.
|
|
template<typename TK , typename TR , typename Device , typename std::enable_if<!std::is_same< TK, typename GetTypeReal< TK >::type >::value &&(std::is_same< TR, typename GetTypeReal< TK >::type >::value||std::is_same< TR, TK >::value) &&std::is_same< Device, base_device::DEVICE_GPU >::value, int >::type = 0> |
void | recip_to_real (TK *in, TR *out, const bool add=false, const typename GetTypeReal< TK >::type factor=1.0) const |
| Converts data from reciprocal space (Fourier space) to real space.
|
|
template<typename TR , typename TK , typename Device , typename std::enable_if<!std::is_same< TK, typename GetTypeReal< TK >::type >::value &&(std::is_same< TR, typename GetTypeReal< TK >::type >::value||std::is_same< TR, TK >::value) &&std::is_same< Device, base_device::DEVICE_CPU >::value, int >::type = 0> |
void | real_to_recip (TR *in, TK *out, const bool add=false, const typename GetTypeReal< TK >::type factor=1.0) const |
| Converts data from real space to reciprocal space (Fourier space).
|
|
template<typename TR , typename TK , typename Device , typename std::enable_if<!std::is_same< TK, typename GetTypeReal< TK >::type >::value &&(std::is_same< TR, typename GetTypeReal< TK >::type >::value||std::is_same< TR, TK >::value) &&std::is_same< Device, base_device::DEVICE_GPU >::value, int >::type = 0> |
void | real_to_recip (TR *in, TK *out, const bool add=false, const typename GetTypeReal< TK >::type factor=1.0) const |
|
void | getfftixy2is (int *fftixy2is) const |
|
void | set_device (std::string device_) |
|
void | set_precision (std::string precision_) |
|
std::string | get_device () const |
|
std::string | get_precision () const |
|
|
using | resmem_int_op = base_device::memory::resize_memory_op< int, base_device::DEVICE_GPU > |
|
using | delmem_int_op = base_device::memory::delete_memory_op< int, base_device::DEVICE_GPU > |
|
using | syncmem_int_h2d_op = base_device::memory::synchronize_memory_op< int, base_device::DEVICE_GPU, base_device::DEVICE_CPU > |
|
void | distribute_g (const ModulePW::PW_Basis *pw_rho) |
|
void | distribution_method3 (const ModulePW::PW_Basis *pw_rho) |
|
void | divide_sticks_3 (const int *st_length2D, const int *st_i, const int *st_j, const int *st_length, const int *fftixy2ip_s, const int &nx_s, const int &ny_s) |
|
void | get_ig2isz_is2fftixy (int *st_bottom2D, int *st_length2D, const ModulePW::PW_Basis *pw_rho) |
|
void | distribute_g () |
| distribute plane waves to different cores
|
|
void | getstartgr () |
|
void | distribution_method1 () |
|
void | divide_sticks_1 (int *st_i, int *st_j, int *st_length) |
| (3-1) Distribute sticks to cores according to the number of plane waves.
|
|
void | distribution_method2 () |
|
void | divide_sticks_2 () |
| (2) Devide the sticks to each core according to the number of sticks Sticks are in the order of ixy increasing.
|
|
void | count_pw_st (int *st_length2D, int *st_bottom2D) |
| (1) We count the total number of planewaves (tot_npw) and sticks (this->nstot) here.
|
|
void | get_ig2isz_is2fftixy (int *st_bottom, int *st_length) |
| (5) Construct ig2isz, and is2fftixy.
|
|
void | collect_st (int *st_length2D, int *st_bottom2D, int *st_i, int *st_j, int *st_length) |
| (2) Collect the x, y indexs, length of the sticks.
|
|
void | get_istot2ixy (int *st_i, int *st_j) |
| (3-2) Rearrange sticks in the order of the ip of core increasing, in each core, sticks are sorted in the order of ixy increasing.
|
|
void | create_maps (int *st_length2D) |
| (3) Create the maps from ixy to ip, istot, and from istot to ixy, and construt npw_per simultaneously.
|
|
template<typename T > |
void | gatherp_scatters (std::complex< T > *in, std::complex< T > *out) const |
| gather planes and scatter sticks
|
|
template<typename T > |
void | gathers_scatterp (std::complex< T > *in, std::complex< T > *out) const |
| gather sticks and scatter planes
|
|
int * | startnsz_per =nullptr |
|
std::string | device = "cpu" |
| cpu or gpu
|
|
std::string | precision = "double" |
| single, double, mixing
|
|
bool | double_data_ = true |
| if has double data
|
|
bool | float_data_ = false |
| if has float data
|
|