Changeset 1500 for XIOS/dev/branch_openmp/extern/ep_dev/main.cpp
- Timestamp:
- 05/28/18 09:54:32 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/extern/ep_dev/main.cpp
r1395 r1500 1 1 #include "ep_lib.hpp" 2 2 3 #include <stdio.h> 3 4 #include <assert.h> … … 13 14 14 15 16 15 17 int main(int argc, char **argv) 16 18 { … … 43 45 { 44 46 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); 46 48 passage = ep_comm; 47 49 } … … 56 58 MPI_Comm_rank(comm, &rank); 57 59 MPI_Comm_size(comm, &size); 58 60 /* 59 61 // TIMING SYCHRONIZATION 60 62 { … … 100 102 #pragma omp master 101 103 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 103 184 104 185 … … 568 649 569 650 570 571 /*572 651 MPI_Barrier(comm); 573 652 { … … 595 674 if(rank == 0) printf("\tMPI_Comm_split OK\n"); 596 675 MPI_Barrier(comm); 597 676 /* 598 677 MPI_Comm inter_comm; 599 678 //MPI_Intercomm_create(sub_comm, 0, comm, (color+1)%2, 99, &inter_comm); … … 617 696 if(rank == 0) printf("\tMPI_Intercomm_merge OK\n"); 618 697 MPI_Barrier(comm); 619 } 698 699 620 700 621 701 //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);629 702 */ 703 MPI_Barrier(comm); 704 MPI_Comm_free(&sub_comm); 705 706 707 //MPI_Barrier(comm); 708 //MPI_Comm_free(&inter_comm); 709 630 710 631 711 MPI_Barrier(comm); 632 712 MPI_Comm_free(&comm); 633 713 } 634 714 } 715 716 /* 635 717 int num_threads; 636 718 if(mpi_rank < mpi_size-2) … … 657 739 { 658 740 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); 660 742 passage = ep_comm; 661 743 } … … 769 851 770 852 } 771 853 */ 772 854 MPI_Finalize(); 773 855
Note: See TracChangeset
for help on using the changeset viewer.