ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <transfer.h>
Public Member Functions | |
HTransPara (int n_processes, HContainer< T > *hr_in) | |
~HTransPara () | |
void | cal_orb_indexes (int irank, std::vector< int > *orb_indexes=nullptr) |
calculate Orbital indexes and will be send to irank the format of the return value is: [size_i, atom_i, number_orb_row, 0, 1, 2, 3, 8, 9, 10, 11, number_orb_col, ... atom_i, number_orb_row, 4, 5, 6, 7, atom_i, ... number_orb_col, ...] i refers to the ith atom in this->ap_indexes[irank] the function is called in plan_indexes | |
void | receive_ap_indexes (int irank, const int *ap_indexes_in=nullptr, const long &size_ap_indexes_in=0) |
receive AtomPair_indexes from the ith rank save to this->ap_indexes[irank] | |
void | send_orb_indexes (int irank, MPI_Request *request=nullptr) |
pack data in this->hr, and send to ith rank | |
void | send_data (int irank, MPI_Request *request=nullptr) |
pack data in this->hr, and send to ith rank | |
void | receive_data (int irank, const T *values=nullptr) |
receive data from ith rank, save them to this->hr | |
void | pack_data (int irank, T *values=nullptr) |
pack BaseMatrix-values for ith rank | |
long | get_max_size () const |
void | get_value_size (int *out) const |
Private Member Functions | |
void | unpack_data (int irank, const T *values) |
Private Attributes | |
std::vector< std::vector< int > > | ap_indexes |
HContainer< T > * | hr = nullptr |
std::vector< std::vector< int > > | atom_i_index |
const Parallel_Orbitals * | paraV = nullptr |
std::vector< long > | size_values |
hamilt::HTransPara< T >::HTransPara | ( | int | n_processes, |
HContainer< T > * | hr_in | ||
) |
hamilt::HTransPara< T >::~HTransPara | ( | ) |
void hamilt::HTransPara< T >::cal_orb_indexes | ( | int | irank, |
std::vector< int > * | orb_indexes = nullptr |
||
) |
calculate Orbital indexes and will be send to irank the format of the return value is: [size_i, atom_i, number_orb_row, 0, 1, 2, 3, 8, 9, 10, 11, number_orb_col, ... atom_i, number_orb_row, 4, 5, 6, 7, atom_i, ... number_orb_col, ...] i refers to the ith atom in this->ap_indexes[irank] the function is called in plan_indexes
irank | |
orb_indexes |
long hamilt::HTransPara< T >::get_max_size | ( | ) | const |
void hamilt::HTransPara< T >::get_value_size | ( | int * | out | ) | const |
void hamilt::HTransPara< T >::pack_data | ( | int | irank, |
T * | values = nullptr |
||
) |
pack BaseMatrix-values for ith rank
irank |
void hamilt::HTransPara< T >::receive_ap_indexes | ( | int | irank, |
const int * | ap_indexes_in = nullptr , |
||
const long & | size_ap_indexes_in = 0 |
||
) |
receive AtomPair_indexes from the ith rank save to this->ap_indexes[irank]
irank |
void hamilt::HTransPara< T >::receive_data | ( | int | irank, |
const T * | values = nullptr |
||
) |
receive data from ith rank, save them to this->hr
irank |
void hamilt::HTransPara< T >::send_data | ( | int | irank, |
MPI_Request * | request = nullptr |
||
) |
pack data in this->hr, and send to ith rank
irank |
void hamilt::HTransPara< T >::send_orb_indexes | ( | int | irank, |
MPI_Request * | request = nullptr |
||
) |
pack data in this->hr, and send to ith rank
irank |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |