Changeset 1601 for XIOS/dev/dev_trunk_omp/src/transformation/Functions
- Timestamp:
- 11/19/18 15:52:54 (6 years ago)
- 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 9 9 10 10 CReductionAlgorithm::CallBackMap* CReductionAlgorithm::reductionCreationCallBacks_ = 0; 11 std::map<StdString,EReductionType> CReductionAlgorithm::ReductionOperations = std::map<StdString,EReductionType>(); 11 std::map<StdString,EReductionType> *CReductionAlgorithm::ReductionOperations_ptr = 0; 12 12 13 bool CReductionAlgorithm::initReductionOperation(std::map<StdString,EReductionType>& m) 13 14 { … … 29 30 } 30 31 31 bool CReductionAlgorithm::_dummyInit = CReductionAlgorithm::initReductionOperation(CReductionAlgorithm::ReductionOperations); 32 bool 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 32 52 33 53 CReductionAlgorithm* CReductionAlgorithm::createOperation(EReductionType reduceType) -
XIOS/dev/dev_trunk_omp/src/transformation/Functions/reduction.hpp
r1260 r1601 23 23 { 24 24 public: 25 static std::map<StdString,EReductionType> ReductionOperations;26 25 static std::map<StdString,EReductionType> *ReductionOperations_ptr; 26 #pragma omp threadprivate(ReductionOperations_ptr) 27 27 public: 28 28 CReductionAlgorithm() {} … … 61 61 typedef std::map<EReductionType, CreateOperationCallBack> CallBackMap; 62 62 static CallBackMap* reductionCreationCallBacks_; 63 #pragma omp threadprivate(reductionCreationCallBacks_) 63 64 64 65 static bool registerOperation(EReductionType reduceType, CreateOperationCallBack createFn); … … 67 68 protected: 68 69 static bool initReductionOperation(std::map<StdString,EReductionType>& m); 70 static bool initReductionOperation(); 69 71 static bool _dummyInit; 72 #pragma omp threadprivate(_dummyInit) 70 73 }; 71 74
Note: See TracChangeset
for help on using the changeset viewer.