Changeset 1149 for XIOS/dev/branch_yushan_merged/src/transformation/domain_algorithm_interpolate.cpp
- Timestamp:
- 05/31/17 10:51:06 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/src/transformation/domain_algorithm_interpolate.cpp
r1134 r1149 404 404 CContext* context = CContext::getCurrent(); 405 405 CContextClient* client=context->client; 406 int split_key; 407 ep_lib::MPI_Comm_rank(client->intraComm, &split_key); 406 408 407 409 ep_lib::MPI_Comm poleComme(MPI_COMM_NULL); 408 ep_lib::MPI_Comm_split(client->intraComm, interMapValuePole.empty() ? MPI_UNDEFINED : 1, 0, &poleComme);410 ep_lib::MPI_Comm_split(client->intraComm, interMapValuePole.empty() ? 9 : 1, split_key, &poleComme); 409 411 if (MPI_COMM_NULL != poleComme) 410 412 { … … 421 423 std::vector<int> recvCount(nbClientPole,0); 422 424 std::vector<int> displ(nbClientPole,0); 423 MPI_Allgather(&nbWeight,1,MPI_INT,&recvCount[0],1,MPI_INT,poleComme) ;425 ep_lib::MPI_Allgather(&nbWeight,1,MPI_INT,&recvCount[0],1,MPI_INT,poleComme) ; 424 426 425 427 displ[0]=0; 426 428 for(int n=1;n<nbClientPole;++n) displ[n]=displ[n-1]+recvCount[n-1] ; 427 429 int recvSize=displ[nbClientPole-1]+recvCount[nbClientPole-1] ; 430 428 431 429 432 std::vector<int> sendSourceIndexBuff(nbWeight); … … 444 447 445 448 // Gather all index and weight for pole 446 MPI_Allgatherv(&sendSourceIndexBuff[0],nbWeight,MPI_INT,&recvSourceIndexBuff[0],&recvCount[0],&displ[0],MPI_INT,poleComme);447 MPI_Allgatherv(&sendSourceWeightBuff[0],nbWeight,MPI_DOUBLE,&recvSourceWeightBuff[0],&recvCount[0],&displ[0],MPI_DOUBLE,poleComme);449 ep_lib::MPI_Allgatherv(&sendSourceIndexBuff[0],nbWeight,MPI_INT,&recvSourceIndexBuff[0],&recvCount[0],&displ[0],MPI_INT,poleComme); 450 ep_lib::MPI_Allgatherv(&sendSourceWeightBuff[0],nbWeight,MPI_DOUBLE,&recvSourceWeightBuff[0],&recvCount[0],&displ[0],MPI_DOUBLE,poleComme); 448 451 449 452 std::map<int,double> recvTemp; … … 567 570 568 571 569 MPI_Allreduce(sendBuff, recvBuff, nbClient, MPI_INT, MPI_SUM, client->intraComm);572 ep_lib::MPI_Allreduce(sendBuff, recvBuff, nbClient, MPI_INT, MPI_SUM, client->intraComm); 570 573 571 574 int* sendIndexDestBuff = new int [sendBuffSize]; … … 595 598 596 599 sendRequest.push_back(ep_lib::MPI_Request()); 597 MPI_Isend(sendIndexDestBuff + sendOffSet,600 ep_lib::MPI_Isend(sendIndexDestBuff + sendOffSet, 598 601 k, 599 602 MPI_INT, … … 603 606 &sendRequest.back()); 604 607 sendRequest.push_back(ep_lib::MPI_Request()); 605 MPI_Isend(sendIndexSrcBuff + sendOffSet,608 ep_lib::MPI_Isend(sendIndexSrcBuff + sendOffSet, 606 609 k, 607 610 MPI_INT, … … 611 614 &sendRequest.back()); 612 615 sendRequest.push_back(ep_lib::MPI_Request()); 613 MPI_Isend(sendWeightBuff + sendOffSet,616 ep_lib::MPI_Isend(sendWeightBuff + sendOffSet, 614 617 k, 615 618 MPI_DOUBLE, … … 630 633 { 631 634 ep_lib::MPI_Status recvStatus; 632 MPI_Recv((recvIndexDestBuff + receivedSize),635 ep_lib::MPI_Recv((recvIndexDestBuff + receivedSize), 633 636 recvBuffSize, 634 637 MPI_INT, … … 639 642 640 643 int countBuff = 0; 641 MPI_Get_count(&recvStatus, MPI_INT, &countBuff);644 ep_lib::MPI_Get_count(&recvStatus, MPI_INT, &countBuff); 642 645 #ifdef _usingMPI 643 646 clientSrcRank = recvStatus.MPI_SOURCE; … … 645 648 clientSrcRank = recvStatus.ep_src; 646 649 #endif 647 MPI_Recv((recvIndexSrcBuff + receivedSize),650 ep_lib::MPI_Recv((recvIndexSrcBuff + receivedSize), 648 651 recvBuffSize, 649 652 MPI_INT, … … 653 656 &recvStatus); 654 657 655 MPI_Recv((recvWeightBuff + receivedSize),658 ep_lib::MPI_Recv((recvWeightBuff + receivedSize), 656 659 recvBuffSize, 657 660 MPI_DOUBLE, … … 671 674 std::vector<ep_lib::MPI_Status> requestStatus(sendRequest.size()); 672 675 ep_lib::MPI_Status stat_ignore; 673 MPI_Waitall(sendRequest.size(), &sendRequest[0], &stat_ignore);676 ep_lib::MPI_Waitall(sendRequest.size(), &sendRequest[0], &stat_ignore); 674 677 675 678 delete [] sendIndexDestBuff; … … 761 764 } 762 765 763 MPI_Allreduce(&localNbWeight, &globalNbWeight, 1, MPI_LONG, MPI_SUM, client->intraComm);766 ep_lib::MPI_Allreduce(&localNbWeight, &globalNbWeight, 1, MPI_LONG, MPI_SUM, client->intraComm); 764 767 ep_lib::MPI_Scan(&localNbWeight, &startIndex, 1, MPI_LONG, MPI_SUM, client->intraComm); 765 768
Note: See TracChangeset
for help on using the changeset viewer.