Changeset 1149 for XIOS/dev/branch_yushan_merged/extern
- Timestamp:
- 05/31/17 10:51:06 (7 years ago)
- Location:
- XIOS/dev/branch_yushan_merged/extern
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/extern/remap/src/intersect.cpp
r1016 r1149 56 56 for (int j = 0; j < b.n; j++) 57 57 { 58 // share a full edge ? be carefull at the orientation 59 assert(squaredist(a.vertex[ i ], b.vertex[ j ]) > 1e-10*1e-10 || 60 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10); 58 // share a full edge ? be carefull at the orientation 59 /* 60 if(squaredist(a.vertex[i], b.vertex[j]) > 1e-10*1e-10 || 61 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10 ) 62 { 63 printf("A : squaredist(a.vertex[%d], b.vertex[%d]) = %.10e %d\n", 64 i, j, squaredist(a.vertex[i], b.vertex[j]), 65 squaredist(a.vertex[i], b.vertex[j]) > 1e-10*1e-10 ? true : false); 66 printf("B : squaredist(a.vertex[%d], b.vertex[%d]) = %.10e %d\n", 67 (i+1)%a.n, (j+1)%b.n, squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]), 68 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10 ? true : false); 69 70 assert(squaredist(a.vertex[ i ], b.vertex[ j ]) > 1e-10*1e-10 || 71 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10); 72 exit(0); 73 }*/ 61 74 if ( squaredist(a.vertex[ i ], b.vertex[ j ]) < 1e-10*1e-10 && 62 75 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+b.n-1)%b.n]) < 1e-10*1e-10) -
XIOS/dev/branch_yushan_merged/extern/remap/src/mapper.cpp
r1147 r1149 270 270 MPI_Status *status = new MPI_Status[4*mpiSize]; 271 271 272 MPI_Waitall(nbRecvRequest, recvRequest, status); 272 273 MPI_Waitall(nbSendRequest, sendRequest, status); 273 MPI_Waitall(nbRecvRequest, recvRequest, status);274 274 275 275 276 /* for all indices that have been received from requesting ranks: pack values and gradients, then send */ … … 300 301 sendNeighIds[rank][j] = sstree.localElements[recvElement[rank][j]].src_id; 301 302 } 302 MPI_Issend(sendValue[rank], 303 MPI_Issend(sendValue[rank], nbRecvElement[rank], MPI_DOUBLE, rank, 0, communicator, &sendRequest[nbSendRequest]); 303 304 nbSendRequest++; 304 MPI_Issend(sendArea[rank], 305 MPI_Issend(sendArea[rank], nbRecvElement[rank], MPI_DOUBLE, rank, 0, communicator, &sendRequest[nbSendRequest]); 305 306 nbSendRequest++; 306 307 if (order == 2) … … 317 318 MPI_Issend(sendNeighIds[rank], 4*nbRecvElement[rank], MPI_INT, rank, 0, communicator, &sendRequest[nbSendRequest]); 318 319 //ym --> attention taille GloId 319 nbSendRequest++; 320 320 nbSendRequest++; 321 321 } 322 322 } … … 345 345 } 346 346 347 MPI_Waitall(nbSendRequest, sendRequest, status);348 347 MPI_Waitall(nbRecvRequest, recvRequest, status); 348 MPI_Waitall(nbSendRequest, sendRequest, status); 349 349 350 350 351 … … 407 408 } 408 409 } 409 410 410 411 /* free all memory allocated in this function */ 411 for (int rank = 0; rank < mpiSize; rank++)412 /*for (int rank = 0; rank < mpiSize; rank++) 412 413 { 413 414 if (nbSendElement[rank] > 0) … … 446 447 delete[] sendNeighIds; 447 448 delete[] recvNeighIds; 449 */ 448 450 return i; 449 451 } … … 546 548 } 547 549 } 548 550 551 MPI_Waitall(nbRecvRequest, recvRequest, status); 549 552 MPI_Waitall(nbSendRequest, sendRequest, status); 550 MPI_Waitall(nbRecvRequest, recvRequest, status);551 553 552 554 for (int rank = 0; rank < mpiSize; rank++) … … 619 621 } 620 622 623 MPI_Waitall(nbRecvRequest, recvRequest, status); 621 624 MPI_Waitall(nbSendRequest, sendRequest, status); 622 MPI_Waitall(nbRecvRequest, recvRequest, status);623 625 624 626 int nbNeighbourNodes = 0; … … 803 805 } 804 806 807 MPI_Waitall(nbRecvRequest, recvRequest, status); 805 808 MPI_Waitall(nbSendRequest, sendRequest, status); 806 MPI_Waitall(nbRecvRequest, recvRequest, status);809 807 810 808 811 char **sendBuffer2 = new char*[mpiSize]; … … 878 881 { 879 882 MPI_Issend(sendBuffer2[rank], sentMessageSize[rank], MPI_CHAR, rank, 0, communicator, &sendRequest[nbSendRequest]); 880 printf("proc %d send %d elements to proc %d\n", mpiRank, sentMessageSize[rank], rank);881 883 nbSendRequest++; 882 884 } … … 884 886 { 885 887 MPI_Irecv(recvBuffer2[rank], recvMessageSize[rank], MPI_CHAR, rank, 0, communicator, &recvRequest[nbRecvRequest]); 886 printf("proc %d recv %d elements from proc %d\n", mpiRank, recvMessageSize[rank], rank);887 888 nbRecvRequest++; 888 889 } 889 890 } 890 891 892 MPI_Waitall(nbRecvRequest, recvRequest, status); 891 893 MPI_Waitall(nbSendRequest, sendRequest, status); 892 MPI_Waitall(nbRecvRequest, recvRequest, status);894 893 895 894 896 -
XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_test.cpp
r1134 r1149 15 15 namespace ep_lib { 16 16 17 18 19 17 int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) 18 { 19 Debug("MPI_Test with EP"); 20 20 21 21 *flag = false; … … 56 56 if(request->type == 3) // imrecv 57 57 { 58 ::MPI_Request mpi_request = static_cast< ::MPI_Request >(request->mpi_request);58 ::MPI_Request *mpi_request = static_cast< ::MPI_Request* >(&(request->mpi_request)); 59 59 ::MPI_Status mpi_status; 60 ::MPI_Test(&mpi_request, flag, &mpi_status); 60 61 ::MPI_Errhandler_set(MPI_COMM_WORLD_STD, MPI_ERRORS_RETURN); 62 int error_code = ::MPI_Test(mpi_request, flag, &mpi_status); 63 if (error_code != MPI_SUCCESS) { 64 65 char error_string[BUFSIZ]; 66 int length_of_error_string, error_class; 67 68 ::MPI_Error_class(error_code, &error_class); 69 ::MPI_Error_string(error_class, error_string, &length_of_error_string); 70 printf("%s\n", error_string); 71 } 72 61 73 if(*flag) 62 74 { … … 79 91 } 80 92 81 93 } 82 94 83 95 84 85 86 96 int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses) 97 { 98 Debug("MPI_Testall with EP"); 87 99 *flag = true; 88 100 int i=0; … … 92 104 i++; 93 105 } 94 106 } 95 107 96 108 -
XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_wait.cpp
r1147 r1149 100 100 if(array_of_requests[i].type != 2) // isend or imrecv 101 101 { 102 MPI_Wait(&array_of_requests[i], &array_of_statuses[i]); 102 //MPI_Wait(&array_of_requests[i], &array_of_statuses[i]); 103 int tested=false; 104 while(!tested) MPI_Test(&array_of_requests[i], &tested, &array_of_statuses[i]); 103 105 finished++; 104 106 finished_index[i] = true;
Note: See TracChangeset
for help on using the changeset viewer.