Ignore:
Timestamp:
04/14/17 16:53:56 (7 years ago)
Author:
mhnguyen
Message:

Updating 2-level server

+) Make some changes in the way data rebuilt on each level of server
+) Make some changes in the order of functions call during close context to make sure that each server receives the global indexes before calculating index to send to next level
+) Modify some functions to make sure data sent to the correct server pool

Test
+) On Curie
+) Only test_client

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/src/io/nc4_data_output.cpp

    r1054 r1099  
    7474         else setWrittenDomain(domid); 
    7575 
    76         const std::vector<int>& local_size_write  = domain->getLocalWriteSize(); 
    77         const std::vector<int>& global_size_write = domain->getGlobalWriteSize(); 
    78         const std::vector<int>& start_write = domain->getStartWriteIndex(); 
    79         const std::vector<int>& count_write = domain->getCountWriteIndex(); 
     76        // const std::vector<int>& local_size_write  = domain->getLocalWriteSize(); 
     77        // const std::vector<int>& global_size_write = domain->getGlobalWriteSize(); 
     78        // const std::vector<int>& start_write = domain->getStartWriteIndex(); 
     79        // const std::vector<int>& count_write = domain->getCountWriteIndex(); 
    8080        int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 
    8181 
     
    140140                 bounds_latid = StdString("bounds_lat").append(appendDomid); 
    141141 
    142                  SuperClassWriter::addDimension(dimXid, local_size_write[0]); 
    143                  SuperClassWriter::addDimension(dimYid, local_size_write[1]); 
     142                 SuperClassWriter::addDimension(dimXid, domain->zoom_ni); 
     143                 SuperClassWriter::addDimension(dimYid, domain->zoom_nj); 
    144144 
    145145                 if (domain->hasBounds) 
     
    148148                 if (server->intraCommSize > 1) 
    149149                 { 
    150                    this->writeLocalAttributes(0, count_write[0], 
    151                                               0, count_write[1], 
     150                   this->writeLocalAttributes(domain->zoom_ibegin, 
     151                                              domain->zoom_ni, 
     152                                              domain->zoom_jbegin, 
     153                                              domain->zoom_nj, 
    152154                                              appendDomid); 
    153155 
    154156                   if (singleDomain) 
    155157                    this->writeLocalAttributes_IOIPSL(dimXid, dimYid, 
    156                                                       0, count_write[0], 
    157                                                       0, count_write[1], 
     158                                                      domain->zoom_ibegin, 
     159                                                      domain->zoom_ni, 
     160                                                      domain->zoom_jbegin, 
     161                                                      domain->zoom_nj, 
    158162                                                      domain->ni_glo,domain->nj_glo, 
    159163                                                      server->intraCommRank,server->intraCommSize); 
     
    228232                       break; 
    229233                     case CDomain::type_attr::rectilinear : 
    230                        CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,local_size_write[0])) ; 
     234                       CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,domain->zoom_ni)) ; 
    231235                       SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 
    232                        CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1])) ; 
     236                       CArray<double,1> lon = domain->lonvalue(Range(0,domain->zoom_ni-1)) ; 
    233237//                       CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1]-1)) ; 
    234238                       SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 
     
    252256              case (ONE_FILE) : 
    253257              { 
    254                  SuperClassWriter::addDimension(dimXid, global_size_write[0]); 
    255                  SuperClassWriter::addDimension(dimYid, global_size_write[1]); 
     258                 SuperClassWriter::addDimension(dimXid, domain->global_zoom_ni); 
     259                 SuperClassWriter::addDimension(dimYid, domain->global_zoom_nj); 
    256260 
    257261                 if (domain->hasBounds) 
     
    327331                     else 
    328332                     { 
    329                        // start[1]=domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 
    330                        // start[0]=domain->zoom_jbegin_srv-domain->global_zoom_jbegin; 
    331                        // count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ; 
    332                        start[1]= start_write[0]; 
    333                        start[0]= start_write[1]; 
    334                        count[1]= count_write[0]; 
    335                        count[0]= count_write[1]; 
     333                       start[1]=domain->zoom_ibegin-domain->global_zoom_ibegin; 
     334                       start[0]=domain->zoom_jbegin-domain->global_zoom_jbegin; 
     335                       count[1]=domain->zoom_ni ; count[0]=domain->zoom_nj ; 
     336                       // start[1]= start_write[0]; 
     337                       // start[0]= start_write[1]; 
     338                       // count[1]= count_write[0]; 
     339                       // count[0]= count_write[1]; 
    336340                     } 
    337341 
     
    359363                       else 
    360364                       { 
    361                          start[0]= start_write[1]; 
    362                          count[0]= count_write[1]; 
    363                          CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,count_write[0])) ; 
     365                         // start[0]= start_write[1]; 
     366                         // count[0]= count_write[1]; 
     367                         start[0]=domain->zoom_jbegin-domain->global_zoom_jbegin; 
     368                         count[0]=domain->zoom_nj; 
     369                         CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,domain->zoom_ni)) ; 
    364370                         SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 
    365371 
    366                          start[0]= start_write[0]; 
    367                          count[0]= count_write[0]; 
    368                          CArray<double,1> lon=domain->lonvalue(Range(0,count_write[1])) ; 
     372                         // start[0]= start_write[0]; 
     373                         // count[0]= count_write[0]; 
     374                         start[0]=domain->zoom_ibegin-domain->global_zoom_ibegin; 
     375                         count[0]=domain->zoom_ni; 
     376                         CArray<double,1> lon=domain->lonvalue(Range(0,domain->zoom_ni-1)) ; 
    369377                         SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 
    370378                       } 
     
    386394                   { 
    387395                     start[2] = 0; 
    388                      start[1] = start_write[0]; 
    389                      start[0] = start_write[1]; 
    390                      count[2] = nvertex; 
    391                      count[1] = count_write[0]; 
    392                      count[0] = count_write[1]; 
     396                     start[1] = domain->zoom_ibegin - domain->global_zoom_ibegin; 
     397                     start[0] = domain->zoom_jbegin - domain->global_zoom_jbegin; 
     398                     count[2] = domain->nvertex; 
     399                     count[1] = domain->zoom_ni; 
     400                     count[0] = domain->zoom_nj; 
    393401                   } 
    394402 
     
    409417                   else 
    410418                   { 
    411                      // start[1] = domain->zoom_ibegin_srv - domain->global_zoom_ibegin; 
    412                      // start[0] = domain->zoom_jbegin_srv - domain->global_zoom_jbegin; 
    413                      // count[1] = domain->zoom_ni_srv; 
    414                      // count[0] = domain->zoom_nj_srv; 
    415  
    416                      start[1]= start_write[0]; 
    417                      start[0]= start_write[1]; 
    418                      count[1]= count_write[0]; 
    419                      count[0]= count_write[1]; 
     419                     start[1] = domain->zoom_ibegin - domain->global_zoom_ibegin; 
     420                     start[0] = domain->zoom_jbegin - domain->global_zoom_jbegin; 
     421                     count[1] = domain->zoom_ni; 
     422                     count[0] = domain->zoom_nj; 
     423 
     424                     // start[1]= start_write[0]; 
     425                     // start[0]= start_write[1]; 
     426                     // count[1]= count_write[0]; 
     427                     // count[0]= count_write[1]; 
    420428                   } 
    421429 
     
    10481056        axis->checkAttributes(); 
    10491057 
    1050         int local_size_write  = axis->getLocalWriteSize(); 
    1051         int global_size_write = axis->getGlobalWriteSize(); 
    1052         int start_write = axis->getStartWriteIndex(); 
    1053         int count_write = axis->getCountWriteIndex(); 
    1054  
    1055         if ((0 == local_size_write) && (MULTI_FILE == SuperClass::type)) return; 
     1058        // int local_size_write  = axis->getLocalWriteSize(); 
     1059        // int global_size_write = axis->getGlobalWriteSize(); 
     1060        // int start_write = axis->getStartWriteIndex(); 
     1061        // int count_write = axis->getCountWriteIndex(); 
     1062 
     1063 
     1064        // if ((0 == local_size_write) && (MULTI_FILE == SuperClass::type)) return; 
     1065 
     1066        int zoom_size  = (MULTI_FILE == SuperClass::type) ? axis->zoom_n 
     1067                                                          : axis->global_zoom_n; 
     1068        int zoom_begin = (MULTI_FILE == SuperClass::type) ? axis->zoom_begin 
     1069                                                          : axis->global_zoom_begin; 
     1070 
     1071        if ((0 == axis->zoom_n) && (MULTI_FILE == SuperClass::type)) return; 
    10561072 
    10571073        std::vector<StdString> dims; 
     
    10621078        try 
    10631079        { 
    1064           SuperClassWriter::addDimension(axisid, global_size_write); 
     1080          SuperClassWriter::addDimension(axisid, zoom_size); 
    10651081          if (axis->hasValue) 
    10661082          { 
     
    11021118              case MULTI_FILE: 
    11031119              { 
    1104                 CArray<double,1> axis_value(local_size_write); 
    1105                 for (int i = 0; i < local_size_write; i++) axis_value(i) = axis->value(i); 
     1120                CArray<double,1> axis_value(axis->zoom_n); 
     1121                for (int i = 0; i < axis->zoom_n; i++) axis_value(i) = axis->value(i); 
    11061122                SuperClassWriter::writeData(axis_value, axisid, isCollective, 0); 
    11071123 
     
    11151131              case ONE_FILE: 
    11161132              { 
    1117                 CArray<double,1> axis_value(count_write); 
     1133                CArray<double,1> axis_value(axis->zoom_n); 
    11181134                axis_value = axis->value; 
    1119  
    11201135                std::vector<StdSize> start(1), startBounds(2) ; 
    11211136                std::vector<StdSize> count(1), countBounds(2) ; 
    1122                 start[0] = startBounds[0] = start_write; 
    1123                 count[0] = countBounds[0] = count_write; 
     1137                start[0] = startBounds[0] = zoom_begin - axis->global_zoom_begin; 
     1138                count[0] = countBounds[0] = zoom_size; 
    11241139                startBounds[1] = 0; 
    11251140                countBounds[1] = 2; 
     
    22952310                        // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    22962311                        // count.push_back(nZoomSizeServer[idx]); 
    2297                         start.push_back((domain->getStartWriteIndex())[idx]); 
    2298                         count.push_back((domain->getCountWriteIndex())[idx]); 
     2312                        // start.push_back((domain->getStartWriteIndex())[idx]); 
     2313                        // count.push_back((domain->getCountWriteIndex())[idx]); 
     2314                        start.push_back(domain->zoom_jbegin - domain->global_zoom_jbegin); 
     2315                        count.push_back(domain->zoom_nj); 
    22992316                      } 
    23002317                      --idx ; 
    23012318                      // start.push_back(nZoomBeginServer[idx] - nZoomBeginGlobal[idx]); 
    23022319                      // count.push_back(nZoomSizeServer[idx]); 
    2303                       start.push_back((domain->getStartWriteIndex())[idx]); 
    2304                       count.push_back((domain->getCountWriteIndex())[idx]); 
     2320                      // start.push_back((domain->getStartWriteIndex())[idx]); 
     2321                      // count.push_back((domain->getCountWriteIndex())[idx]); 
     2322                        start.push_back(domain->zoom_ibegin - domain->global_zoom_ibegin); 
     2323                        count.push_back(domain->zoom_ni); 
    23052324                      --idx ; 
    23062325                      --idxDomain; 
     
    23092328                    { 
    23102329                      CAxis* axis = CAxis::get(axisList[idxAxis]); 
    2311                       start.push_back(axis->getStartWriteIndex()); 
    2312                       count.push_back(axis->getCountWriteIndex()); 
     2330                      // start.push_back(axis->getStartWriteIndex()); 
     2331                      // count.push_back(axis->getCountWriteIndex()); 
     2332                        start.push_back(axis->zoom_begin - axis->global_zoom_begin); 
     2333                        count.push_back(axis->zoom_n); 
    23132334                      --idx; 
    23142335                      --idxAxis; 
Note: See TracChangeset for help on using the changeset viewer.