Ignore:
Timestamp:
12/01/21 16:52:24 (3 years ago)
Author:
ymipsl
Message:

tracking memory leak
Elements, views, and connectors are now managed with shared pointer.
YM

Location:
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.cpp

    r2001 r2267  
    66 
    77 
    8   void CAlgorithmTransformationReduce::computeAlgorithm(CLocalView* srcView, CLocalView* dstView) 
     8  void CAlgorithmTransformationReduce::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 
    99 { 
    1010    this->computeRecvElement(srcView, dstView) ; 
    11     reduceTransformConnector_ = new  CReduceTransformConnector( recvElement_->getView(CElementView::FULL), dstView, operator_, transformationMapping_, detectMissingValue_) ;  
     11    reduceTransformConnector_ = make_shared<CReduceTransformConnector>(recvElement_->getView(CElementView::FULL), dstView, operator_, transformationMapping_, detectMissingValue_) ;  
    1212  } 
    1313  
     
    1818  } 
    1919   
    20   void CAlgorithmTransformationReduce::computeRecvElement(CLocalView* srcView, CLocalView* dstView) 
     20  void CAlgorithmTransformationReduce::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 
    2121  { 
    2222    auto& srcMap = transformationMapping_ ; 
     
    2828    int i=0 ; 
    2929    for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;} 
    30     recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 
     30    recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 
    3131    recvElement_->addFullView() ; 
    3232  } 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.hpp

    r2007 r2267  
    1818      virtual ~CAlgorithmTransformationReduce() {}; 
    1919      virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut); 
    20       virtual void computeRecvElement(CLocalView* srcView, CLocalView* dstView) ; 
     20      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 
    2121       
    2222    protected: 
    23       virtual void computeAlgorithm(CLocalView* srcView, CLocalView* dstView) ; 
     23      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 
    2424        
    2525      //! Map between global index of destination element and source element 
    2626      EReduction operator_ ; 
    2727      TransformationIndexMap transformationMapping_; 
    28       CReduceTransformConnector* reduceTransformConnector_ ; 
     28      shared_ptr<CReduceTransformConnector> reduceTransformConnector_ ; 
    2929      bool detectMissingValue_=true ; 
    3030      bool eliminateRedondantSrc_ = true ;  
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.cpp

    r2004 r2267  
    88{ 
    99  
    10   void CAlgorithmTransformationTransfer::computeAlgorithm(CLocalView* srcView, CLocalView* dstView) 
     10  void CAlgorithmTransformationTransfer::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 
    1111  { 
    1212   this->computeRecvElement(srcView, dstView) ; 
    13    transferTransformConnector_ = new  CTransferTransformConnector( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_) ;  
     13   transferTransformConnector_ = make_shared<CTransferTransformConnector>( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_) ;  
    1414  } 
    1515  
     
    2020  } 
    2121   
    22   void CAlgorithmTransformationTransfer::computeRecvElement(CLocalView* srcView, CLocalView* dstView) 
     22  void CAlgorithmTransformationTransfer::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 
    2323  { 
    2424    set<size_t> srcIndex ; 
     
    2828    int i=0 ; 
    2929    for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;} 
    30     recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 
     30    recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 
    3131    recvElement_->addFullView() ; 
    3232  } 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.hpp

    r2145 r2267  
    1616      virtual ~CAlgorithmTransformationTransfer() {}; 
    1717      virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut); 
    18       virtual void computeRecvElement(CLocalView* srcView, CLocalView* dstView) ; 
     18      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 
    1919      virtual StdString getAlgoName() {return "\\nCAlgorithm transformation Transfer";} 
    2020    
    2121    protected: 
    22       virtual void computeAlgorithm(CLocalView* srcView, CLocalView* dstView) ; 
     22      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 
    2323 
    2424      //! Map between global index of destination element and source element 
    2525      unordered_map<int,int> transformationMapping_; 
    26       CTransferTransformConnector* transferTransformConnector_ ; 
     26      shared_ptr<CTransferTransformConnector> transferTransformConnector_ ; 
    2727  }; 
    2828 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.cpp

    r2001 r2267  
    66 
    77 
    8   void CAlgorithmTransformationWeight::computeAlgorithm(CLocalView* srcView, CLocalView* dstView) 
     8  void CAlgorithmTransformationWeight::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 
    99  { 
    1010    this->computeRecvElement(srcView, dstView) ; 
    11     weightTransformConnector_ = new  CWeightTransformConnector( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_, transformationWeight_) ;  
     11    weightTransformConnector_ = make_shared<CWeightTransformConnector>(recvElement_->getView(CElementView::FULL), dstView, transformationMapping_, transformationWeight_) ;  
    1212  } 
    1313  
     
    1818  } 
    1919 
    20   void CAlgorithmTransformationWeight::computeRecvElement(CLocalView* srcView, CLocalView* dstView) 
     20  void CAlgorithmTransformationWeight::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 
    2121  { 
    2222    auto& srcMap = transformationMapping_ ; 
     
    2828    int i=0 ; 
    2929    for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;} 
    30     recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 
     30    recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 
    3131    recvElement_->addFullView() ; 
    3232  } 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.hpp

    r2007 r2267  
    1818      virtual ~CAlgorithmTransformationWeight() {}; 
    1919      virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut); 
    20       virtual void computeRecvElement(CLocalView* srcView, CLocalView* dstView); 
     20      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView); 
    2121    protected: 
    22       virtual void computeAlgorithm(CLocalView* srcView, CLocalView* dstView) ; 
     22      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 
    2323 
    2424      //! Map between global index of destination element and source element 
     
    2626      //! Weight corresponding of source to destination 
    2727      TransformationWeightMap transformationWeight_; 
    28       CWeightTransformConnector* weightTransformConnector_ ; 
     28      shared_ptr<CWeightTransformConnector> weightTransformConnector_ ; 
    2929       
    3030  }; 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp

    r2126 r2267  
    106106    { 
    107107      CArray<double,1> coord ; 
    108       CLocalConnector destConnector(axisDest_->getLocalView(CElementView::FULL), axisDest_->getLocalView(CElementView::WORKFLOW)) ; 
    109       destConnector.computeConnector() ; 
    110       destConnector.transfer(axisDest_->value, coord) ; 
     108      auto destConnector = make_shared<CLocalConnector>(axisDest_->getLocalView(CElementView::FULL), axisDest_->getLocalView(CElementView::WORKFLOW)) ; 
     109      destConnector->computeConnector() ; 
     110      destConnector->transfer(axisDest_->value, coord) ; 
    111111      destCoordinate_ = vector<double>(coord.dataFirst(), coord.dataFirst()+nDest_) ; 
    112112    } 
     
    129129      CArray<double,1> coord ; 
    130130      CArray<double,1> coordGlo ; 
    131       CLocalConnector srcConnector(axisSrc_->getLocalView(CElementView::FULL), axisSrc_->getLocalView(CElementView::WORKFLOW)) ; 
    132       srcConnector.computeConnector() ; 
    133       srcConnector.transfer(axisSrc_->value, coord) ; // full view value -> workflow value 
     131      auto srcConnector = make_shared<CLocalConnector>(axisSrc_->getLocalView(CElementView::FULL), axisSrc_->getLocalView(CElementView::WORKFLOW)) ; 
     132      srcConnector->computeConnector() ; 
     133      srcConnector->transfer(axisSrc_->value, coord) ; // full view value -> workflow value 
    134134      transferTransformConnector_ -> transfer(coord, coordGlo) ; // workflow view -> full global view 
    135135      srcCoordinate_ = vector<double>(coordGlo.dataFirst(), coordGlo.dataFirst()+ngloSrc_) ; 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/generic_algorithm_transformation.hpp

    r2145 r2267  
    4848    typedef std::unordered_map<int, std::vector<double> > TransformationWeightMap; 
    4949  
    50     CLocalElement* recvElement_=nullptr ; 
     50    shared_ptr<CLocalElement> recvElement_ ; 
    5151    bool isSource_ ; 
    5252 
    5353  public: 
    54     CLocalElement* getRecvElement(void) { return recvElement_ ;} 
     54    shared_ptr<CLocalElement> getRecvElement(void) { return recvElement_ ;} 
    5555   
    5656}; 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.cpp

    r2122 r2267  
    1818  void CGridAlgorithmGeneric::computeAlgorithm(void) 
    1919  { 
    20     CGridLocalElements* gridSrcElements = gridSrc_->getGridLocalElements() ; 
    21     CGridLocalElements* gridDstElements = gridDst_->getGridLocalElements() ; 
     20    shared_ptr<CGridLocalElements> gridSrcElements = gridSrc_->getGridLocalElements() ; 
     21    shared_ptr<CGridLocalElements> gridDstElements = gridDst_->getGridLocalElements() ; 
    2222     
    23     CGridLocalView* srcView = gridSrcElements->getView(CElementView::WORKFLOW) ; 
    24     CGridLocalView* dstView = gridDstElements->getView(CElementView::WORKFLOW) ; 
     23    shared_ptr<CGridLocalView> srcView = gridSrcElements->getView(CElementView::WORKFLOW) ; 
     24    shared_ptr<CGridLocalView> dstView = gridDstElements->getView(CElementView::WORKFLOW) ; 
    2525    MPI_Comm comm = CContext::getCurrent()->getIntraComm() ; 
    2626    int commSize = CContext::getCurrent()->getIntraCommSize() ; 
     
    2929    auto& elements =  gridSrcElements->getElements() ; 
    3030    int nElements = elements.size() ; 
    31     vector<CLocalElement*> remoteElements(nElements) ; 
    32     vector<CLocalView*> remoteViews(nElements) ; 
     31    vector<shared_ptr<CLocalElement>> remoteElements(nElements) ; 
     32    vector<shared_ptr<CLocalView>> remoteViews(nElements) ; 
    3333    for(int i=0;i<nElements;i++) 
    3434    { 
     
    3838        CArray<size_t,1> globalIndexView ; 
    3939        srcView->getView(i)->getGlobalIndexView(globalIndexView) ; 
    40         remoteElements[i] = new CLocalElement(commRank, srcView->getView(i)->getGlobalSize(),globalIndexView) ; 
     40        remoteElements[i] = make_shared<CLocalElement>(commRank, srcView->getView(i)->getGlobalSize(),globalIndexView) ; 
    4141        remoteElements[i]->addFullView() ; 
    4242        if (i>pos_) dimBefore_ *= srcView->getView(i)->getSize() ; 
     
    4747    } 
    4848 
    49     gridTransformConnector_ = new CGridTransformConnector(srcView->getViews(), remoteViews, comm ) ; 
     49    gridTransformConnector_ = make_shared<CGridTransformConnector>(srcView->getViews(), remoteViews, comm ) ; 
    5050  
    5151  } 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.hpp

    r2011 r2267  
    3131     
    3232  protected: 
    33     CGridTransformConnector* gridTransformConnector_=nullptr ; 
     33    shared_ptr<CGridTransformConnector> gridTransformConnector_=nullptr ; 
    3434    CGrid* gridSrc_ = nullptr ; 
    3535    CGrid* gridDst_ = nullptr ; 
Note: See TracChangeset for help on using the changeset viewer.