ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
parallel_global.h
Go to the documentation of this file.
1//==========================================================
2// AUTHOR : Fang Wei, Mohan Chen
3// DATE : 2008
4// LAST UPDATE : 2009-3-23 mohan add GATHER_MINIMUM_DOUBLE
5//==========================================================
6#ifndef PARALLEL_GLOBAL_H
7#define PARALLEL_GLOBAL_H
8
9#include <complex>
10#include "parallel_comm.h"
11
12// void myProd(std::complex<double> *in,std::complex<double> *inout,int *len,MPI_Datatype *dptr);
13
14namespace Parallel_Global
15{
16extern int mpi_number;
17extern int omp_number;
18//---------------------------
19// call at the very first.
20//---------------------------
21
22// changed from read_mpi_parameters in 2024-1018
23void read_pal_param(int argc, char** argv, int& NPROC, int& NTHREAD_PER_PROC, int& MY_RANK);
24#ifdef __MPI
25void myProd(std::complex<double>* in, std::complex<double>* inout, int* len, MPI_Datatype* dptr);
26#endif
27
40void split_diag_world(const int& diag_np, const int& nproc, const int& my_rank, int& drank, int& dsize, int& dcolor);
41void split_grid_world(const int diag_np, const int& nproc, const int& my_rank, int& grank, int& gsize);
42
47void init_pools(const int& NPROC,
48 const int& MY_RANK,
49 const int& BNDPAR,
50 const int& KPAR,
51 int& NPROC_IN_BNDGROUP,
52 int& RANK_IN_BPGROUP,
53 int& MY_BNDGROUP,
54 int& NPROC_IN_POOL,
55 int& RANK_IN_POOL,
56 int& MY_POOL);
57
58void divide_pools(const int& NPROC,
59 const int& MY_RANK,
60 const int& BNDPAR,
61 const int& KPAR,
62 int& NPROC_IN_BNDGROUP,
63 int& RANK_IN_BPGROUP,
64 int& MY_BNDGROUP,
65 int& NPROC_IN_POOL,
66 int& RANK_IN_POOL,
67 int& MY_POOL);
68
79void divide_mpi_groups(const int& procs,
80 const int& num_groups,
81 const int& rank,
82 int& procs_in_group,
83 int& my_group,
84 int& rank_in_group,
85 const bool even = false);
86
91#ifdef __MPI
92void finalize_mpi();
93#endif
94
95} // namespace Parallel_Global
96
97#endif // PARALLEL_GLOBAL_H
Definition parallel_global.cpp:25
void myProd(std::complex< double > *in, std::complex< double > *inout, int *len, MPI_Datatype *dptr)
Definition parallel_global.cpp:30
int omp_number
Definition parallel_global.cpp:27
void finalize_mpi()
Release MPI communicator and resources.
Definition parallel_global.cpp:237
int mpi_number
Definition parallel_global.cpp:26
void split_diag_world(const int &diag_np, const int &nproc, const int &my_rank, int &drank, int &dsize, int &dcolor)
Definition parallel_global.cpp:47
void split_grid_world(const int diag_np, const int &nproc, const int &my_rank, int &grank, int &gsize)
Definition parallel_global.cpp:72
void read_pal_param(int argc, char **argv, int &NPROC, int &NTHREAD_PER_PROC, int &MY_RANK)
Definition parallel_global.cpp:91
void init_pools(const int &NPROC, const int &MY_RANK, const int &BNDPAR, const int &KPAR, int &NPROC_IN_BNDGROUP, int &RANK_IN_BPGROUP, int &MY_BNDGROUP, int &NPROC_IN_POOL, int &RANK_IN_POOL, int &MY_POOL)
An interface function to call "Parallel_Global::divide_pools()".
Definition parallel_global.cpp:252
void divide_pools(const int &NPROC, const int &MY_RANK, const int &BNDPAR, const int &KPAR, int &NPROC_IN_BNDGROUP, int &RANK_IN_BPGROUP, int &MY_BNDGROUP, int &NPROC_IN_POOL, int &RANK_IN_POOL, int &MY_POOL)
Definition parallel_global.cpp:315
void divide_mpi_groups(const int &procs, const int &num_groups, const int &rank, int &procs_in_group, int &my_group, int &rank_in_group, const bool even=false)
Divide MPI processes into groups.
Definition parallel_global.cpp:378