Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
layout.h
Go to the documentation of this file.
1 
14 #ifndef COMMUNICATOR_MPI_LAYOUT_INCLUDED
15 #define COMMUNICATOR_MPI_LAYOUT_INCLUDED
16 
17 #include "communicator.h"
18 #include "communicator_bgnet.h"
19 
21  public:
22 
23  static int grid_rank(int *rank, const int *gcoord);
24  static int grid_coord(int *gcoord, const int rank);
25  static int grid_dims(int *gdims);
26 
27  static int ipe(const int idir);
28  static int npe(const int idir);
29 
30  static int tag(int rank, int idir, int ipm);
31 
32  static int layout_setup();
33  static int layout_delete();
34 
35  static int m_ndim;
36  static int *m_dims; //< lattice extent
37 
38  // logical layout
39  static int *m_grid_dims;
40  static int *m_grid_coord;
41 
42  static int *m_ipe_up;
43  static int *m_ipe_dn;
44 
45  // physical mapping
46  static char m_map_grid[16];
47  static int *m_physical_to_logical; //< map between physical and logical grid
48 
49  static int physical_map_setup();
50  static int physical_map_delete();
51 
52  // subdimensional-slices
53  // static MPI_Comm *m_sub_comm;
54  static int *m_sub_comm;
55 
56  static int subgrid_setup();
57  static int subgrid_delete();
58 
59  private:
60  Layout() {}
61  Layout(const Layout&) {}
62  Layout& operator=(const Layout&);
63 };
64 
65 /*
66  struct LogicalLayout {
67  int ndim;
68  int *dims; // global lattice size
69 
70  int *grid_dims; // number of division along axis
71  int *grid_coord; // logical grid coord
72 
73  int *ipe_up; // rank of upward neighbour along ith axis
74  int *ipe_dn; // rank of downward neighbour along ith axis
75 
76  MPI_Comm *sub_comm; // communicator of reduced dimensions
77  };
78 
79  static LogicalLayout m_layout;
80 
81  static int layout_setup ();
82  static int layout_delete ();
83 
84  static int subgrid_setup ();
85  static int subgrid_delete ();
86 
87  static int physical_map_setup ();
88  static int physical_map_delete ();
89 */
90 
91 #endif /* COMMUNICATOR_MPI_LAYOUT_INCLUDED */
static int * m_grid_coord
grid coordinate.
Definition: layout.h:40
static int layout_setup()
layout_setup() – setup logical layout
Definition: layout.cpp:89
static int grid_coord(int *gcoord, const int rank)
static int * m_dims
lattice extent (Lx, Ly, Lz, Lt)
Definition: layout.h:36
static int * m_physical_to_logical
map between physical and logical grid
Definition: layout.h:47
static int m_ndim
number of dimensions.
Definition: layout.h:35
static int subgrid_setup()
Definition: layout.cpp:210
static int subgrid_delete()
Definition: layout.cpp:248
static int grid_rank(int *rank, const int *gcoord)
static int npe(const int idir)
Definition: layout.cpp:67
static int grid_dims(int *gdims)
Definition: layout.cpp:73
static int * m_sub_comm
Definition: layout.h:54
Layout class for logical organisation of parallel nodes.
Definition: layout.h:20
static int * m_grid_dims
grid dimensions in directions.
Definition: layout.h:39
static char m_map_grid[16]
Definition: layout.h:46
static int * m_ipe_up
rank of upward neighbour in directions.
Definition: layout.h:42
static int ipe(const int idir)
Definition: layout.cpp:61
static int tag(int rank, int idir, int ipm)
Definition: layout.cpp:83
static int layout_delete()
Definition: layout.cpp:188
static int * m_ipe_dn
rank of downward neighbour in directions.
Definition: layout.h:43
static int physical_map_delete()
Layout & operator=(const Layout &)
static int physical_map_setup()
Layout(const Layout &)
Definition: layout.h:61