Changeset 1334 for XIOS/dev/branch_openmp
- Timestamp:
- 11/20/17 09:49:26 (6 years ago)
- Location:
- XIOS/dev/branch_openmp
- Files:
-
- 37 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/bld.cfg
r1331 r1334 39 39 #bld::target test_unstruct_complete.exe 40 40 #bld::target test_omp.exe 41 #bld::target test_complete_omp.exe41 bld::target test_complete_omp.exe 42 42 #bld::target test_remap.exe 43 43 bld::target test_remap_ref.exe -
XIOS/dev/branch_openmp/extern/remap/src/gridRemap.cpp
r1328 r1334 11 11 12 12 CRemapGrid srcGrid; 13 13 14 CRemapGrid tgtGrid; 14 15 -
XIOS/dev/branch_openmp/extern/remap/src/timerRemap.hpp
r1328 r1334 28 28 //static map<string,CTimer*> allTimer; 29 29 static map<string,CTimer*> *allTimer_ptr; 30 #pragma omp threadprivate(allTimer_ptr) 30 31 static double getTime(void); 31 32 static CTimer& get(string name); -
XIOS/dev/branch_openmp/inputs/REMAP/iodef.xml
r1328 r1334 39 39 <field field_ref="tmp_field_0" name="field_regular_0" enabled=".TRUE."/> 40 40 <field field_ref="dst_field_regular" name="field_regular" enabled=".TRUE."/> 41 <field field_ref="dst_field_regular_pole_0" name="field_regular_pole_0" enabled=". FALSE." />42 <field field_ref="dst_field_regular_pole_1" name="field_regular_pole_1" enabled=". FALSE." />41 <field field_ref="dst_field_regular_pole_0" name="field_regular_pole_0" enabled=".TRUE." /> 42 <field field_ref="dst_field_regular_pole_1" name="field_regular_pole_1" enabled=".TRUE." /> 43 43 </file> 44 44 <file id="output_dst_curvilinear" name="output_dst_curvilinear" enabled=".TRUE." > -
XIOS/dev/branch_openmp/src/array_new.hpp
r1328 r1334 554 554 TinyVector<int,N_rank> vect; 555 555 size_t ne; 556 556 557 557 ret = buffer.get(numDim); 558 558 ret &= buffer.get(vect.data(), N_rank); -
XIOS/dev/branch_openmp/src/calendar.cpp
r1328 r1334 117 117 const CDate& CCalendar::update(int step) 118 118 { 119 info(20) << "update step : " << step << " timestep " << this->timestep << std::endl;119 //info(20) << "update step : " << step << " timestep " << this->timestep << std::endl; 120 120 return (this->currentDate = this->getInitDate() + step * this->timestep); 121 121 } -
XIOS/dev/branch_openmp/src/client.cpp
r1328 r1334 186 186 187 187 MPI_Intercomm_create(contextComm,0,CXios::globalComm,serverLeader,10+globalRank,&contextInterComm) ; 188 info(10)<<"Register new Context : "<<id<<endl ; 188 #pragma omp critical (std_output) 189 { 190 //info(10)<<"Register new Context : "<<id<<endl ; 191 } 189 192 190 193 MPI_Comm inter ; -
XIOS/dev/branch_openmp/src/data_output.hpp
r1328 r1334 59 59 virtual void writeTimeDimension_(void) = 0; 60 60 virtual void writeTimeAxis_ (CField* field, 61 const shared_ptr<CCalendar> cal) = 0;61 const boost::shared_ptr<CCalendar> cal) = 0; 62 62 63 63 /// Propriétés protégées /// -
XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp
r1331 r1334 105 105 //static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > engines; 106 106 static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > *engines_ptr; 107 #pragma om threadprivate(engines_ptr)107 #pragma omp threadprivate(engines_ptr) 108 108 }; // class CSpatialTransformFilterEngine 109 109 } // namespace xios -
XIOS/dev/branch_openmp/src/group_factory.cpp
r1328 r1334 4 4 { 5 5 /// ////////////////////// Définitions ////////////////////// /// 6 StdString CGroupFactory::CurrContext("");6 StdString *CGroupFactory::CurrContext_ptr = 0; 7 7 8 8 void CGroupFactory::SetCurrentContextId(const StdString & context) 9 { 10 CGroupFactory::CurrContext = context; 9 { 10 if(CGroupFactory::CurrContext_ptr == 0 ) CGroupFactory::CurrContext_ptr = new StdString; 11 CGroupFactory::CurrContext_ptr->assign(context); 11 12 } 12 13 13 14 StdString & CGroupFactory::GetCurrentContextId(void) 14 15 { 15 return ( CGroupFactory::CurrContext);16 return (*CGroupFactory::CurrContext_ptr); 16 17 } 17 18 -
XIOS/dev/branch_openmp/src/group_factory.hpp
r1331 r1334 69 69 70 70 /// Propriétés statiques /// 71 static StdString CurrContext;72 // #pragma omp threadprivate(CurrContext)71 static StdString *CurrContext_ptr; 72 #pragma omp threadprivate(CurrContext_ptr) 73 73 74 74 }; // class CGroupFactory -
XIOS/dev/branch_openmp/src/group_factory_decl.cpp
r1328 r1334 5 5 { 6 6 # define macro(U) \ 7 template void CGroupFactory::AddGroup<U>( shared_ptr<U> pgroup,shared_ptr<U> cgroup); \8 template void CGroupFactory::AddChild<U>( shared_ptr<U> group,shared_ptr<U::RelChild> child); \9 template shared_ptr<U> CGroupFactory::GetGroup<U>(shared_ptr<U> group, const StdString & id); \10 template shared_ptr<U::RelChild> CGroupFactory::GetChild<U>(shared_ptr<U> group, const StdString & id); \11 template int CGroupFactory::GetGroupNum<U>( shared_ptr<U> group); \12 template int CGroupFactory::GetGroupIdNum<U>( shared_ptr<U> group); \13 template int CGroupFactory::GetChildNum<U>( shared_ptr<U> group); \7 template void CGroupFactory::AddGroup<U>(boost::shared_ptr<U> pgroup,boost::shared_ptr<U> cgroup); \ 8 template void CGroupFactory::AddChild<U>(boost::shared_ptr<U> group, boost::shared_ptr<U::RelChild> child); \ 9 template boost::shared_ptr<U> CGroupFactory::GetGroup<U>(boost::shared_ptr<U> group, const StdString & id); \ 10 template boost::shared_ptr<U::RelChild> CGroupFactory::GetChild<U>(boost::shared_ptr<U> group, const StdString & id); \ 11 template int CGroupFactory::GetGroupNum<U>(boost::shared_ptr<U> group); \ 12 template int CGroupFactory::GetGroupIdNum<U>(boost::shared_ptr<U> group); \ 13 template int CGroupFactory::GetChildNum<U>(boost::shared_ptr<U> group); \ 14 14 template int CGroupFactory::GetChildIdNum<U>(boost::shared_ptr<U> group); \ 15 template bool CGroupFactory::HasGroup<U>( shared_ptr<U> group, const StdString & id); \15 template bool CGroupFactory::HasGroup<U>(boost::shared_ptr<U> group, const StdString & id); \ 16 16 template bool CGroupFactory::HasChild<U>(boost::shared_ptr<U> group, const StdString & id); \ 17 template shared_ptr<U> CGroupFactory::CreateGroup<U>(shared_ptr<U> group, const StdString & id ); \18 template shared_ptr<U::RelChild> CGroupFactory::CreateChild<U>(shared_ptr<U> group, const StdString & id);17 template boost::shared_ptr<U> CGroupFactory::CreateGroup<U>(boost::shared_ptr<U> group, const StdString & id ); \ 18 template boost::shared_ptr<U::RelChild> CGroupFactory::CreateChild<U>(boost::shared_ptr<U> group, const StdString & id); 19 19 20 20 macro(CFieldGroup) -
XIOS/dev/branch_openmp/src/interface/c/icdata.cpp
r1328 r1334 56 56 ep_lib::MPI_Comm return_comm; 57 57 58 ep_lib::fc_comm_map.clear();58 //ep_lib::fc_comm_map.clear(); 59 59 60 60 if (!cstr2string(client_id, len_client_id, str)) return; -
XIOS/dev/branch_openmp/src/io/netCdfInterface.cpp
r1328 r1334 102 102 int CNetCdfInterface::openPar(const StdString& fileName, int oMode, MPI_Comm comm, MPI_Info info, int& ncId) 103 103 { 104 //int status = xios::nc_open_par(fileName.c_str(), oMode, comm, info, &ncId); 105 int status = xios::nc_open_par(fileName.c_str(), oMode, comm, MPI_INFO_NULL.mpi_info, &ncId); 104 int status; 105 #pragma omp critical (_netcdf) 106 status = xios::nc_open_par(fileName.c_str(), oMode, comm, MPI_INFO_NULL.mpi_info, &ncId); 107 106 108 if (NC_NOERR != status) 107 109 { -
XIOS/dev/branch_openmp/src/io/netCdfInterface_impl.hpp
r1328 r1334 85 85 int CNetCdfInterface::getVaraType(int ncid, int varId, const StdSize* start, const StdSize* count, T* data) 86 86 { 87 int status = ncGetVaraType(ncid, varId, start, count, data); 87 int status; 88 #pragma omp critical (_netcdf) 89 status = ncGetVaraType(ncid, varId, start, count, data); 88 90 if (NC_NOERR != status) 89 91 { -
XIOS/dev/branch_openmp/src/node/axis.cpp
r1328 r1334 44 44 { /* Ne rien faire de plus */ } 45 45 46 //std::map<StdString, ETranformationType> CAxis::transformationMapList_ = std::map<StdString, ETranformationType>();47 46 std::map<StdString, ETranformationType> *CAxis::transformationMapList_ptr = 0; 48 //bool CAxis::dummyTransformationMapList_ = CAxis::initializeTransformationMap(CAxis::transformationMapList_); 49 47 50 48 bool CAxis::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 51 49 { … … 499 497 globalAxisZoom[nZoomCount] = globalZoomIndex; 500 498 ++nZoomCount; 501 } 499 } 502 500 } 503 501 … … 977 975 msg << ni << begin << end; 978 976 msg << global_zoom_begin.getValue() << global_zoom_n.getValue(); 979 msg << isCompressible_; 977 msg << isCompressible_; 980 978 msg << zoomIndex; 981 979 if (zoomIndex) … … 1156 1154 1157 1155 nodeElementName = node.getElementName(); 1158 //std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it; 1156 1159 1157 if(transformationMapList_ptr == 0) initializeTransformationMap(); 1160 std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_ptr->end(), it; 1161 //it = transformationMapList_.find(nodeElementName); 1162 it = transformationMapList_ptr->find(nodeElementName); 1158 std::map<StdString, ETranformationType>::const_iterator ite = (*CAxis::transformationMapList_ptr).end(), it; 1159 it = (*CAxis::transformationMapList_ptr).find(nodeElementName); 1163 1160 if (ite != it) 1164 1161 { -
XIOS/dev/branch_openmp/src/node/context.cpp
r1331 r1334 23 23 namespace xios { 24 24 25 shared_ptr<CContextGroup> * CContext::root_ptr = 0;25 boost::shared_ptr<CContextGroup> * CContext::root_ptr = 0; 26 26 27 27 /// ////////////////////// Dfinitions ////////////////////// /// … … 59 59 CContextGroup* CContext::getRoot(void) 60 60 { 61 //std::cout<<omp_get_thread_num()<<" get root name = "<<xml::CXMLNode::GetRootName()<<std::endl; 62 if (root_ptr==0) root_ptr = new shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName())); 61 if(root_ptr == 0) root_ptr = new boost::shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName())); 63 62 return root_ptr->get(); 64 63 } -
XIOS/dev/branch_openmp/src/node/context.hpp
r1331 r1334 206 206 207 207 // Context root 208 static shared_ptr<CContextGroup> *root_ptr;208 static boost::shared_ptr<CContextGroup> *root_ptr; 209 209 #pragma omp threadprivate(root_ptr) 210 210 -
XIOS/dev/branch_openmp/src/node/domain.cpp
r1328 r1334 65 65 } 66 66 67 //std::map<StdString, ETranformationType> CDomain::transformationMapList_ = std::map<StdString, ETranformationType>(); 67 68 68 std::map<StdString, ETranformationType> *CDomain::transformationMapList_ptr = 0; 69 //bool CDomain::_dummyTransformationMapList = CDomain::initializeTransformationMap(CDomain::transformationMapList_);70 69 71 70 bool CDomain::initializeTransformationMap(std::map<StdString, ETranformationType>& m) … … 2363 2362 nodeElementName = node.getElementName(); 2364 2363 if(transformationMapList_ptr == 0) initializeTransformationMap(); 2365 //std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it; 2364 2366 2365 std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_ptr->end(), it; 2367 //it = transformationMapList_.find(nodeElementName); 2366 2368 2367 it = transformationMapList_ptr->find(nodeElementName); 2369 2368 if (ite != it) -
XIOS/dev/branch_openmp/src/node/file.cpp
r1328 r1334 483 483 if (isOpen) data_out->closeFile(); 484 484 485 data_out = shared_ptr<CDataOutput>(new CNc4DataOutput(this, oss.str(), append, useClassicFormat, useCFConvention,485 data_out = boost::shared_ptr<CDataOutput>(new CNc4DataOutput(this, oss.str(), append, useClassicFormat, useCFConvention, 486 486 fileComm, multifile, isCollective, time_counter_name)); 487 487 isOpen = true; … … 598 598 599 599 if (isOpen) data_out->closeFile(); 600 if (time_counter_name.isEmpty()) data_in = shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), fileComm, multifile, isCollective));601 else data_in = shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), fileComm, multifile, isCollective, time_counter_name));600 if (time_counter_name.isEmpty()) data_in = boost::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), fileComm, multifile, isCollective)); 601 else data_in = boost::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), fileComm, multifile, isCollective, time_counter_name)); 602 602 isOpen = true; 603 603 } … … 646 646 647 647 // Read necessary value from file 648 this->data_in->readFieldAttributesValues(enabledFields[idx]); 649 648 #pragma omp critical (_func) 649 { 650 this->data_in->readFieldAttributesValues(enabledFields[idx]); 651 } 650 652 // Fill attributes for base reference 651 653 enabledFields[idx]->solveGridDomainAxisBaseRef(); -
XIOS/dev/branch_openmp/src/node/grid.cpp
r1328 r1334 1114 1114 outLocalIndexToServer(idx) = itIndex->second; 1115 1115 } 1116 1116 1117 1117 const std::list<int>& ranks = client->getRanksServerLeader(); 1118 1118 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) … … 1750 1750 pDom->solveRefInheritance(apply); 1751 1751 pDom->solveInheritanceTransformation(); 1752 //cout<<"pDom check"<<endl;1753 1752 } 1754 1753 } -
XIOS/dev/branch_openmp/src/node/transformation.hpp
r1331 r1334 35 35 typedef std::map<ETranformationType, CreateTransformationCallBack> CallBackMap; 36 36 static CallBackMap* transformationCreationCallBacks_; 37 #pragma omp threadprivate(transformationCreationCallBacks_)37 //#pragma omp threadprivate(transformationCreationCallBacks_) 38 38 39 39 static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn); … … 66 66 if (0 == transformationCreationCallBacks_) 67 67 transformationCreationCallBacks_ = new CallBackMap(); 68 69 68 return (*transformationCreationCallBacks_).insert(make_pair(transType, createFn)).second; 70 69 } -
XIOS/dev/branch_openmp/src/object_factory.cpp
r1328 r1334 5 5 /// ////////////////////// Définitions ////////////////////// /// 6 6 7 StdString CObjectFactory::CurrContext("");7 StdString *CObjectFactory::CurrContext_ptr = 0; 8 8 9 9 void CObjectFactory::SetCurrentContextId(const StdString & context) 10 { CObjectFactory::CurrContext = context; } 10 { 11 if(CObjectFactory::CurrContext_ptr == 0 ) CObjectFactory::CurrContext_ptr = new StdString; 12 CObjectFactory::CurrContext_ptr->assign(context); 13 } 11 14 12 15 StdString & CObjectFactory::GetCurrentContextId(void) 13 { return (CObjectFactory::CurrContext); } 16 { 17 return (*CObjectFactory::CurrContext_ptr); 18 } 14 19 15 20 } // namespace xios -
XIOS/dev/branch_openmp/src/object_factory.hpp
r1331 r1334 59 59 60 60 /// Propriétés statiques /// 61 static StdString CurrContext;62 // #pragma omp threadprivate(CurrContext)61 static StdString *CurrContext_ptr; 62 #pragma omp threadprivate(CurrContext_ptr) 63 63 64 64 }; // class CObjectFactory -
XIOS/dev/branch_openmp/src/object_factory_decl.cpp
r1328 r1334 5 5 { 6 6 #define macro(U) \ 7 template shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& id); \8 template shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& context,const StdString& id); \9 template shared_ptr<U> CObjectFactory::GetObject<U>(const U* const object); \7 template boost::shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& id); \ 8 template boost::shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& context,const StdString& id); \ 9 template boost::shared_ptr<U> CObjectFactory::GetObject<U>(const U* const object); \ 10 10 template int CObjectFactory::GetObjectNum<U>(void); \ 11 11 template int CObjectFactory::GetObjectIdNum<U>(void); \ 12 template const std::vector< shared_ptr<U> >& CObjectFactory::GetObjectVector<U>(const StdString& context ); \12 template const std::vector<boost::shared_ptr<U> >& CObjectFactory::GetObjectVector<U>(const StdString& context ); \ 13 13 template bool CObjectFactory::HasObject<U>(const StdString& id); \ 14 14 template bool CObjectFactory::HasObject<U>(const StdString& context,const StdString& id); \ -
XIOS/dev/branch_openmp/src/object_factory_impl.hpp
r1328 r1334 10 10 int CObjectFactory::GetObjectNum(void) 11 11 { 12 if (CurrContext .size() == 0)12 if (CurrContext_ptr->size() == 0) 13 13 ERROR("CObjectFactory::GetObjectNum(void)", 14 14 << "please define current context id !"); 15 15 //return (U::AllVectObj[CObjectFactory::CurrContext].size()); 16 16 if(U::AllVectObj_ptr == NULL) return 0; 17 return (*U::AllVectObj_ptr)[ CObjectFactory::CurrContext].size();17 return (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr].size(); 18 18 } 19 19 … … 21 21 int CObjectFactory::GetObjectIdNum(void) 22 22 { 23 if (CurrContext .size() == 0)23 if (CurrContext_ptr->size() == 0) 24 24 ERROR("CObjectFactory::GetObjectIdNum(void)", 25 25 << "please define current context id !"); 26 26 //return (U::AllMapObj[CObjectFactory::CurrContext].size()); 27 27 if(U::AllMapObj_ptr == NULL) return 0; 28 return (*U::AllMapObj_ptr)[ CObjectFactory::CurrContext].size();28 return (*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr].size(); 29 29 } 30 30 … … 32 32 bool CObjectFactory::HasObject(const StdString & id) 33 33 { 34 if (CurrContext .size() == 0)34 if (CurrContext_ptr->size() == 0) 35 35 ERROR("CObjectFactory::HasObject(const StdString & id)", 36 36 << "[ id = " << id << " ] please define current context id !"); … … 38 38 // U::AllMapObj[CObjectFactory::CurrContext].end()); 39 39 if(U::AllMapObj_ptr == NULL) return false; 40 return ((*U::AllMapObj_ptr)[ CObjectFactory::CurrContext].find(id) !=41 (*U::AllMapObj_ptr)[ CObjectFactory::CurrContext].end());40 return ((*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr].find(id) != 41 (*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr].end()); 42 42 43 43 } … … 59 59 { 60 60 if(U::AllVectObj_ptr == NULL) return (boost::shared_ptr<U>()); 61 if (CurrContext .size() == 0)61 if (CurrContext_ptr->size() == 0) 62 62 ERROR("CObjectFactory::GetObject(const U * const object)", 63 63 << "please define current context id !"); 64 64 //std::vector<boost::shared_ptr<U> > & vect = U::AllVectObj[CObjectFactory::CurrContext]; 65 std::vector<boost::shared_ptr<U> > & vect = (*U::AllVectObj_ptr)[ CObjectFactory::CurrContext];65 std::vector<boost::shared_ptr<U> > & vect = (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr]; 66 66 67 67 typename std::vector<boost::shared_ptr<U> >::const_iterator … … 85 85 { 86 86 if(U::AllMapObj_ptr == NULL) return (boost::shared_ptr<U>()); 87 if (CurrContext .size() == 0)87 if (CurrContext_ptr->size() == 0) 88 88 ERROR("CObjectFactory::GetObject(const StdString & id)", 89 89 << "[ id = " << id << " ] please define current context id !"); … … 100 100 101 101 //return (U::AllMapObj[CObjectFactory::CurrContext][id]); 102 return (*U::AllMapObj_ptr)[ CObjectFactory::CurrContext][id];102 return (*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr][id]; 103 103 } 104 104 … … 129 129 if(U::AllMapObj_ptr == NULL) U::AllMapObj_ptr = new xios_map<StdString, xios_map<StdString, boost::shared_ptr<U> > >; 130 130 131 if (CurrContext .empty())131 if (CurrContext_ptr->empty()) 132 132 ERROR("CObjectFactory::CreateObject(const StdString& id)", 133 133 << "[ id = " << id << " ] please define current context id !"); … … 144 144 //U::AllMapObj[CObjectFactory::CurrContext].insert(std::make_pair(value->getId(), value)); 145 145 146 (*U::AllVectObj_ptr)[ CObjectFactory::CurrContext].insert((*U::AllVectObj_ptr)[CObjectFactory::CurrContext].end(), value);147 (*U::AllMapObj_ptr) [ CObjectFactory::CurrContext].insert(std::make_pair(value->getId(), value));146 (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr].insert((*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr].end(), value); 147 (*U::AllMapObj_ptr) [*CObjectFactory::CurrContext_ptr].insert(std::make_pair(value->getId(), value)); 148 148 //cout<<"CObjectFactory::CreateObject(const StdString& id) [ id = " << id << " ]" <<endl; 149 149 … … 172 172 StdOStringStream oss; 173 173 if(U::GenId_ptr == NULL) U::GenId_ptr = new xios_map< StdString, long int >; 174 oss << GetUIdBase<U>() << (*U::GenId_ptr)[ CObjectFactory::CurrContext]++;174 oss << GetUIdBase<U>() << (*U::GenId_ptr)[*CObjectFactory::CurrContext_ptr]++; 175 175 return oss.str(); 176 176 } -
XIOS/dev/branch_openmp/src/object_template.hpp
r1331 r1334 77 77 static T* get(const string& contextId, const string& id) ; 78 78 T* get(void) ; 79 shared_ptr<T> getShared(void) ; 80 static shared_ptr<T> getShared(const T* ptr) ; 79 boost::shared_ptr<T> getShared(void) ; 80 static boost::shared_ptr<T> getShared(const T* ptr) ; 81 81 82 82 83 static T* create(const string& id=string("")) ; -
XIOS/dev/branch_openmp/src/object_template_impl.hpp
r1328 r1334 325 325 326 326 template <typename T> 327 shared_ptr<T> CObjectTemplate<T>::getShared(const T* ptr)327 boost::shared_ptr<T> CObjectTemplate<T>::getShared(const T* ptr) 328 328 { 329 329 return CObjectFactory::GetObject<T>(ptr); … … 331 331 332 332 template <typename T> 333 shared_ptr<T> CObjectTemplate<T>::getShared(void)333 boost::shared_ptr<T> CObjectTemplate<T>::getShared(void) 334 334 { 335 335 return CObjectFactory::GetObject<T>((T*)this); … … 339 339 const vector<T*> CObjectTemplate<T>::getAll() 340 340 { 341 const vector< shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>();341 const vector< boost::shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(); 342 342 vector<T*> vect; 343 343 344 typename vector< shared_ptr<T> >::const_iterator it;344 typename vector<boost::shared_ptr<T> >::const_iterator it; 345 345 for(it=shared_vect.begin();it!=shared_vect.end();++it) vect.push_back(it->get()); 346 346 return vect; … … 350 350 const vector<T*> CObjectTemplate<T>::getAll(const string & id) 351 351 { 352 const vector< shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(id);352 const vector< boost::shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(id); 353 353 vector<T*> vect; 354 354 355 typename vector< shared_ptr<T> >::const_iterator it;355 typename vector<boost::shared_ptr<T> >::const_iterator it; 356 356 for(it=shared_vect.begin();it!=shared_vect.end();++it) vect.push_back(it->get()); 357 357 return vect; -
XIOS/dev/branch_openmp/src/parse_expr/yacc_parser.cpp
r1328 r1334 80 80 } 81 81 82 IFilterExprNode* parsed; 83 std::string globalInputText; 84 size_t globalReadOffset = 0; 85 82 static IFilterExprNode* parsed; 83 static std::string globalInputText; 84 static std::string *globalInputText_ptr = 0; 85 static size_t globalReadOffset = 0; 86 #pragma omp threadprivate(parsed, globalInputText_ptr, globalReadOffset) 87 86 88 int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead) 87 89 { 90 if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 88 91 size_t numBytesToRead = maxBytesToRead; 89 size_t bytesRemaining = globalInputText.length()-globalReadOffset;92 size_t bytesRemaining = (*globalInputText_ptr).length()-globalReadOffset; 90 93 size_t i; 91 94 if (numBytesToRead > bytesRemaining) numBytesToRead = bytesRemaining; 92 for (i = 0; i < numBytesToRead; i++) buffer[i] = globalInputText.c_str()[globalReadOffset + i];95 for (i = 0; i < numBytesToRead; i++) buffer[i] = (*globalInputText_ptr).c_str()[globalReadOffset + i]; 93 96 *numBytesRead = numBytesToRead; 94 97 globalReadOffset += numBytesToRead; … … 2002 2005 IFilterExprNode* parseExpr(const string& strExpr) 2003 2006 { 2004 globalInputText = strExpr; 2005 globalReadOffset = 0; 2006 yyparse(); 2007 #pragma omp critical (_parser) 2008 { 2009 if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 2010 (*globalInputText_ptr).assign (strExpr); 2011 globalReadOffset = 0; 2012 yyparse(); 2013 } 2007 2014 return parsed; 2008 2015 } -
XIOS/dev/branch_openmp/src/parse_expr/yacc_parser.yacc
r1328 r1334 15 15 } 16 16 17 IFilterExprNode* parsed; 18 std::string globalInputText; 19 size_t globalReadOffset = 0; 17 static IFilterExprNode* parsed; 18 static std::string globalInputText; 19 static std::string *globalInputText_ptr = 0; 20 static size_t globalReadOffset = 0; 21 #pragma omp threadprivate(parsed, globalInputText_ptr, globalReadOffset) 20 22 21 23 int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead) 22 24 { 25 if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 23 26 size_t numBytesToRead = maxBytesToRead; 24 size_t bytesRemaining = globalInputText.length()-globalReadOffset;27 size_t bytesRemaining = (*globalInputText_ptr).length()-globalReadOffset; 25 28 size_t i; 26 29 if (numBytesToRead > bytesRemaining) numBytesToRead = bytesRemaining; 27 for (i = 0; i < numBytesToRead; i++) buffer[i] = globalInputText.c_str()[globalReadOffset + i];30 for (i = 0; i < numBytesToRead; i++) buffer[i] = (*globalInputText_ptr).c_str()[globalReadOffset + i]; 28 31 *numBytesRead = numBytesToRead; 29 32 globalReadOffset += numBytesToRead; … … 145 148 IFilterExprNode* parseExpr(const string& strExpr) 146 149 { 147 globalInputText = strExpr; 148 globalReadOffset = 0; 149 yyparse(); 150 #pragma omp critical (_parser) 151 { 152 if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 153 (*globalInputText_ptr).assign (strExpr); 154 globalReadOffset = 0; 155 yyparse(); 156 } 150 157 return parsed; 151 158 } -
XIOS/dev/branch_openmp/src/test/test_remap_omp.f90
r1331 r1334 53 53 if(rank < size-2) then 54 54 55 !$omp parallel default( private)55 !$omp parallel default(firstprivate) 56 56 57 57 !!! XIOS Initialization (get the local communicator) -
XIOS/dev/branch_openmp/src/transformation/axis_algorithm_zoom.cpp
r1328 r1334 44 44 zoomBegin_ = zoomAxis->begin.getValue(); 45 45 zoomSize_ = zoomAxis->n.getValue(); 46 zoomEnd_ = zoomBegin_ + zoomSize_ - 1; 46 zoomEnd_ = zoomBegin_ + zoomSize_ - 1; 47 47 48 48 if (zoomSize_ > axisSource->n_glo.getValue()) -
XIOS/dev/branch_openmp/src/transformation/domain_algorithm_interpolate.cpp
r1328 r1334 114 114 nVertexSrc = nVertexDest = constNVertex; 115 115 116 117 118 116 // First of all, try to retrieve the boundary values of domain source and domain destination 119 117 int localDomainSrcSize = domainSrc_->i_index.numElements(); … … 283 281 globalSrc[idx] = globalIndex; 284 282 } 285 286 283 287 284 for (int idx = 0; idx < nDstLocal; ++idx) -
XIOS/dev/branch_openmp/src/transformation/grid_transformation_factory_impl.hpp
r1331 r1334 57 57 typedef std::map<ETranformationType, CreateTransformationCallBack> CallBackMap; 58 58 static CallBackMap* transformationCreationCallBacks_; 59 #pragma omp threadprivate(transformationCreationCallBacks_) 59 60 static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn); 60 61 static bool unregisterTransformation(ETranformationType transType); -
XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_axis.cpp
r1328 r1334 13 13 #include "grid.hpp" 14 14 #include "grid_transformation_factory_impl.hpp" 15 #include "reduction.hpp"16 17 15 #include "reduction.hpp" 18 16 -
XIOS/dev/branch_openmp/src/type/type.hpp
r1328 r1334 94 94 const CType_ref& operator = (CType<T>& val) const ; 95 95 const CType_ref& operator = (const CType_ref& val) const; 96 operator T&() const; 96 operator T&() const; 97 97 98 98 inline virtual CBaseType* clone(void) const { return _clone(); } -
XIOS/dev/branch_openmp/src/xml_node.hpp
r1331 r1334 49 49 50 50 static StdString RootName; 51 #pragma omp threadprivate(RootName)51 //#pragma omp threadprivate(RootName) 52 52 53 53 }; //class CXMLParser
Note: See TracChangeset
for help on using the changeset viewer.