Ignore:
Timestamp:
05/28/18 09:54:32 (6 years ago)
Author:
yushan
Message:

save dev

File:
1 edited

Legend:

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

    r1395 r1500  
    11#include "ep_lib.hpp" 
     2 
    23#include <stdio.h> 
    34#include <assert.h> 
     
    1314 
    1415 
     16 
    1517int main(int argc, char **argv) 
    1618{ 
     
    4345    { 
    4446      MPI_Comm *ep_comm; 
    45       MPI_Comm_create_endpoints(MPI_COMM_WORLD.mpi_comm, num_ep, info, ep_comm); 
     47      MPI_Comm_create_endpoints(MPI_COMM_WORLD->mpi_comm, num_ep, info, ep_comm); 
    4648      passage = ep_comm;   
    4749    } 
     
    5658    MPI_Comm_rank(comm, &rank); 
    5759    MPI_Comm_size(comm, &size); 
    58  
     60/* 
    5961    // TIMING SYCHRONIZATION 
    6062    { 
     
    100102      #pragma omp master 
    101103      std::cout << "proc "<< mpi_rank <<" for_loop "<< time_span.count() << " seconds."<<std::endl; 
    102     } 
     104    }// END TIMING SYCHRONIZATION 
     105*/     
     106    // TEST of p2p blocking communication 
     107    { 
     108      MPI_Barrier(comm); 
     109      MPI_Barrier(comm); 
     110       
     111      double sendbuf[10]; 
     112      double recvbuf[20]; 
     113       
     114      int sender = 1; 
     115      int receiver = 2; 
     116       
     117      if(rank == sender) 
     118      { 
     119        for(int i=0; i<10; i++) sendbuf[i] = 99.99; 
     120        MPI_Send(sendbuf, 10, MPI_DOUBLE, receiver, 99, comm); 
     121        for(int i=0; i<10; i++) sendbuf[i] = -99.99; 
     122        MPI_Send(sendbuf, 10, MPI_DOUBLE, receiver, 11, comm); 
     123      } 
     124       
     125      if(rank == receiver) 
     126      { 
     127        MPI_Status status; 
     128        for(int i=0; i<20; i++) recvbuf[i] = 0.0; 
     129        MPI_Recv(&recvbuf[10], 10, MPI_DOUBLE, sender, 99, comm, &status); 
     130        MPI_Recv(recvbuf, 10, MPI_DOUBLE, sender, 11, comm, &status); 
     131         
     132        for(int i=0; i<20; i++) std::cout << "recvbuf["<< i <<"] = "<< recvbuf[i] << std::endl; 
     133      } 
     134       
     135      MPI_Barrier(comm); 
     136     
     137    }//TEST of p2p blocking communication 
     138     
     139    // TEST of p2p non-blocking communication 
     140    { 
     141      MPI_Barrier(comm); 
     142      MPI_Barrier(comm); 
     143       
     144      double sendbuf[10]; 
     145      double recvbuf[20]; 
     146       
     147      int sender = 3; 
     148      int receiver = 7; 
     149       
     150      MPI_Request request[2]; 
     151       
     152      if(rank == sender) 
     153      { 
     154         
     155        for(int i=0; i<10; i++) sendbuf[i] = 99.99; 
     156        MPI_Isend(sendbuf, 10, MPI_DOUBLE, receiver, 99, comm, &request[0]); 
     157        for(int i=0; i<10; i++) sendbuf[i] = -99.99; 
     158        MPI_Isend(sendbuf, 10, MPI_DOUBLE, receiver, 11, comm, &request[1]); 
     159      } 
     160       
     161      if(rank == receiver) 
     162      { 
     163        for(int i=0; i<20; i++) recvbuf[i] = 0.0; 
     164        MPI_Irecv(&recvbuf[10], 10, MPI_DOUBLE, sender, 11, comm, &request[0]); 
     165        MPI_Irecv(recvbuf, 10, MPI_DOUBLE, sender, 99, comm, &request[1]); 
     166      } 
     167       
     168      MPI_Barrier(comm); 
     169       
     170      if(rank == receiver || rank == sender) 
     171      { 
     172        MPI_Status status[2]; 
     173        MPI_Waitall(2, request, status); 
     174      } 
     175       
     176      MPI_Barrier(comm); 
     177       
     178      if(rank == receiver) 
     179      { 
     180        for(int i=0; i<20; i++) std::cout << "recvbuf["<< i <<"] = "<< recvbuf[i] << std::endl; 
     181      } 
     182     
     183    }//TEST of p2p blocking communication 
    103184     
    104185 
     
    568649 
    569650 
    570  
    571 /* 
    572651    MPI_Barrier(comm); 
    573652    { 
     
    595674    if(rank == 0) printf("\tMPI_Comm_split OK\n"); 
    596675    MPI_Barrier(comm); 
    597  
     676/* 
    598677    MPI_Comm inter_comm; 
    599678    //MPI_Intercomm_create(sub_comm, 0, comm, (color+1)%2, 99, &inter_comm); 
     
    617696    if(rank == 0) printf("\tMPI_Intercomm_merge OK\n"); 
    618697    MPI_Barrier(comm); 
    619     } 
     698     
     699     
    620700 
    621701    //check_test_gatherv(comm); 
    622  
    623     // MPI_Barrier(comm); 
    624     // MPI_Comm_free(&sub_comm); 
    625  
    626  
    627     // MPI_Barrier(comm); 
    628     // MPI_Comm_free(&inter_comm); 
    629702*/ 
     703    MPI_Barrier(comm); 
     704    MPI_Comm_free(&sub_comm); 
     705 
     706 
     707    //MPI_Barrier(comm); 
     708    //MPI_Comm_free(&inter_comm); 
     709 
    630710 
    631711    MPI_Barrier(comm); 
    632712    MPI_Comm_free(&comm); 
    633713  } 
    634  
     714  } 
     715 
     716/* 
    635717  int num_threads; 
    636718  if(mpi_rank < mpi_size-2) 
     
    657739    { 
    658740      MPI_Comm *ep_comm; 
    659       MPI_Comm_create_endpoints(MPI_COMM_WORLD.mpi_comm, num_ep, info, ep_comm); 
     741      MPI_Comm_create_endpoints(MPI_COMM_WORLD->mpi_comm, num_ep, info, ep_comm); 
    660742      passage = ep_comm;   
    661743    } 
     
    769851 
    770852  } 
    771  
     853*/ 
    772854  MPI_Finalize(); 
    773855 
Note: See TracChangeset for help on using the changeset viewer.