parallel_mpi.h Source File
LibRPA
|
parallel_mpi.h
34 void set_parallel_routing(const string &option, const int &atpais_num, const int &Rt_num, ParallelRouting &routing);
39 void allreduce_ComplexMatrix(const ComplexMatrix& cmat_send, ComplexMatrix & cmat_recv, MPI_Comm mpi_comm);
41 void reduce_ComplexMatrix(const ComplexMatrix& cmat_send, ComplexMatrix& cmat_recv, int root, MPI_Comm mpi_comm);
92 BLACS_CTXT_handler(MPI_Comm comm_in): mpi_comm_h(comm_in) { comm_set_ = true; pgrid_set_ = initialized_ = false; }
97 void set_grid(const int &nprows_in, const int &npcols_in, CTXT_LAYOUT layout_in = CTXT_LAYOUT::R);
121 void set_blacs_params_(int ictxt, int nprocs, int myid, int nprows, int myprow, int npcols, int mypcol);
186 std::set<std::pair<int, int>> get_necessary_IJ_from_block_2D(const AtomicBasis &atbasis_row, const AtomicBasis &atbasis_col, const Array_Desc& arrdesc);
188 std::set<std::pair<int, int>> get_necessary_IJ_from_block_2D_sy(const char &uplo, const AtomicBasis &atbasis, const Array_Desc& arrdesc);
195 static vector<double> pack_mat(const map<size_t,map<size_t,map<Vector3_Order<int>,shared_ptr<matrix>>>> &Cs_m);
196 // static map<size_t,map<size_t,map<Vector3_Order<int>,shared_ptr<matrix>>>> unpack_mat(vector<double> &pack);
216 vector<pair<int,int>> dispatch_upper_trangular_tasks(const int &natoms, const int &myid, const int &nprows, const int &npcols, const int &myprow, const int &mypcol);
224 vector<pair<int, int>> find_duplicate_ordered_pair(int n, const vector<pair<int, int>>& ordered_pairs, const MPI_Comm &comm);
237 vector<pair<T1, T2>> dispatch_vector_prod(vector<T1> vec1, vector<T2> vec2, unsigned myid, unsigned size, bool sequential, bool favor_1st)
239 vector<pair<int, int>> ids = dispatcher(0, int(vec1.size()), 0, int(vec2.size()), myid, size, sequential, favor_1st);
Definition: complexmatrix.h:20
Definition: parallel_mpi.h:111
int init(const int &m, const int &n, const int &mb, const int &nb, const int &irsrc, const int &icsrc)
initialize the array descriptor
Definition: parallel_mpi.cpp:329
int init_1b1p(const int &m, const int &n, const int &irsrc, const int &icsrc)
initialize the array descriptor such that each process has exactly one block
Definition: parallel_mpi.cpp:335
Definition: atomic_basis.h:12
Definition: parallel_mpi.h:75
void exit()
call gridexit to reset process grid
Definition: parallel_mpi.cpp:215
Definition: parallel_mpi.h:45
Definition: parallel_mpi.h:193
Definition: vector3_order.h:15
Definition: matrix.h:23
utilies to handle square matrix and related operations
Definition: analycont.cpp:14
std::pair< Array_Desc, Array_Desc > prepare_array_desc_mr2d_src_and_all(const BLACS_CTXT_handler &ctxt_h, const int &m, const int &n, const int &mb, const int &nb, const int &irsrc, const int &icsrc)
Definition: parallel_mpi.cpp:434
std::set< std::pair< int, int > > get_necessary_IJ_from_block_2D(const AtomicBasis &atbasis_row, const AtomicBasis &atbasis_col, const Array_Desc &arrdesc)
obtain the necessary atom pair of atomic basis to build the block-cyclic submatrix
Definition: parallel_mpi.cpp:442
Generated by