1#ifndef HCONTAINERTRANSFER_H
2#define HCONTAINERTRANSFER_H
4#include <unordered_map>
30 void cal_orb_indexes(
int irank, std::vector<int>* orb_indexes =
nullptr);
37 void receive_ap_indexes(
int irank,
const int* ap_indexes_in =
nullptr,
const long& size_ap_indexes_in = 0);
49 void send_data(
int irank, MPI_Request* request =
nullptr);
61 void pack_data(
int irank,
T* values =
nullptr);
94 void cal_ap_indexes(
int irank, std::vector<int>* ap_indexes =
nullptr);
106 void receive_orb_indexes(
int irank,
const int* orb_indexes_in =
nullptr,
const long& size_orb_indexes_in = 0);
112 void send_data(
int irank, MPI_Request* request =
nullptr);
124 void pack_data(
int irank,
T* values =
nullptr);
178 return MPI_DOUBLE_COMPLEX;
Definition parallel_orbitals.h:9
Definition hcontainer.h:144
std::vector< long > size_values
Definition transfer.h:79
std::vector< std::vector< int > > atom_i_index
Definition transfer.h:71
void pack_data(int irank, T *values=nullptr)
pack BaseMatrix-values for ith rank
Definition transfer.cpp:197
void send_data(int irank, MPI_Request *request=nullptr)
pack data in this->hr, and send to ith rank
Definition transfer.cpp:160
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,...
Definition transfer.cpp:36
const Parallel_Orbitals * paraV
Definition transfer.h:73
HContainer< T > * hr
Definition transfer.h:68
std::vector< std::vector< int > > ap_indexes
Definition transfer.h:67
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]
Definition transfer.cpp:92
void receive_data(int irank, const T *values=nullptr)
receive data from ith rank, save them to this->hr
Definition transfer.cpp:175
void unpack_data(int irank, const T *values)
Definition transfer.cpp:239
~HTransPara()
Definition transfer.cpp:30
long get_max_size() const
Definition transfer.cpp:284
void send_orb_indexes(int irank, MPI_Request *request=nullptr)
pack data in this->hr, and send to ith rank
Definition transfer.cpp:142
void get_value_size(int *out) const
Definition transfer.cpp:290
long get_max_size() const
Definition transfer.cpp:651
HContainer< T > * hr
Definition transfer.h:131
void send_ap_indexes(int irank, MPI_Request *request=nullptr)
calculate AtomPair_indexes of hr_in and send to the ith rank
Definition transfer.cpp:380
void pack_data(int irank, T *values=nullptr)
pack BaseMatrix-values for ith rank
Definition transfer.cpp:489
std::vector< std::vector< int > > orb_indexes
Definition transfer.h:130
void get_value_size(int *out) const
Definition transfer.cpp:656
void receive_data(int irank, const T *values=nullptr)
receive data from ith rank, save them to this->hr
Definition transfer.cpp:467
void receive_orb_indexes(int irank, const int *orb_indexes_in=nullptr, const long &size_orb_indexes_in=0)
receive Orbital_indexes from the ith rank save to this->orb_indexes[irank]
Definition transfer.cpp:399
void send_data(int irank, MPI_Request *request=nullptr)
pack data in this->hr, and send to ith rank
Definition transfer.cpp:452
std::vector< long > size_values
Definition transfer.h:144
std::vector< std::unordered_map< int, int > > orb_col_indexes
Definition transfer.h:140
void cal_ap_indexes(int irank, std::vector< int > *ap_indexes=nullptr)
calculate AtomPair indexes and will be send to irank called in plan_indexes
Definition transfer.cpp:319
void unpack_data(int irank, const T *values)
unpack BaseMatrix-values from ith rank
Definition transfer.cpp:570
std::vector< std::unordered_map< int, int > > orb_row_indexes
Definition transfer.h:141
~HTransSerial()
Definition transfer.cpp:314
std::complex< double > complex
Definition diago_cusolver.cpp:13
#define T
Definition exp.cpp:237
static MPI_Datatype datatype()
Definition transfer.h:167
static MPI_Datatype datatype()
Definition transfer.h:158
static MPI_Datatype datatype()
Definition transfer.h:176
Struct to get MPI_datatype.
Definition transfer.h:153