source: XIOS/dev/dev_trunk_omp/extern/remap/src/mpi_cascade.cpp @ 1661

Last change on this file since 1661 was 1646, checked in by yushan, 5 years ago

branch merged with trunk @1645. arch file (ep&mpi) added for ADA

File size: 766 bytes
Line 
1#include "mpi_cascade.hpp"
2#include <iostream>
3#ifdef _usingEP
4using namespace ep_lib;
5#endif
6
7namespace sphereRemap {
8
9CMPICascade::CMPICascade(int nodes_per_level, MPI_Comm comm)
10{
11        int remaining_levels;
12        MPI_Comm intraComm;
13        int l = 0; // current level
14        do {
15                level.push_back(comm);
16                remaining_levels = ilog(nodes_per_level /*base*/, level[l].size /*arg*/) + 1;
17                level[l].group_size = iroot(remaining_levels, level[l].size); // group_size^remaining_levels <= size
18                level[l].p_grp_size = level[l].size/level[l].group_size;
19       
20                MPI_Comm_split(comm, level[l].colour(), level[l].key(), &intraComm);
21                MPI_Comm_split(comm, level[l].p_colour(), level[l].p_key(), &(level[l].pg_comm));
22                comm = intraComm;
23                l++;
24        } while (--remaining_levels);
25        num_levels = l;
26}
27
28}
Note: See TracBrowser for help on using the repository browser.