source: XIOS/dev/branch_openmp/extern/remap/src/mpi_cascade.cpp @ 1328

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

dev_omp

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