Ignore:
Timestamp:
05/29/19 13:58:48 (5 years ago)
Author:
yushan
Message:

MARK: branch merged with trunk @1663. Generate one static graph for each output file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_trunk_omp/src/workflow_graph.cpp

    r1669 r1670  
    44{ 
    55 
    6   std::unordered_map <StdString, vector <int > > *CWorkflowGraph::mapFieldToFilters_ptr = 0; 
     6  std::unordered_map < StdString, std::unordered_map <StdString, vector <int> >    > *CWorkflowGraph::mapFieldToFilters_ptr = 0; 
    77  #pragma omp threadprivate(CWorkflowGraph::mapFieldToFilters_ptr) 
    88 
    9   std::unordered_map <int, StdString> *CWorkflowGraph::mapFilters_ptr = 0; 
     9  std::unordered_map < StdString, std::unordered_map <int, StdString>  > *CWorkflowGraph::mapFilters_ptr = 0; 
    1010  #pragma omp threadprivate(CWorkflowGraph::mapFilters_ptr) 
    1111 
    12   std::unordered_map <int,vector<Time> > *CWorkflowGraph::mapFilterTimestamps_ptr = 0; 
     12  std::unordered_map < StdString, std::unordered_map <int, vector<Time> > > *CWorkflowGraph::mapFilterTimestamps_ptr = 0; 
    1313  #pragma omp threadprivate(CWorkflowGraph::mapFilterTimestamps_ptr) 
    1414 
    15   set<Time>  *CWorkflowGraph::timestamps_ptr = 0; 
     15  std::unordered_map< StdString, set<Time> >  *CWorkflowGraph::timestamps_ptr = 0; 
    1616  #pragma omp threadprivate(CWorkflowGraph::timestamps_ptr) 
    1717 
     
    1919  vector <StdString> CWorkflowGraph::fields; 
    2020  vector <pair<int, int> > CWorkflowGraph::fieldsToFilters; 
     21 
     22  StdString CWorkflowGraph::my_filename = "my_filename"; 
     23  #pragma omp threadprivate(CWorkflowGraph::my_filename) 
     24 
     25  std::map< StdString, int> *InvalidableObject::count_ptr=0; 
     26  #pragma omp threadprivate(InvalidableObject::count_ptr) 
    2127 
    2228  CWorkflowGraph::CWorkflowGraph() 
     
    2632   * Reorganize information collected by XIOS for visualization. 
    2733   */ 
     34  /* 
     35 
    2836  void CWorkflowGraph::buildStaticWorkflow() 
    2937  TRY 
     
    5058  } 
    5159  CATCH 
     60*/ 
     61 
     62  void CWorkflowGraph::buildStaticWorkflow_forfile(StdString filename) 
     63  TRY 
     64  { 
     65    // Create a list of filters (graph nodes) 
     66    //if(mapFilters_ptr==0) mapFilters_ptr = new std::unordered_map <int, StdString>; 
     67    //if(mapFieldToFilters_ptr==0) mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int > >; 
     68    size_t filterIdx = 0; 
     69    filters.resize((*mapFilters_ptr)[filename].size()); 
     70    fieldsToFilters.clear(); 
     71    fields.clear(); 
     72 
     73 
     74    for (std::unordered_map <int, StdString>::iterator it=(*mapFilters_ptr)[filename].begin(); it != (*mapFilters_ptr)[filename].end(); it++) 
     75    { 
     76      filters[it->first]=it->second; 
     77    } 
     78 
     79    // Create a list of fields and their filter connectivity (graph edges and edge-to-node connectivity) 
     80    for (std::unordered_map <StdString, vector <int > >::iterator it=(*mapFieldToFilters_ptr)[filename].begin(); it != (*mapFieldToFilters_ptr)[filename].end(); it++) 
     81    { 
     82      for (size_t i = 0; i < (it->second.size() - 1); i+=2) 
     83      { 
     84        fieldsToFilters.push_back(make_pair(it->second[i],it->second[i+1])); 
     85        fields.push_back(it->first); 
     86      } 
     87    } 
     88  } 
     89  CATCH 
    5290 
    5391 
     
    5896    for (auto it=mapFilters_ptr->begin(); it != mapFilters_ptr->end(); it++) 
    5997    { 
    60       std::cout<<"mapFilters_ptr["<<it->first<<"]="<<it->second<<std::endl; 
     98      for (auto it2=mapFilters_ptr->at(it->first).begin(); it2 != mapFilters_ptr->at(it->first).end(); it2++) 
     99        std::cout<<"mapFilters_ptr["<<it->first<<"]="<<it2->first<<"   "<<it2->second<<std::endl; 
    61100    } 
    62101    else std::cout<<"mapFilters_ptr empty"<<std::endl; 
     
    65104    for (auto it=mapFieldToFilters_ptr->begin(); it != mapFieldToFilters_ptr->end(); it++) 
    66105    { 
    67       for (size_t i = 0; i < it->second.size(); i++) 
     106      for (auto it2=mapFieldToFilters_ptr->at(it->first).begin(); it2 != mapFieldToFilters_ptr->at(it->first).end(); it2++) 
    68107      { 
    69         std::cout<<"mapFieldToFilters_ptr["<<it->first<<"]["<<i<<"] = "<<it->second[i]<<std::endl; 
     108        for (size_t i = 0; i < it2->second.size(); i++) 
     109          std::cout<<"mapFieldToFilters_ptr["<<it->first<<"]["<<it2->first<<"]["<<i<<"] = "<<it2->second[i]<<std::endl; 
    70110      } 
    71111    } 
    72112    else std::cout<<"mapFieldToFilters_ptr empty"<<mapFieldToFilters_ptr<<std::endl; 
    73  
     113/* 
    74114    if(mapFilterTimestamps_ptr!=0 && !mapFilterTimestamps_ptr->empty()) 
    75115    for (auto it=mapFilterTimestamps_ptr->begin(); it != mapFilterTimestamps_ptr->end(); it++) 
     
    88128    } 
    89129    else std::cout<<"timestamps_ptr empty"<<std::endl; 
    90  
     130*/ 
    91131  } 
    92132  CATCH 
    93133 
    94134} 
     135 
Note: See TracChangeset for help on using the changeset viewer.