source: XIOS/dev/branch_openmp/extern/remap/src/mpi_cascade.hpp @ 1355

Last change on this file since 1355 was 1355, checked in by yushan, 6 years ago

unify MPI_Comm type

File size: 1015 bytes
Line 
1#ifndef  __MPI_CASCADE_HPP__
2#define  __MPI_CASCADE_HPP__
3
4#include "mpi.hpp"
5#include <vector>
6#include <cassert>
7#include "misc.hpp"
8
9namespace sphereRemap {
10
11class CCascadeLevel
12{
13public:
14  CCascadeLevel(ep_lib::MPI_Comm in_comm) : comm(in_comm)
15  {
16    ep_lib::MPI_Comm_dup(in_comm, &comm);
17    ep_lib::MPI_Comm_size(comm, &size);
18    ep_lib::MPI_Comm_rank(comm, &rank);
19  }
20  int colour() const { return rank % group_size; };
21  int key() const { return p_colour() + rank/(p_grp_size*group_size)*p_grp_size; }
22
23  // perpendicular group
24  int p_colour() const { return (rank%group_size + rank/group_size) % p_grp_size; }
25  int p_key() const { return colour() + rank/(p_grp_size*group_size)*group_size; }
26
27  ep_lib::MPI_Comm comm, pg_comm;
28  int rank;
29  int size;
30  int group_size; // group_size and p_grp_size are interchanged?? FIXME
31  int p_grp_size;
32};
33
34class CMPICascade
35{
36public:
37  CMPICascade(int nodes_per_level, ep_lib::MPI_Comm comm);
38
39  int num_levels;
40  std::vector<CCascadeLevel> level;
41};
42
43}
44#endif
Note: See TracBrowser for help on using the repository browser.