Bridge++  Version 1.4.4
 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_bgnet.h"
18 
20  public:
21 
22  static int grid_rank(int *rank, const int *gcoord);
23  static int grid_coord(int *gcoord, const int rank);
24  static int grid_dims(int *gdims);
25 
26  static int ipe(const int idir);
27  static int npe(const int idir);
28 
29  static int tag(int rank, int idir, int ipm);
30 
31  static int layout_setup();
32  static int layout_delete();
33 
34  static int m_ndim;
35  static int *m_dims; //< lattice extent
36 
37  // logical layout
38  static int *m_grid_dims;
39  static int *m_grid_coord;
40 
41  static int *m_ipe_up;
42  static int *m_ipe_dn;
43 
44  // physical mapping
45  static char m_map_grid[16];
46  static int *m_physical_to_logical; //< map between physical and logical grid
47 
48  static int physical_map_setup();
49  static int physical_map_delete();
50 
51  // subdimensional-slices
52  // static MPI_Comm *m_sub_comm;
53  static int *m_sub_comm;
54 
55  static int subgrid_setup();
56  static int subgrid_delete();
57 
58  private:
59  Layout() {}
60  Layout(const Layout&) {}
61  Layout& operator=(const Layout&);
62 };
63 
64 /*
65  struct LogicalLayout {
66  int ndim;
67  int *dims; // global lattice size
68 
69  int *grid_dims; // number of division along axis
70  int *grid_coord; // logical grid coord
71 
72  int *ipe_up; // rank of upward neighbour along ith axis
73  int *ipe_dn; // rank of downward neighbour along ith axis
74 
75  MPI_Comm *sub_comm; // communicator of reduced dimensions
76  };
77 
78  static LogicalLayout m_layout;
79 
80  static int layout_setup ();
81  static int layout_delete ();
82 
83  static int subgrid_setup ();
84  static int subgrid_delete ();
85 
86  static int physical_map_setup ();
87  static int physical_map_delete ();
88 */
89 #endif /* COMMUNICATOR_MPI_LAYOUT_INCLUDED */
static int * m_grid_coord
grid coordinate.
Definition: layout.h:39
static int layout_setup()
layout_setup() – setup logical layout
Definition: layout.cpp:82
static int grid_coord(int *gcoord, const int rank)
static int * m_dims
lattice extent (Lx, Ly, Lz, Lt)
Definition: layout.h:35
static int * m_physical_to_logical
map between physical and logical grid
Definition: layout.h:46
static int m_ndim
number of dimensions.
Definition: layout.h:34
static int subgrid_setup()
Definition: layout.cpp:213
static int subgrid_delete()
Definition: layout.cpp:252
static int grid_rank(int *rank, const int *gcoord)
static int npe(const int idir)
Definition: layout.cpp:57
static int grid_dims(int *gdims)
Definition: layout.cpp:64
static int * m_sub_comm
Definition: layout.h:53
Layout class for logical organisation of parallel nodes.
Definition: layout.h:19
static int * m_grid_dims
grid dimensions in directions.
Definition: layout.h:38
static char m_map_grid[16]
Definition: layout.h:45
static int * m_ipe_up
rank of upward neighbour in directions.
Definition: layout.h:41
static int ipe(const int idir)
Definition: layout.cpp:50
static int tag(int rank, int idir, int ipm)
Definition: layout.cpp:75
static int layout_delete()
Definition: layout.cpp:183
static int * m_ipe_dn
rank of downward neighbour in directions.
Definition: layout.h:42
static int physical_map_delete()
Layout & operator=(const Layout &)
static int physical_map_setup()
Layout(const Layout &)
Definition: layout.h:60