Ignore:
Timestamp:
11/19/18 15:52:54 (6 years ago)
Author:
yushan
Message:

branch_openmp merged with trunk r1597

Location:
XIOS/dev/dev_trunk_omp/src/transformation/Functions
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_trunk_omp/src/transformation/Functions/reduction.cpp

    r979 r1601  
    99 
    1010CReductionAlgorithm::CallBackMap* CReductionAlgorithm::reductionCreationCallBacks_ = 0; 
    11 std::map<StdString,EReductionType> CReductionAlgorithm::ReductionOperations = std::map<StdString,EReductionType>(); 
     11std::map<StdString,EReductionType> *CReductionAlgorithm::ReductionOperations_ptr = 0; 
     12 
    1213bool CReductionAlgorithm::initReductionOperation(std::map<StdString,EReductionType>& m) 
    1314{ 
     
    2930} 
    3031 
    31 bool CReductionAlgorithm::_dummyInit = CReductionAlgorithm::initReductionOperation(CReductionAlgorithm::ReductionOperations); 
     32bool CReductionAlgorithm::initReductionOperation() 
     33{ 
     34  CReductionAlgorithm::ReductionOperations_ptr = new std::map<StdString,EReductionType>(); 
     35  // So so stupid way to intialize operation but it works ... 
     36  (*CReductionAlgorithm::ReductionOperations_ptr)["sum"] = TRANS_REDUCE_SUM; 
     37  CSumReductionAlgorithm::registerTrans(); 
     38 
     39  (*CReductionAlgorithm::ReductionOperations_ptr)["min"] = TRANS_REDUCE_MIN; 
     40  CMinReductionAlgorithm::registerTrans(); 
     41 
     42  (*CReductionAlgorithm::ReductionOperations_ptr)["max"] = TRANS_REDUCE_MAX; 
     43  CMaxReductionAlgorithm::registerTrans(); 
     44 
     45  (*CReductionAlgorithm::ReductionOperations_ptr)["extract"] = TRANS_REDUCE_EXTRACT; 
     46  CExtractReductionAlgorithm::registerTrans(); 
     47 
     48  (*CReductionAlgorithm::ReductionOperations_ptr)["average"] = TRANS_REDUCE_AVERAGE; 
     49  CAverageReductionAlgorithm::registerTrans(); 
     50} 
     51 
    3252 
    3353CReductionAlgorithm* CReductionAlgorithm::createOperation(EReductionType reduceType) 
  • XIOS/dev/dev_trunk_omp/src/transformation/Functions/reduction.hpp

    r1260 r1601  
    2323{ 
    2424public: 
    25   static std::map<StdString,EReductionType> ReductionOperations; 
    26  
     25  static std::map<StdString,EReductionType> *ReductionOperations_ptr; 
     26  #pragma omp threadprivate(ReductionOperations_ptr) 
    2727public: 
    2828  CReductionAlgorithm() {} 
     
    6161  typedef std::map<EReductionType, CreateOperationCallBack> CallBackMap; 
    6262  static CallBackMap* reductionCreationCallBacks_; 
     63  #pragma omp threadprivate(reductionCreationCallBacks_) 
    6364 
    6465  static bool registerOperation(EReductionType reduceType, CreateOperationCallBack createFn); 
     
    6768protected: 
    6869  static bool initReductionOperation(std::map<StdString,EReductionType>& m); 
     70  static bool initReductionOperation(); 
    6971  static bool _dummyInit; 
     72  #pragma omp threadprivate(_dummyInit) 
    7073}; 
    7174 
Note: See TracChangeset for help on using the changeset viewer.