- Timestamp:
- 01/22/19 16:15:03 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/domain_algorithm_interpolate.cpp
r1622 r1638 434 434 CContextClient* client=context->client; 435 435 436 MPI_Comm poleComme(MPI_COMM_NULL); 436 ep_lib::MPI_Comm poleComme(EP_COMM_NULL); 437 #ifdef _usingMPI 437 438 MPI_Comm_split(client->intraComm, interMapValuePole.empty() ? MPI_UNDEFINED : 1, 0, &poleComme); 438 if (MPI_COMM_NULL != poleComme) 439 #elif _usingEP 440 ep_lib::MPI_Comm_split(client->intraComm, interMapValuePole.empty() ? 0 : 1, 0, &poleComme); 441 #endif 442 if (EP_COMM_NULL != poleComme) 439 443 { 440 444 int nbClientPole; 441 MPI_Comm_size(poleComme, &nbClientPole);445 ep_lib::MPI_Comm_size(poleComme, &nbClientPole); 442 446 443 447 std::map<int,std::vector<std::pair<int,double> > >::iterator itePole = interMapValuePole.end(), itPole, … … 450 454 std::vector<int> recvCount(nbClientPole,0); 451 455 std::vector<int> displ(nbClientPole,0); 452 MPI_Allgather(&nbWeight,1,MPI_INT,&recvCount[0],1,MPI_INT,poleComme) ;456 ep_lib::MPI_Allgather(&nbWeight,1,EP_INT,&recvCount[0],1,EP_INT,poleComme) ; 453 457 454 458 displ[0]=0; … … 473 477 474 478 // Gather all index and weight for pole 475 MPI_Allgatherv(&sendSourceIndexBuff[0],nbWeight,MPI_INT,&recvSourceIndexBuff[0],&recvCount[0],&displ[0],MPI_INT,poleComme);476 MPI_Allgatherv(&sendSourceWeightBuff[0],nbWeight,MPI_DOUBLE,&recvSourceWeightBuff[0],&recvCount[0],&displ[0],MPI_DOUBLE,poleComme);479 ep_lib::MPI_Allgatherv(&sendSourceIndexBuff[0],nbWeight,EP_INT,&recvSourceIndexBuff[0],&recvCount[0],&displ[0],EP_INT,poleComme); 480 ep_lib::MPI_Allgatherv(&sendSourceWeightBuff[0],nbWeight,EP_DOUBLE,&recvSourceWeightBuff[0],&recvCount[0],&displ[0],EP_DOUBLE,poleComme); 477 481 478 482 std::map<int,double> recvTemp; … … 631 635 632 636 633 MPI_Allreduce(sendBuff, recvBuff, nbClient, MPI_INT, MPI_SUM, client->intraComm);637 ep_lib::MPI_Allreduce(sendBuff, recvBuff, nbClient, EP_INT, EP_SUM, client->intraComm); 634 638 635 639 int* sendIndexDestBuff = new int [sendBuffSize]; … … 637 641 double* sendWeightBuff = new double [sendBuffSize]; 638 642 639 std::vector< MPI_Request> sendRequest;643 std::vector<ep_lib::MPI_Request> sendRequest; 640 644 641 645 int sendOffSet = 0, l = 0; … … 658 662 } 659 663 660 sendRequest.push_back( MPI_Request());661 MPI_Isend(sendIndexDestBuff + sendOffSet,664 sendRequest.push_back(ep_lib::MPI_Request()); 665 ep_lib::MPI_Isend(sendIndexDestBuff + sendOffSet, 662 666 k, 663 MPI_INT,667 EP_INT, 664 668 itMap->first, 665 669 MPI_DOMAIN_INTERPOLATION_DEST_INDEX, 666 670 client->intraComm, 667 671 &sendRequest.back()); 668 sendRequest.push_back( MPI_Request());669 MPI_Isend(sendIndexSrcBuff + sendOffSet,672 sendRequest.push_back(ep_lib::MPI_Request()); 673 ep_lib::MPI_Isend(sendIndexSrcBuff + sendOffSet, 670 674 k, 671 MPI_INT,675 EP_INT, 672 676 itMap->first, 673 677 MPI_DOMAIN_INTERPOLATION_SRC_INDEX, 674 678 client->intraComm, 675 679 &sendRequest.back()); 676 sendRequest.push_back( MPI_Request());677 MPI_Isend(sendWeightBuff + sendOffSet,680 sendRequest.push_back(ep_lib::MPI_Request()); 681 ep_lib::MPI_Isend(sendWeightBuff + sendOffSet, 678 682 k, 679 MPI_DOUBLE,683 EP_DOUBLE, 680 684 itMap->first, 681 685 MPI_DOMAIN_INTERPOLATION_WEIGHT, … … 693 697 while (receivedSize < recvBuffSize) 694 698 { 695 MPI_Status recvStatus; 699 ep_lib::MPI_Status recvStatus; 700 #ifdef _usingMPI 696 701 MPI_Recv((recvIndexDestBuff + receivedSize), 697 702 recvBuffSize, 698 MPI_INT,703 EP_INT, 699 704 MPI_ANY_SOURCE, 700 705 MPI_DOMAIN_INTERPOLATION_DEST_INDEX, 701 706 client->intraComm, 702 707 &recvStatus); 708 #elif _usingEP 709 ep_lib::MPI_Recv((recvIndexDestBuff + receivedSize), 710 recvBuffSize, 711 EP_INT, 712 -2, 713 MPI_DOMAIN_INTERPOLATION_DEST_INDEX, 714 client->intraComm, 715 &recvStatus); 716 #endif 703 717 704 718 int countBuff = 0; 705 MPI_Get_count(&recvStatus, MPI_INT, &countBuff); 719 ep_lib::MPI_Get_count(&recvStatus, EP_INT, &countBuff); 720 #ifdef _usingMPI 706 721 clientSrcRank = recvStatus.MPI_SOURCE; 707 708 MPI_Recv((recvIndexSrcBuff + receivedSize), 722 #elif _usingEP 723 clientSrcRank = recvStatus.ep_src; 724 #endif 725 726 ep_lib::MPI_Recv((recvIndexSrcBuff + receivedSize), 709 727 recvBuffSize, 710 MPI_INT,728 EP_INT, 711 729 clientSrcRank, 712 730 MPI_DOMAIN_INTERPOLATION_SRC_INDEX, … … 714 732 &recvStatus); 715 733 716 MPI_Recv((recvWeightBuff + receivedSize),734 ep_lib::MPI_Recv((recvWeightBuff + receivedSize), 717 735 recvBuffSize, 718 MPI_DOUBLE,736 EP_DOUBLE, 719 737 clientSrcRank, 720 738 MPI_DOMAIN_INTERPOLATION_WEIGHT, … … 730 748 } 731 749 732 std::vector<MPI_Status> requestStatus(sendRequest.size()); 750 std::vector<ep_lib::MPI_Status> requestStatus(sendRequest.size()); 751 #ifdef _usingMPI 733 752 MPI_Waitall(sendRequest.size(), &sendRequest[0], MPI_STATUS_IGNORE); 753 #elif _usingEP 754 std::vector<ep_lib::MPI_Status> waitstat(sendRequest.size()); 755 ep_lib::MPI_Waitall(sendRequest.size(), &sendRequest[0], &waitstat[0]); 756 #endif 734 757 735 758 delete [] sendIndexDestBuff; … … 745 768 746 769 /*! Redefined some functions of CONetCDF4 to make use of them */ 747 CDomainAlgorithmInterpolate::WriteNetCdf::WriteNetCdf(const StdString& filename, const MPI_Comm comm)770 CDomainAlgorithmInterpolate::WriteNetCdf::WriteNetCdf(const StdString& filename, const ep_lib::MPI_Comm comm) 748 771 : CNc4DataOutput(NULL, filename, false, false, true, comm, false, true) {} 749 772 int CDomainAlgorithmInterpolate::WriteNetCdf::addDimensionWrite(const StdString& name, … … 835 858 } 836 859 837 MPI_Allreduce(&localNbWeight, &globalNbWeight, 1, MPI_LONG, MPI_SUM, client->intraComm);838 MPI_Scan(&localNbWeight, &startIndex, 1, MPI_LONG, MPI_SUM, client->intraComm);860 ep_lib::MPI_Allreduce(&localNbWeight, &globalNbWeight, 1, EP_LONG, EP_SUM, client->intraComm); 861 ep_lib::MPI_Scan(&localNbWeight, &startIndex, 1, EP_LONG, EP_SUM, client->intraComm); 839 862 840 863 if (0 == globalNbWeight)
Note: See TracChangeset
for help on using the changeset viewer.