Changeset 1500 for XIOS/dev/branch_openmp/extern/ep_dev/ep_scan.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_scan.cpp
r1381 r1500 50 50 valid_op(op); 51 51 52 int ep_rank_loc = comm .ep_comm_ptr->size_rank_info[1].first;53 int num_ep = comm .ep_comm_ptr->size_rank_info[1].second;54 int mpi_rank = comm .ep_comm_ptr->size_rank_info[2].first;52 int ep_rank_loc = comm->ep_comm_ptr->size_rank_info[1].first; 53 int num_ep = comm->ep_comm_ptr->size_rank_info[1].second; 54 int mpi_rank = comm->ep_comm_ptr->size_rank_info[2].first; 55 55 56 56 … … 184 184 } 185 185 186 comm .my_buffer->void_buffer[0] = recvbuf;186 comm->my_buffer->void_buffer[0] = recvbuf; 187 187 } 188 188 else 189 189 { 190 comm .my_buffer->void_buffer[ep_rank_loc] = const_cast<void*>(sendbuf);190 comm->my_buffer->void_buffer[ep_rank_loc] = const_cast<void*>(sendbuf); 191 191 memcpy(recvbuf, sendbuf, datasize*count); 192 192 } … … 196 196 MPI_Barrier_local(comm); 197 197 198 memcpy(recvbuf, comm .my_buffer->void_buffer[0], datasize*count);198 memcpy(recvbuf, comm->my_buffer->void_buffer[0], datasize*count); 199 199 200 200 … … 205 205 assert (datasize == sizeof(int)); 206 206 for(int i=1; i<ep_rank_loc+1; i++) 207 reduce_sum<int>(static_cast<int*>(comm .my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count);207 reduce_sum<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 208 208 } 209 209 … … 212 212 assert(datasize == sizeof(float)); 213 213 for(int i=1; i<ep_rank_loc+1; i++) 214 reduce_sum<float>(static_cast<float*>(comm .my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count);214 reduce_sum<float>(static_cast<float*>(comm->my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 215 215 } 216 216 … … 220 220 assert(datasize == sizeof(double)); 221 221 for(int i=1; i<ep_rank_loc+1; i++) 222 reduce_sum<double>(static_cast<double*>(comm .my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count);222 reduce_sum<double>(static_cast<double*>(comm->my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 223 223 } 224 224 … … 227 227 assert(datasize == sizeof(char)); 228 228 for(int i=1; i<ep_rank_loc+1; i++) 229 reduce_sum<char>(static_cast<char*>(comm .my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count);229 reduce_sum<char>(static_cast<char*>(comm->my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 230 230 } 231 231 … … 234 234 assert(datasize == sizeof(long)); 235 235 for(int i=1; i<ep_rank_loc+1; i++) 236 reduce_sum<long>(static_cast<long*>(comm .my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count);236 reduce_sum<long>(static_cast<long*>(comm->my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 237 237 } 238 238 … … 241 241 assert(datasize == sizeof(unsigned long)); 242 242 for(int i=1; i<ep_rank_loc+1; i++) 243 reduce_sum<unsigned long>(static_cast<unsigned long*>(comm .my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count);243 reduce_sum<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 244 244 } 245 245 … … 255 255 assert(datasize == sizeof(int)); 256 256 for(int i=1; i<ep_rank_loc+1; i++) 257 reduce_max<int>(static_cast<int*>(comm .my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count);257 reduce_max<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 258 258 } 259 259 … … 262 262 assert(datasize == sizeof(float)); 263 263 for(int i=1; i<ep_rank_loc+1; i++) 264 reduce_max<float>(static_cast<float*>(comm .my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count);264 reduce_max<float>(static_cast<float*>(comm->my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 265 265 } 266 266 … … 269 269 assert(datasize == sizeof(double)); 270 270 for(int i=1; i<ep_rank_loc+1; i++) 271 reduce_max<double>(static_cast<double*>(comm .my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count);271 reduce_max<double>(static_cast<double*>(comm->my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 272 272 } 273 273 … … 276 276 assert(datasize == sizeof(char)); 277 277 for(int i=1; i<ep_rank_loc+1; i++) 278 reduce_max<char>(static_cast<char*>(comm .my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count);278 reduce_max<char>(static_cast<char*>(comm->my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 279 279 } 280 280 … … 283 283 assert(datasize == sizeof(long)); 284 284 for(int i=1; i<ep_rank_loc+1; i++) 285 reduce_max<long>(static_cast<long*>(comm .my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count);285 reduce_max<long>(static_cast<long*>(comm->my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 286 286 } 287 287 … … 290 290 assert(datasize == sizeof(unsigned long)); 291 291 for(int i=1; i<ep_rank_loc+1; i++) 292 reduce_max<unsigned long>(static_cast<unsigned long*>(comm .my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count);292 reduce_max<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 293 293 } 294 294 … … 302 302 assert(datasize == sizeof(int)); 303 303 for(int i=1; i<ep_rank_loc+1; i++) 304 reduce_min<int>(static_cast<int*>(comm .my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count);304 reduce_min<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 305 305 } 306 306 … … 309 309 assert(datasize == sizeof(float)); 310 310 for(int i=1; i<ep_rank_loc+1; i++) 311 reduce_min<float>(static_cast<float*>(comm .my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count);311 reduce_min<float>(static_cast<float*>(comm->my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 312 312 } 313 313 … … 316 316 assert(datasize == sizeof(double)); 317 317 for(int i=1; i<ep_rank_loc+1; i++) 318 reduce_min<double>(static_cast<double*>(comm .my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count);318 reduce_min<double>(static_cast<double*>(comm->my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 319 319 } 320 320 … … 323 323 assert(datasize == sizeof(char)); 324 324 for(int i=1; i<ep_rank_loc+1; i++) 325 reduce_min<char>(static_cast<char*>(comm .my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count);325 reduce_min<char>(static_cast<char*>(comm->my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 326 326 } 327 327 … … 330 330 assert(datasize == sizeof(long)); 331 331 for(int i=1; i<ep_rank_loc+1; i++) 332 reduce_min<long>(static_cast<long*>(comm .my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count);332 reduce_min<long>(static_cast<long*>(comm->my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 333 333 } 334 334 … … 337 337 assert(datasize == sizeof(unsigned long)); 338 338 for(int i=1; i<ep_rank_loc+1; i++) 339 reduce_min<unsigned long>(static_cast<unsigned long*>(comm .my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count);339 reduce_min<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 340 340 } 341 341 … … 350 350 int MPI_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) 351 351 { 352 if(!comm .is_ep)353 { 354 return ::MPI_Scan(sendbuf, recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), to_mpi_comm(comm .mpi_comm));352 if(!comm->is_ep) 353 { 354 return ::MPI_Scan(sendbuf, recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), to_mpi_comm(comm->mpi_comm)); 355 355 } 356 356 357 357 valid_type(datatype); 358 358 359 int ep_rank = comm .ep_comm_ptr->size_rank_info[0].first;360 int ep_rank_loc = comm .ep_comm_ptr->size_rank_info[1].first;361 int mpi_rank = comm .ep_comm_ptr->size_rank_info[2].first;362 int ep_size = comm .ep_comm_ptr->size_rank_info[0].second;363 int num_ep = comm .ep_comm_ptr->size_rank_info[1].second;364 int mpi_size = comm .ep_comm_ptr->size_rank_info[2].second;359 int ep_rank = comm->ep_comm_ptr->size_rank_info[0].first; 360 int ep_rank_loc = comm->ep_comm_ptr->size_rank_info[1].first; 361 int mpi_rank = comm->ep_comm_ptr->size_rank_info[2].first; 362 int ep_size = comm->ep_comm_ptr->size_rank_info[0].second; 363 int num_ep = comm->ep_comm_ptr->size_rank_info[1].second; 364 int mpi_size = comm->ep_comm_ptr->size_rank_info[2].second; 365 365 366 366 ::MPI_Aint datasize, lb; … … 375 375 std::vector<int> my_map(mpi_size, 0); 376 376 377 for(int i=0; i<comm .rank_map->size(); i++) my_map[comm.rank_map->at(i).second]++;377 for(int i=0; i<comm->rank_map->size(); i++) my_map[comm->rank_map->at(i).second]++; 378 378 379 379 for(int i=0; i<mpi_rank; i++) my_src += my_map[i]; … … 416 416 417 417 if(ep_rank_loc == 0) 418 ::MPI_Exscan(MPI_IN_PLACE, tmp_recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), to_mpi_comm(comm .mpi_comm));418 ::MPI_Exscan(MPI_IN_PLACE, tmp_recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), to_mpi_comm(comm->mpi_comm)); 419 419 420 420 //printf(" ID=%d : %d %d \n", ep_rank, static_cast<int*>(tmp_recvbuf)[0], static_cast<int*>(tmp_recvbuf)[1]);
Note: See TracChangeset
for help on using the changeset viewer.