- Timestamp:
- 06/28/17 17:46:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_lib.cpp
r1134 r1187 9 9 10 10 namespace ep_lib 11 { 12 11 { 13 12 14 13 int tag_combine(int real_tag, int src, int dest) … … 368 367 369 368 } 369 370 int test_sendrecv(MPI_Comm comm) 371 { 372 int myRank; 373 MPI_Comm_rank(comm, &myRank); 374 bool amClient = false; 375 bool amServer = false; 376 if(myRank<=3) amClient = true; 377 else amServer = true; 378 379 if(amServer) 380 { 381 int send_buf[4]; 382 MPI_Request send_request[8]; 383 MPI_Status send_status[8]; 384 385 386 387 for(int j=0; j<4; j++) // 4 buffers 388 { 389 for(int i=0; i<2; i++) 390 { 391 send_buf[j] = (myRank+1)*100 + j; 392 MPI_Isend(&send_buf[j], 1, MPI_INT, i*2, 9999, comm, &send_request[i*4+j]); 393 } 394 } 395 396 397 MPI_Waitall(8, send_request, send_status); 398 } 399 400 401 if(amClient&&myRank%2==0) // Clients leaders 402 { 403 int recv_buf[8]; 404 MPI_Request recv_request[8]; 405 MPI_Status recv_status[8]; 406 407 for(int i=0; i<2; i++) // 2 servers 408 { 409 for(int j=0; j<4; j++) 410 { 411 MPI_Irecv(&recv_buf[i*4+j], 1, MPI_INT, i+4, 9999, comm, &recv_request[i*4+j]); 412 } 413 } 414 415 MPI_Waitall(8, recv_request, recv_status); 416 printf("============ client %d, recv_buf = %d, %d, %d, %d, %d, %d, %d, %d ================\n", 417 myRank, recv_buf[0], recv_buf[1], recv_buf[2], recv_buf[3], recv_buf[4], recv_buf[5], recv_buf[6], recv_buf[7]); 418 } 419 420 MPI_Barrier(comm); 421 422 } 423 370 424 } 371 425
Note: See TracChangeset
for help on using the changeset viewer.