|
| | 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
|
| |