Ignore:
Timestamp:
05/28/18 09:54:32 (6 years ago)
Author:
yushan
Message:

save dev

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_win.cpp

    r1388 r1500  
    1313    int rank, rank_loc, num_ep; 
    1414    MPI_Comm_rank(comm, &rank); 
    15     rank_loc = comm.ep_comm_ptr->size_rank_info[1].first; 
    16     num_ep = comm.ep_comm_ptr->size_rank_info[1].second; 
     15    rank_loc = comm->ep_comm_ptr->size_rank_info[1].first; 
     16    num_ep = comm->ep_comm_ptr->size_rank_info[1].second; 
    1717     
    18     win->is_ep = comm.is_ep; 
     18    *win = new ep_win; 
     19     
     20    (*win)->is_ep = comm->is_ep; 
    1921 
    2022    int num_ep_max; 
     
    2224 
    2325    assert(num_ep_max > 1); 
     26     
     27    info = new ep_info; 
    2428     
    2529     
     
    2933      for(int i=0; i<num_ep_max; i++) 
    3034      { 
    31         win->server_win[i] = new ::MPI_Win; 
     35        (*win)->server_win[i] = new ::MPI_Win; 
    3236      } 
    3337 
     
    3539      for(int i=0; i<num_ep_max; i++) 
    3640      { 
    37         ::MPI_Win_create(base, to_mpi_aint(size), disp_unit, to_mpi_info(info), to_mpi_comm(comm.mpi_comm), static_cast< ::MPI_Win*>(win->server_win[i])); 
    38         win->comm = comm; 
     41        ::MPI_Win_create(base, to_mpi_aint(size), disp_unit, to_mpi_info(info), to_mpi_comm(comm->mpi_comm), static_cast< ::MPI_Win*>((*win)->server_win[i])); 
     42        (*win)->comm = comm; 
    3943      } 
    4044    } 
    4145    else  // client 
    4246    { 
    43       win->client_win = new ::MPI_Win; 
     47      (*win)->client_win = new ::MPI_Win; 
    4448       
    4549      for(int i=0; i<num_ep; i++) 
     
    4852        { 
    4953          printf("Calling MPI_Win_create from client, rank = %d\n", rank); 
    50           ::MPI_Win_create(base, to_mpi_aint(size), disp_unit, to_mpi_info(info), to_mpi_comm(comm.mpi_comm), static_cast< ::MPI_Win*>(win->client_win));  
    51           win->comm = comm; 
     54          ::MPI_Win_create(base, to_mpi_aint(size), disp_unit, to_mpi_info(info), to_mpi_comm(comm->mpi_comm), static_cast< ::MPI_Win*>((*win)->client_win));  
     55          (*win)->comm = comm; 
    5256        } 
    5357        MPI_Barrier_local(comm); 
     
    6165          for(int i=0; i<num_ep_max-num_ep; i++) 
    6266          { 
    63             win->null_win[i] = new ::MPI_Win; 
    64             ::MPI_Win_create(NULL, 0, disp_unit, to_mpi_info(info), to_mpi_comm(comm.mpi_comm), static_cast< ::MPI_Win*>(win->null_win[i]));  
     67            (*win)->null_win[i] = new ::MPI_Win; 
     68            ::MPI_Win_create(NULL, 0, disp_unit, to_mpi_info(info), to_mpi_comm(comm->mpi_comm), static_cast< ::MPI_Win*>((*win)->null_win[i]));  
    6569          }   
    6670        }   
     
    7882     
    7983 
    80     MPI_Comm_rank(win->comm, &rank); 
    81     rank_loc = win->comm.ep_comm_ptr->size_rank_info[1].first; 
    82     num_ep = win->comm.ep_comm_ptr->size_rank_info[1].second; 
     84    MPI_Comm_rank((*win)->comm, &rank); 
     85    rank_loc = (*win)->comm->ep_comm_ptr->size_rank_info[1].first; 
     86    num_ep = (*win)->comm->ep_comm_ptr->size_rank_info[1].second; 
    8387     
    8488     
    8589    int num_ep_max; 
    86     MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, win->comm); 
     90    MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, (*win)->comm); 
    8791 
    8892    //printf("rank_loc = %d, thread_num = %d, num_ep_max = %d\n", rank_loc, omp_get_thread_num(), num_ep_max); 
     
    9397      for(int i=0; i<num_ep_max; i++) 
    9498      { 
    95         ::MPI_Win_free(static_cast< ::MPI_Win*>(win->server_win[i])); 
     99        ::MPI_Win_free(static_cast< ::MPI_Win*>((*win)->server_win[i])); 
    96100      } 
    97101    } 
     
    103107        { 
    104108          printf("Calling MPI_Win_free from client, rank = %d\n", rank); 
    105           ::MPI_Win_free(static_cast< ::MPI_Win*>(win->client_win));  
     109          ::MPI_Win_free(static_cast< ::MPI_Win*>((*win)->client_win));  
    106110        } 
    107         MPI_Barrier_local(win->comm); 
     111        MPI_Barrier_local((*win)->comm); 
    108112      } 
    109113 
     
    115119          for(int i=0; i<num_ep_max-num_ep; i++) 
    116120          { 
    117             ::MPI_Win_free(static_cast< ::MPI_Win*>(win->null_win[i]));  
     121            ::MPI_Win_free(static_cast< ::MPI_Win*>((*win)->null_win[i]));  
    118122          }   
    119123        }   
     
    130134    int rank, rank_loc, num_ep; 
    131135     
    132     MPI_Comm_rank(win.comm, &rank); 
    133     rank_loc = win.comm.ep_comm_ptr->size_rank_info[1].first; 
    134     num_ep = win.comm.ep_comm_ptr->size_rank_info[1].second; 
     136    MPI_Comm_rank(win->comm, &rank); 
     137    rank_loc = win->comm->ep_comm_ptr->size_rank_info[1].first; 
     138    num_ep = win->comm->ep_comm_ptr->size_rank_info[1].second; 
    135139     
    136140    int num_ep_max; 
    137     MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, win.comm); 
     141    MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, win->comm); 
    138142 
    139143    if(num_ep == 1) 
     
    142146      for(int i=0; i<num_ep_max; i++) 
    143147      { 
    144         ::MPI_Win_fence(assert, *static_cast< ::MPI_Win*>(win.server_win[i])); 
     148        ::MPI_Win_fence(assert, *static_cast< ::MPI_Win*>(win->server_win[i])); 
    145149      } 
    146150    } 
     
    152156        { 
    153157          printf("Calling MPI_Win_fence from client, rank = %d\n", rank); 
    154           ::MPI_Win_fence(assert, *static_cast< ::MPI_Win*>(win.client_win));  
     158          ::MPI_Win_fence(assert, *static_cast< ::MPI_Win*>(win->client_win));  
    155159        } 
    156         MPI_Barrier_local(win.comm); 
     160        MPI_Barrier_local(win->comm); 
    157161      } 
    158162 
     
    164168          for(int i=0; i<num_ep_max-num_ep; i++) 
    165169          { 
    166             ::MPI_Win_fence(assert, *static_cast< ::MPI_Win*>(win.null_win[i]));  
     170            ::MPI_Win_fence(assert, *static_cast< ::MPI_Win*>(win->null_win[i]));  
    167171          }   
    168172        }   
Note: See TracChangeset for help on using the changeset viewer.