Ignore:
Timestamp:
12/19/17 17:16:01 (4 years ago)
Author:
yushan
Message:

dev EP-RMA : MPI_Put, MPI_Get

Location:
XIOS/dev/branch_openmp/extern/ep_dev
Files:
5 edited

Legend:

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

    r1381 r1383  
    265265} 
    266266 
    267 MPI_Aint to_mpi_aint(void* aint) 
    268 { 
    269   return *(static_cast< MPI_Aint* >(aint)); 
    270 } 
    271  
    272  
    273  
    274  
    275  
     267MPI_Aint to_mpi_aint(ep_lib::MPI_Aint aint) 
     268{ 
     269  return *(static_cast< MPI_Aint* >(aint.mpi_aint)); 
     270} 
     271 
     272 
     273 
     274 
     275 
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_lib_win.hpp

    r1381 r1383  
    1212  int MPI_Win_free(MPI_Win *win); 
    1313  int MPI_Win_fence(int assert, MPI_Win win); 
     14  int MPI_Put(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,  
     15                  int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win); 
     16  int MPI_Get(void *origin_addr, int origin_count, MPI_Datatype origin_datatype,  
     17                  int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win); 
    1418} 
    1519 
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_mpi.hpp

    r1381 r1383  
    1010MPI_Info     to_mpi_info(void* info); 
    1111MPI_Win      to_mpi_win(void* win); 
    12 MPI_Aint      to_mpi_aint(void* aint); 
     12MPI_Aint     to_mpi_aint(ep_lib::MPI_Aint aint); 
    1313 
    1414#endif // EP_MPI_HPP_INCLUDED 
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_win.cpp

    r1381 r1383  
    2020    int num_ep_max; 
    2121    MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, comm); 
     22 
     23    assert(num_ep_max > 1); 
    2224     
    2325     
  • XIOS/dev/branch_openmp/extern/ep_dev/main.cpp

    r1382 r1383  
    3030  MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); 
    3131  
    32    
    33  
    34  
    35  
    36  
    37  
    38   //omp_set_num_threads(4); 
    39  
    40    
    41  
    4232  #pragma omp parallel default(shared) 
    4333  { 
     
    693683    MPI_Win ep_win; 
    694684    MPI_Aint buf_size(1); 
    695     int buf; 
     685    int buf = rank; 
     686    int local_buf = rank; 
    696687    MPI_Win_create(&buf, buf_size, sizeof(int), info, comm, &ep_win); 
    697688    MPI_Barrier(comm); 
     
    703694    MPI_Barrier(comm); 
    704695 
    705     MPI_Win_fence(MPI_MODE_NOSUCCEED, ep_win); 
    706  
    707     MPI_Barrier(comm); 
     696    MPI_Win_fence(0, ep_win); 
     697 
     698    if(rank == 0) 
     699    { 
     700      local_buf = 99; 
     701      MPI_Aint displs(0); 
     702      MPI_Put(&local_buf, 1, MPI_INT, size-1, displs, 1, MPI_INT, ep_win); 
     703    } 
     704 
     705    if(rank == size-2) 
     706    { 
     707      MPI_Aint displs(0); 
     708      MPI_Get(&local_buf, 1, MPI_INT, 2, displs, 1, MPI_INT, ep_win); 
     709    } 
     710 
     711 
     712    MPI_Barrier(comm); 
     713 
     714    MPI_Win_fence(0, ep_win); 
    708715 
    709716     
    710717    MPI_Win_free(&ep_win); 
    711     printf("comm free\n"); 
     718    printf("rank = %d, buf = %d, local_buf = %d\n", rank, buf, local_buf); 
    712719     
    713720    MPI_Comm_free(&comm); 
Note: See TracChangeset for help on using the changeset viewer.