Ignore:
Timestamp:
01/22/19 16:15:03 (5 years ago)
Author:
yushan
Message:

dev on ADA

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/transformation/domain_algorithm_interpolate.cpp

    r1622 r1638  
    434434  CContextClient* client=context->client; 
    435435 
    436   MPI_Comm poleComme(MPI_COMM_NULL); 
     436  ep_lib::MPI_Comm poleComme(EP_COMM_NULL); 
     437  #ifdef _usingMPI 
    437438  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) 
    439443  { 
    440444    int nbClientPole; 
    441     MPI_Comm_size(poleComme, &nbClientPole); 
     445    ep_lib::MPI_Comm_size(poleComme, &nbClientPole); 
    442446 
    443447    std::map<int,std::vector<std::pair<int,double> > >::iterator itePole = interMapValuePole.end(), itPole, 
     
    450454    std::vector<int> recvCount(nbClientPole,0); 
    451455    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) ; 
    453457 
    454458    displ[0]=0; 
     
    473477 
    474478    // 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); 
    477481 
    478482    std::map<int,double> recvTemp; 
     
    631635 
    632636 
    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); 
    634638 
    635639  int* sendIndexDestBuff = new int [sendBuffSize]; 
     
    637641  double* sendWeightBuff = new double [sendBuffSize]; 
    638642 
    639   std::vector<MPI_Request> sendRequest; 
     643  std::vector<ep_lib::MPI_Request> sendRequest; 
    640644 
    641645  int sendOffSet = 0, l = 0; 
     
    658662    } 
    659663 
    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, 
    662666             k, 
    663              MPI_INT, 
     667             EP_INT, 
    664668             itMap->first, 
    665669             MPI_DOMAIN_INTERPOLATION_DEST_INDEX, 
    666670             client->intraComm, 
    667671             &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, 
    670674             k, 
    671              MPI_INT, 
     675             EP_INT, 
    672676             itMap->first, 
    673677             MPI_DOMAIN_INTERPOLATION_SRC_INDEX, 
    674678             client->intraComm, 
    675679             &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, 
    678682             k, 
    679              MPI_DOUBLE, 
     683             EP_DOUBLE, 
    680684             itMap->first, 
    681685             MPI_DOMAIN_INTERPOLATION_WEIGHT, 
     
    693697  while (receivedSize < recvBuffSize) 
    694698  { 
    695     MPI_Status recvStatus; 
     699    ep_lib::MPI_Status recvStatus; 
     700    #ifdef _usingMPI 
    696701    MPI_Recv((recvIndexDestBuff + receivedSize), 
    697702             recvBuffSize, 
    698              MPI_INT, 
     703             EP_INT, 
    699704             MPI_ANY_SOURCE, 
    700705             MPI_DOMAIN_INTERPOLATION_DEST_INDEX, 
    701706             client->intraComm, 
    702707             &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 
    703717 
    704718    int countBuff = 0; 
    705     MPI_Get_count(&recvStatus, MPI_INT, &countBuff); 
     719    ep_lib::MPI_Get_count(&recvStatus, EP_INT, &countBuff); 
     720    #ifdef _usingMPI 
    706721    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), 
    709727             recvBuffSize, 
    710              MPI_INT, 
     728             EP_INT, 
    711729             clientSrcRank, 
    712730             MPI_DOMAIN_INTERPOLATION_SRC_INDEX, 
     
    714732             &recvStatus); 
    715733 
    716     MPI_Recv((recvWeightBuff + receivedSize), 
     734    ep_lib::MPI_Recv((recvWeightBuff + receivedSize), 
    717735             recvBuffSize, 
    718              MPI_DOUBLE, 
     736             EP_DOUBLE, 
    719737             clientSrcRank, 
    720738             MPI_DOMAIN_INTERPOLATION_WEIGHT, 
     
    730748  } 
    731749 
    732   std::vector<MPI_Status> requestStatus(sendRequest.size()); 
     750  std::vector<ep_lib::MPI_Status> requestStatus(sendRequest.size()); 
     751  #ifdef _usingMPI 
    733752  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 
    734757 
    735758  delete [] sendIndexDestBuff; 
     
    745768  
    746769/*! Redefined some functions of CONetCDF4 to make use of them */ 
    747 CDomainAlgorithmInterpolate::WriteNetCdf::WriteNetCdf(const StdString& filename, const MPI_Comm comm) 
     770CDomainAlgorithmInterpolate::WriteNetCdf::WriteNetCdf(const StdString& filename, const ep_lib::MPI_Comm comm) 
    748771  : CNc4DataOutput(NULL, filename, false, false, true, comm, false, true) {} 
    749772int CDomainAlgorithmInterpolate::WriteNetCdf::addDimensionWrite(const StdString& name,  
     
    835858  } 
    836859 
    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); 
    839862   
    840863  if (0 == globalNbWeight) 
Note: See TracChangeset for help on using the changeset viewer.