Ignore:
Timestamp:
06/06/17 15:12:34 (7 years ago)
Author:
yushan
Message:

test_remap OK with openmp

Location:
XIOS/dev/branch_yushan_merged/extern/remap/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan_merged/extern/remap/src/gridRemap.cpp

    r688 r1155  
    1111 
    1212CRemapGrid srcGrid; 
     13#pragma omp threadprivate(srcGrid) 
     14 
    1315CRemapGrid tgtGrid; 
     16#pragma omp threadprivate(tgtGrid) 
    1417 
    1518} 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/gridRemap.hpp

    r688 r1155  
    1414Coord readPole(std::istream&); 
    1515 
    16 extern CRemapGrid srcGrid; 
    17 extern CRemapGrid tgtGrid; 
     16 
    1817 
    1918} 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/intersect.cpp

    r1153 r1155  
    1616 
    1717using namespace std; 
     18 
     19extern CRemapGrid srcGrid; 
     20#pragma omp threadprivate(srcGrid) 
     21 
     22extern CRemapGrid tgtGrid; 
     23#pragma omp threadprivate(tgtGrid) 
    1824 
    1925/** returns index of edge of a that is shared with b, 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/intersection_ym.cpp

    r849 r1155  
    1616using namespace std; 
    1717using namespace ClipperLib ; 
     18 
     19extern CRemapGrid srcGrid; 
     20#pragma omp threadprivate(srcGrid) 
     21 
     22extern CRemapGrid tgtGrid; 
     23#pragma omp threadprivate(tgtGrid) 
    1824 
    1925double intersect_ym(Elt *a, Elt *b) 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/libmapper.cpp

    r694 r1155  
    1414#include "mapper.hpp" 
    1515#include "cputime.hpp" // cputime 
     16#include "gridRemap.hpp" 
    1617 
    1718using namespace sphereRemap ; 
     19 
     20extern CRemapGrid srcGrid; 
     21#pragma omp threadprivate(srcGrid) 
     22 
     23extern CRemapGrid tgtGrid; 
     24#pragma omp threadprivate(tgtGrid) 
     25 
    1826 
    1927/* mapper is a ponter to a global class instance whoes members are allocated in the first step (finding the sizes of the weight arrays) 
    2028   and deallocated during the second step (computing the weights) */ 
    2129Mapper *mapper; 
    22  
     30#pragma omp threadprivate(mapper) 
    2331 
    2432/** xxx_bounds_yyy is of length n_vert_per_cell_xxx*n_cell_xxx 
     
    148156        char **argv = NULL; 
    149157        MPI_Init(&argc, &argv);*/ 
    150         MPI_Init(NULL, NULL); 
     158        //MPI_Init(NULL, NULL); 
     159        int provided; 
     160        MPI_Init_thread(NULL, NULL, 3, &provided); 
     161        assert(provided >= 3); 
    151162} 
    152163 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/mapper.cpp

    r1153 r1155  
    1414 
    1515namespace sphereRemap { 
     16 
     17extern CRemapGrid srcGrid; 
     18#pragma omp threadprivate(srcGrid) 
     19 
     20extern CRemapGrid tgtGrid; 
     21#pragma omp threadprivate(tgtGrid) 
    1622 
    1723/* A subdivition of an array into N sub-arays 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/node.cpp

    r923 r1155  
    254254NodePtr insert(NodePtr thIs, NodePtr node) 
    255255{ 
    256         int la = thIs->level; // node to be inserted 
    257         int lb = node->level; // node where insertation 
    258         assert(la < lb); // node to be inserted must have lower level then parent 
    259         //if (thIs->parent) assert(find_in_tree1(thIs) == true); 
    260         NodePtr q = NULL; 
    261         NodePtr chd = NULL; 
    262         node->move(thIs); 
    263         if (la == lb - 1) 
    264         { 
     256  int la = thIs->level; // node to be inserted 
     257  int lb = node->level; // node where insertation 
     258  assert(la < lb); // node to be inserted must have lower level then parent 
     259  //if (thIs->parent) assert(find_in_tree1(thIs) == true); 
     260  NodePtr q = NULL; 
     261  NodePtr chd = NULL; 
     262  node->move(thIs); 
     263  if (la == lb - 1) 
     264  { 
    265265    node->child.push_back(thIs); 
    266                 thIs->parent = node; 
    267                 if (node->child.size() > MAX_NODE_SZ &&  node->tree->canSplit() ) // with us as additional child `node` is now too large :( 
    268                         return (node->reinserted || node->parent == NULL) ? split(node) : reinsert(node); 
    269         } 
    270         else // la < lb - 1 
    271         { 
    272                 chd = thIs->closest(node->child); 
    273                 q = insert(thIs, chd); 
    274         } 
    275         if ((node->updateCount + 1) % UPDATE_EVERY == 0) 
    276                 node->update(); 
    277         else 
    278         { 
    279                 if (q) node->remove(q); 
    280                 node->inflate(chd); 
    281         } 
    282  
     266    thIs->parent = node; 
     267    if (node->child.size() > MAX_NODE_SZ &&  node->tree->canSplit() ) // with us as additional child `node` is now too large :( 
     268    return (node->reinserted || node->parent == NULL) ? split(node) : reinsert(node); 
     269  } 
     270  else // la < lb - 1 
     271  { 
     272    chd = thIs->closest(node->child); 
     273    q = insert(thIs, chd); 
     274  } 
     275  if ((node->updateCount + 1) % UPDATE_EVERY == 0) 
     276    node->update(); 
     277  else 
     278  { 
     279    if (q) node->remove(q); 
     280    node->inflate(chd); 
     281  } 
    283282 
    284283  return q; 
  • XIOS/dev/branch_yushan_merged/extern/remap/src/parallel_tree.cpp

    r923 r1155  
    1616 
    1717static const int assignLevel = 2; 
     18 
     19extern CRemapGrid srcGrid; 
     20#pragma omp threadprivate(srcGrid) 
     21 
     22extern CRemapGrid tgtGrid; 
     23#pragma omp threadprivate(tgtGrid) 
    1824 
    1925// only the circle is packed, rest of node will be initialized on unpacking 
Note: See TracChangeset for help on using the changeset viewer.