Changeset 1500 for XIOS/dev/branch_openmp/extern/ep_dev/ep_win.cpp
- Timestamp:
- 05/28/18 09:54:32 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/extern/ep_dev/ep_win.cpp
r1388 r1500 13 13 int rank, rank_loc, num_ep; 14 14 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; 17 17 18 win->is_ep = comm.is_ep; 18 *win = new ep_win; 19 20 (*win)->is_ep = comm->is_ep; 19 21 20 22 int num_ep_max; … … 22 24 23 25 assert(num_ep_max > 1); 26 27 info = new ep_info; 24 28 25 29 … … 29 33 for(int i=0; i<num_ep_max; i++) 30 34 { 31 win->server_win[i] = new ::MPI_Win;35 (*win)->server_win[i] = new ::MPI_Win; 32 36 } 33 37 … … 35 39 for(int i=0; i<num_ep_max; i++) 36 40 { 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; 39 43 } 40 44 } 41 45 else // client 42 46 { 43 win->client_win = new ::MPI_Win;47 (*win)->client_win = new ::MPI_Win; 44 48 45 49 for(int i=0; i<num_ep; i++) … … 48 52 { 49 53 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; 52 56 } 53 57 MPI_Barrier_local(comm); … … 61 65 for(int i=0; i<num_ep_max-num_ep; i++) 62 66 { 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])); 65 69 } 66 70 } … … 78 82 79 83 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; 83 87 84 88 85 89 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); 87 91 88 92 //printf("rank_loc = %d, thread_num = %d, num_ep_max = %d\n", rank_loc, omp_get_thread_num(), num_ep_max); … … 93 97 for(int i=0; i<num_ep_max; i++) 94 98 { 95 ::MPI_Win_free(static_cast< ::MPI_Win*>( win->server_win[i]));99 ::MPI_Win_free(static_cast< ::MPI_Win*>((*win)->server_win[i])); 96 100 } 97 101 } … … 103 107 { 104 108 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)); 106 110 } 107 MPI_Barrier_local( win->comm);111 MPI_Barrier_local((*win)->comm); 108 112 } 109 113 … … 115 119 for(int i=0; i<num_ep_max-num_ep; i++) 116 120 { 117 ::MPI_Win_free(static_cast< ::MPI_Win*>( win->null_win[i]));121 ::MPI_Win_free(static_cast< ::MPI_Win*>((*win)->null_win[i])); 118 122 } 119 123 } … … 130 134 int rank, rank_loc, num_ep; 131 135 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; 135 139 136 140 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); 138 142 139 143 if(num_ep == 1) … … 142 146 for(int i=0; i<num_ep_max; i++) 143 147 { 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])); 145 149 } 146 150 } … … 152 156 { 153 157 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)); 155 159 } 156 MPI_Barrier_local(win .comm);160 MPI_Barrier_local(win->comm); 157 161 } 158 162 … … 164 168 for(int i=0; i<num_ep_max-num_ep; i++) 165 169 { 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])); 167 171 } 168 172 }
Note: See TracChangeset
for help on using the changeset viewer.