Ignore:
Timestamp:
06/28/17 17:46:00 (7 years ago)
Author:
yushan
Message:

add pending list for irecv

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_lib.cpp

    r1134 r1187  
    99 
    1010namespace ep_lib 
    11 { 
    12  
     11{  
    1312 
    1413  int tag_combine(int real_tag, int src, int dest) 
     
    368367 
    369368  } 
     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 
    370424} 
    371425 
Note: See TracChangeset for help on using the changeset viewer.