Ignore:
Timestamp:
05/28/18 17:28:07 (6 years ago)
Author:
yushan
Message:

rank_map is passed from vector to map, in order to have more flexibility in comm_split

File:
1 edited

Legend:

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

    r1500 r1503  
    5252 
    5353 
     54    MPI_Comm comm_for_dup; // this should act as EP_COMM_WORLD 
    5455    MPI_Comm comm; // this should act as EP_COMM_WORLD 
    55     comm = passage[omp_get_thread_num()]; 
     56         
     57    comm_for_dup = passage[omp_get_thread_num()]; 
     58    MPI_Comm_dup(comm_for_dup, &comm); 
     59     
     60    MPI_Comm_free(&comm_for_dup); 
     61     
     62    MPI_Barrier(comm); 
    5663 
    5764    int rank, size; 
    5865    MPI_Comm_rank(comm, &rank); 
    5966    MPI_Comm_size(comm, &size); 
     67     
     68    if(rank == 0) printf("           \t test MPI_Comm_dup \t OK \n"); 
    6069/* 
    6170    // TIMING SYCHRONIZATION 
     
    109118      MPI_Barrier(comm); 
    110119       
     120      MPI_Comm equal_comm = comm; 
     121       
     122       
     123       
     124       
    111125      double sendbuf[10]; 
    112126      double recvbuf[20]; 
    113127       
    114       int sender = 1; 
    115       int receiver = 2; 
     128      int sender; 
     129      if(rank == 0) sender = rand() % size; 
     130      MPI_Bcast(&sender, 1, MPI_INT, 0, comm); 
     131       
     132      int receiver = sender; 
     133      if(rank == 0) while(sender == receiver) {receiver = rand() % size;} 
     134      MPI_Bcast(&receiver, 1, MPI_INT, 0, comm); 
     135       
     136       
     137       
    116138       
    117139      if(rank == sender) 
    118140      { 
    119141        for(int i=0; i<10; i++) sendbuf[i] = 99.99; 
    120         MPI_Send(sendbuf, 10, MPI_DOUBLE, receiver, 99, comm); 
     142        MPI_Send(sendbuf, 10, MPI_DOUBLE, receiver, 99, equal_comm); 
    121143        for(int i=0; i<10; i++) sendbuf[i] = -99.99; 
    122         MPI_Send(sendbuf, 10, MPI_DOUBLE, receiver, 11, comm); 
     144        MPI_Send(sendbuf, 10, MPI_DOUBLE, receiver, 11, equal_comm); 
    123145      } 
    124146       
     
    131153         
    132154        for(int i=0; i<20; i++) std::cout << "recvbuf["<< i <<"] = "<< recvbuf[i] << std::endl; 
     155        printf("sender = %d\nreceiver = %d \tTEST of p2p blocking communication\tOK\n", sender, receiver); 
    133156      } 
    134157       
     
    145168      double recvbuf[20]; 
    146169       
    147       int sender = 3; 
    148       int receiver = 7; 
    149        
     170      int sender; 
     171      if(rank == 0) sender = rand() % size; 
     172      MPI_Bcast(&sender, 1, MPI_INT, 0, comm); 
     173       
     174      int receiver = sender; 
     175      if(rank == 0) receiver = rand() % size; 
     176      MPI_Bcast(&receiver, 1, MPI_INT, 0, comm); 
     177 
     178 
     179             
    150180      MPI_Request request[2]; 
    151181       
     
    179209      { 
    180210        for(int i=0; i<20; i++) std::cout << "recvbuf["<< i <<"] = "<< recvbuf[i] << std::endl; 
     211        printf("sender = %d\nreceiver = %d \tTEST of p2p non-blocking communication\tOK\n", sender, receiver); 
    181212      } 
    182213     
Note: See TracChangeset for help on using the changeset viewer.