Ignore:
Timestamp:
05/31/18 16:32:39 (6 years ago)
Author:
yushan
Message:

save dev

File:
1 edited

Legend:

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

    r1511 r1515  
    6767     
    6868    if(rank == 0) printf("           \t test MPI_Comm_dup \t OK \n"); 
    69 /* 
     69 
    7070    // TIMING SYCHRONIZATION 
    7171    { 
     
    112112      std::cout << "proc "<< mpi_rank <<" for_loop "<< time_span.count() << " seconds."<<std::endl; 
    113113    }// END TIMING SYCHRONIZATION 
    114 */     
     114     
    115115    // TEST of p2p blocking communication 
    116116    { 
     
    762762      MPI_Comm_rank(comm, &rank); 
    763763      MPI_Comm_size(comm, &size); 
    764        
    765       int tab_color[16] = {2, 2, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1}; 
    766       int tab_key[16]   = {2, 1, 4, 1, 0, 4, 3, 3, 4, 3, 4, 4, 4, 0, 0, 2}; 
     764 
     765      int config = 1; 
     766      if(config=1) 
     767      { 
     768        assert(size == 16 && omp_get_num_threads()==4); 
     769      } 
     770       
     771      int tab_color[16] = {2, 2, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1}; // used for config 1 
     772      int tab_key[16]   = {2, 1, 4, 1, 0, 4, 3, 3, 4, 3, 4, 4, 4, 0, 0, 2}; // used for config 1 
    767773 
    768774      int color = tab_color[rank]; 
     
    779785 
    780786 
    781       printf("rank = %d, color = %d, key = %d, split_rank = %d, local_rank=%d\n", rank, color, key, split_rank, split_comm->ep_comm_ptr->size_rank_info[1].first); 
     787       
    782788 
    783789      MPI_Barrier(comm); 
     
    794800       
    795801      int local_leader = 0; 
    796       int remote_leader = color==2? 13: 4; 
     802      int remote_leader = color==2? 13: 4; // used for config 1 
    797803 
    798804      MPI_Comm peer_comm = comm; 
     
    800806      MPI_Comm inter_comm; 
    801807      MPI_Intercomm_create(split_comm, local_leader, peer_comm, remote_leader, 99, &inter_comm); 
    802        
     808 
     809      int inter_rank, inter_size, remote_size; 
     810      MPI_Comm_rank(inter_comm, &inter_rank); 
     811      MPI_Comm_size(inter_comm, &inter_size); 
     812      MPI_Comm_remote_size(inter_comm, &remote_size); 
     813       
     814       
     815      MPI_Barrier(comm); 
     816      MPI_Barrier(comm); 
     817 
     818      if(rank == 0) printf("            \t MPI_Intercomm_create \t OK\n"); 
     819 
     820      printf("rank = %d, split_rank = %d, split_size = %d, inter_rank=%d, inter_size=%d, remote_size=%d\n", rank, split_rank, split_size, inter_rank, inter_size, remote_size); 
     821 
     822       
     823      MPI_Barrier(comm); 
     824      MPI_Barrier(comm); 
     825 
     826      if(color==2 && split_rank==1) 
     827      { 
     828        double sendbuf[9]={1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9}; 
     829        MPI_Request send_request; 
     830        MPI_Status send_status; 
     831        MPI_Isend(sendbuf, 9, MPI_DOUBLE, 5, 10, inter_comm, &send_request); 
     832        MPI_Wait(&send_request, &send_status); 
     833      } 
     834 
     835      if(color==1 && split_rank==5) 
     836      { 
     837        double recvbuf[9]; 
     838        MPI_Request recv_request; 
     839        MPI_Status recv_status; 
     840        MPI_Irecv(recvbuf, 9, MPI_DOUBLE, 1, 10, inter_comm, &recv_request); 
     841        MPI_Wait(&recv_request, &recv_status); 
     842        for(int i=0; i<9; i++) 
     843        { 
     844          printf("recvbuf[%d] = %lf\n", i, recvbuf[i]); 
     845        } 
     846      } 
     847 
     848      MPI_Barrier(comm); 
     849      MPI_Barrier(comm); 
     850 
     851      if(rank == 0) printf("            \t Test iP2P for intercomm \t OK\n"); 
    803852 
    804853 
     
    809858      MPI_Comm_free(&split_comm); 
    810859 
     860      MPI_Barrier(comm); 
     861      MPI_Barrier(comm); 
     862 
     863      MPI_Comm_free(&inter_comm); 
     864       
    811865 
    812866      /* 
Note: See TracChangeset for help on using the changeset viewer.