PhyStar  v0.0.0 thu24
gsmpi::GSMPICart< N_dim, IsColMaj > Class Template Reference

a Cartesian mpi class More...

#include <gsmpicart.hpp>

Inheritance diagram for gsmpi::GSMPICart< N_dim, IsColMaj >:
Collaboration diagram for gsmpi::GSMPICart< N_dim, IsColMaj >:

Public Member Functions

 GSMPICart ()
 Construct a new GSMPICart. More...
 
 GSMPICart (const std::vector< int > nproc, const std::vector< int > isperiod={1})
 Construct a new GSMPICart. More...
 
 ~GSMPICart ()
 
void InitMPI (const std::vector< int > nproc, const std::vector< int > isperiod={1})
 
int RankFromCoords (const int ri, const int rj, const int rk)
 Get rank from Coordinates. More...
 
int RankFromCoords (const int ri, const int rj)
 Get rank from Coordinates. More...
 
int RankFromCoords (const int ri)
 Get rank from Coordinates. More...
 
int & RefNbrs (const int i, const int j, const int k)
 reference the Neigbhors via coords More...
 
int & RefNbrs (const int i, const int j)
 reference the Neigbhors via coords More...
 
int & RefNbrs (const int i)
 reference the Neigbhors via coords More...
 
int GetNbrs (const int i, const int j, const int k)
 Get the Neigbhors via coords. More...
 
int GetNbrs (const int i, const int j)
 Get the Neigbhors via coords. More...
 
int GetNbrs (const int i)
 Get the Neigbhors via coords. More...
 
void InitCoord0 ()
 initialize coord0, the index is from 0 More...
 
void InitCoord1 ()
 initialize coord1 More...
 
void InitCoord2 ()
 initialize coord2 More...
 
void InitCoords ()
 initialize coordinates More...
 
int GetCoord (const int i)
 Get the coordination for the i'th direction. More...
 
std::vector< int > GetCoord ()
 
int GetProc (const int i)
 
std::vector< int > GetProc ()
 
int GetIsPeriod (const int i)
 
std::vector< int > GetIsPeriod ()
 
int GetValidNbrsOrder (const int i)
 
void InitNbrs ()
 initialize neigbhors More...
 
void vInitNbrs1D ()
 initialize neigbhors for 1-D case More...
 
void vInitNbrs2D ()
 initialize neigbhors for 2-D case More...
 
void vInitNbrs3D ()
 initialize neigbhors for 3-D case More...
 
void PrintNbrs ()
 print neigbhors infomations More...
 
void GenerateGraph ()
 generate a cartesian graph communication More...
 
void InitGraph ()
 initialize the graph More...
 
std::vector< int > & InitValidNbrsOrder ()
 Get the Valid Neigbhors Order. More...
 
std::vector< int > GetNbrsOrderFromGraph ()
 Get the Valid Neigbhors by mpi communication. More...
 
void CheckGraphComm ()
 the graph communications More...
 
- Public Member Functions inherited from gsmpi::GSMPI
 GSMPI ()
 Construct a new KLMPI object. More...
 
void Init ()
 Initialize keli mpi. More...
 
int GetRank ()
 Get the Rank. More...
 
int GetRank () const
 
int GetNumofProc ()
 Get the Number of Procs. More...
 
int GetNumofProc () const
 
int GetNumofNbrs ()
 Get the Number of Neigbhors. More...
 
int GetNumofNbrs () const
 
const int * PtrNbrsList ()
 
const int * PtrNbrsList () const
 
int GetNumofNbrsExcludeNullAndSelfProc ()
 Get the Number of Neigbhors Without Nullproc And Self. More...
 
int GetNumofNbrsExcludeNullAndSelfProc () const
 
MPI_Comm GetComm () const
 Get the Communicator. More...
 
MPI_Comm GetComm ()
 
void SendRecv (auto &send, auto &recv, MPI_Datatype datatype)
 Send and Receive data by a graph communication. More...
 
void AllGather (auto &send, auto &recv, MPI_Datatype datatype)
 
void SendRecv_v1 (SerializedBuffer &send, SerializedBuffer &recv, MPI_Datatype datatype)
 
void Barrier ()
 MPI_Barrier() More...
 
void Bcast (auto &in, MPI_Datatype datatype)
 
void Bcast (auto &in, int count, MPI_Datatype datatype)
 
void Bcast (auto *in, int count, MPI_Datatype datatype)
 
void Reduce (auto &send, auto &recv, MPI_Datatype datatype, MPI_Op op)
 
void Reduce (auto &send, auto &recv, int count, MPI_Datatype datatype, MPI_Op op)
 
void Reduce (auto *send, auto *recv, int count, MPI_Datatype datatype, MPI_Op op)
 
void AllReduce (auto &send, auto &recv, MPI_Datatype datatype, MPI_Op op)
 
void AllReduce (auto &send, auto &recv, int count, MPI_Datatype datatype, MPI_Op op)
 
void AllReduce (auto *send, auto *recv, int count, MPI_Datatype datatype, MPI_Op op)
 

Static Public Member Functions

static int CoordMod (int rk, int np)
 Get Coordinate remiander. More...
 

Private Attributes

int _nproc [N_dim]
 
int _isperiod [N_dim]
 
int _coord [N_dim]
 
const int _ndim = N_dim
 
const int ColMaj = IsColMaj
 

Additional Inherited Members

- Protected Attributes inherited from gsmpi::GSMPI
MPI_Comm _comm
 
int _nprocall
 
int _rank
 
int * _nbrs = nullptr
 
int _num_nbrs
 
int _num_nbrs_exclude_null_selfproc
 
int * _graph_index = nullptr
 
int * _graph_edge = nullptr
 
std::vector< int > _valid_nbrs_order
 

Detailed Description

template<int N_dim, int IsColMaj = false>
class gsmpi::GSMPICart< N_dim, IsColMaj >

a Cartesian mpi class

Template Parameters
N_dim
IsColMaj

Constructor & Destructor Documentation

◆ GSMPICart() [1/2]

template<int N_dim, int IsColMaj = false>
gsmpi::GSMPICart< N_dim, IsColMaj >::GSMPICart ( )
inline

Construct a new GSMPICart.

◆ GSMPICart() [2/2]

template<int N_dim, int IsColMaj>
gsmpi::GSMPICart< N_dim, IsColMaj >::GSMPICart ( const std::vector< int >  nproc,
const std::vector< int >  isperiod = {1} 
)

Construct a new GSMPICart.

Parameters
nproctotal number of procs
isperiodflag of periodica vitrual topology

◆ ~GSMPICart()

template<int N_dim, int IsColMaj>
gsmpi::GSMPICart< N_dim, IsColMaj >::~GSMPICart

Member Function Documentation

◆ CheckGraphComm()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::CheckGraphComm

the graph communications

References gsmpi::root.

◆ CoordMod()

template<int N_dim, int IsColMaj = false>
static int gsmpi::GSMPICart< N_dim, IsColMaj >::CoordMod ( int  rk,
int  np 
)
inlinestatic

Get Coordinate remiander.

Parameters
rkcoordinate rank
npthe number of procs in one direction
Returns
int

◆ GenerateGraph()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::GenerateGraph

generate a cartesian graph communication

References gsmpi::root.

◆ GetCoord() [1/2]

template<int N_dim, int IsColMaj = false>
std::vector<int> gsmpi::GSMPICart< N_dim, IsColMaj >::GetCoord ( )
inline

◆ GetCoord() [2/2]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetCoord ( const int  i)
inline

Get the coordination for the i'th direction.

Parameters
i
Returns
the coordination

References gsmpi::GSMPICart< N_dim, IsColMaj >::_coord.

Here is the caller graph for this function:

◆ GetIsPeriod() [1/2]

template<int N_dim, int IsColMaj = false>
std::vector<int> gsmpi::GSMPICart< N_dim, IsColMaj >::GetIsPeriod ( )
inline

◆ GetIsPeriod() [2/2]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetIsPeriod ( const int  i)
inline

◆ GetNbrs() [1/3]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetNbrs ( const int  i)
inline

Get the Neigbhors via coords.

Parameters
icoord0
Returns
int

References gsmpi::GSMPI::_nbrs.

◆ GetNbrs() [2/3]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetNbrs ( const int  i,
const int  j 
)
inline

Get the Neigbhors via coords.

Parameters
icoord0
jcoord1
Returns
int

References gsmpi::GSMPI::_nbrs.

◆ GetNbrs() [3/3]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetNbrs ( const int  i,
const int  j,
const int  k 
)
inline

Get the Neigbhors via coords.

Parameters
icoord0
jcoord1
kcoord2
Returns
int

References gsmpi::GSMPI::_nbrs.

◆ GetNbrsOrderFromGraph()

template<int N_dim, int IsColMaj>
std::vector< int > gsmpi::GSMPICart< N_dim, IsColMaj >::GetNbrsOrderFromGraph

Get the Valid Neigbhors by mpi communication.

Returns
std::vector<int>

◆ GetProc() [1/2]

template<int N_dim, int IsColMaj = false>
std::vector<int> gsmpi::GSMPICart< N_dim, IsColMaj >::GetProc ( )
inline

◆ GetProc() [2/2]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetProc ( const int  i)
inline

References gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc.

Here is the caller graph for this function:

◆ GetValidNbrsOrder()

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::GetValidNbrsOrder ( const int  i)
inline

◆ InitCoord0()

template<int N_dim, int IsColMaj = false>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitCoord0 ( )
inline

initialize coord0, the index is from 0

References gsmpi::GSMPICart< N_dim, IsColMaj >::_coord, gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc, and gsmpi::GSMPI::_rank.

Here is the caller graph for this function:

◆ InitCoord1()

template<int N_dim, int IsColMaj = false>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitCoord1 ( )
inline

initialize coord1

References gsmpi::GSMPICart< N_dim, IsColMaj >::_coord, gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc, and gsmpi::GSMPI::_rank.

Here is the caller graph for this function:

◆ InitCoord2()

template<int N_dim, int IsColMaj = false>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitCoord2 ( )
inline

initialize coord2

References gsmpi::GSMPICart< N_dim, IsColMaj >::_coord, gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc, and gsmpi::GSMPI::_rank.

Here is the caller graph for this function:

◆ InitCoords()

template<int N_dim, int IsColMaj = false>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitCoords ( )
inline

◆ InitGraph()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitGraph

initialize the graph

◆ InitMPI()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitMPI ( const std::vector< int >  nproc,
const std::vector< int >  isperiod = {1} 
)

◆ InitNbrs()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::InitNbrs

initialize neigbhors

◆ InitValidNbrsOrder()

template<int N_dim, int IsColMaj>
std::vector< int > & gsmpi::GSMPICart< N_dim, IsColMaj >::InitValidNbrsOrder

Get the Valid Neigbhors Order.

Returns
std::vector<int>

◆ PrintNbrs()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::PrintNbrs

print neigbhors infomations

◆ RankFromCoords() [1/3]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::RankFromCoords ( const int  ri)
inline

Get rank from Coordinates.

Parameters
ricoord0
Returns
int rank

◆ RankFromCoords() [2/3]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::RankFromCoords ( const int  ri,
const int  rj 
)
inline

Get rank from Coordinates.

Parameters
ricoord0
rjcoord1
Returns
int rank

References gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc.

◆ RankFromCoords() [3/3]

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::RankFromCoords ( const int  ri,
const int  rj,
const int  rk 
)
inline

Get rank from Coordinates.

Parameters
ricoord0
rjcoord1
rkcoord2
Returns
int rank

References gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc.

◆ RefNbrs() [1/3]

template<int N_dim, int IsColMaj = false>
int& gsmpi::GSMPICart< N_dim, IsColMaj >::RefNbrs ( const int  i)
inline

reference the Neigbhors via coords

Parameters
icoord0
Returns
int&

References gsmpi::GSMPI::_nbrs.

◆ RefNbrs() [2/3]

template<int N_dim, int IsColMaj = false>
int& gsmpi::GSMPICart< N_dim, IsColMaj >::RefNbrs ( const int  i,
const int  j 
)
inline

reference the Neigbhors via coords

Parameters
icoord0
jcoord1
Returns
int&

References gsmpi::GSMPI::_nbrs.

◆ RefNbrs() [3/3]

template<int N_dim, int IsColMaj = false>
int& gsmpi::GSMPICart< N_dim, IsColMaj >::RefNbrs ( const int  i,
const int  j,
const int  k 
)
inline

reference the Neigbhors via coords

Parameters
icoord0
jcoord1
kcoord2
Returns
int&

References gsmpi::GSMPI::_nbrs.

Here is the caller graph for this function:

◆ vInitNbrs1D()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::vInitNbrs1D

initialize neigbhors for 1-D case

◆ vInitNbrs2D()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::vInitNbrs2D

initialize neigbhors for 2-D case

◆ vInitNbrs3D()

template<int N_dim, int IsColMaj>
void gsmpi::GSMPICart< N_dim, IsColMaj >::vInitNbrs3D

initialize neigbhors for 3-D case

Member Data Documentation

◆ _coord

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::_coord[N_dim]
private

◆ _isperiod

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::_isperiod[N_dim]
private

◆ _ndim

template<int N_dim, int IsColMaj = false>
const int gsmpi::GSMPICart< N_dim, IsColMaj >::_ndim = N_dim
private

◆ _nproc

template<int N_dim, int IsColMaj = false>
int gsmpi::GSMPICart< N_dim, IsColMaj >::_nproc[N_dim]
private

◆ ColMaj

template<int N_dim, int IsColMaj = false>
const int gsmpi::GSMPICart< N_dim, IsColMaj >::ColMaj = IsColMaj
private

The documentation for this class was generated from the following file: