Ignore:
Timestamp:
07/31/17 17:59:25 (7 years ago)
Author:
mhnguyen
Message:

Fixing the blocking problem where there are more servers than the number of grid band distribution

+) Correct this problem not only for writing but also for reading
+) Allow "zero-size" domain, axis (i.e: domain, axis with ni = 0, and/or nj=0)

Test
+) On Curie
+) Work in both cases: Read and Write data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/server_distribution_description.hpp

    r887 r1232  
    3838 
    3939    void computeServerDistribution(bool doComputeGlobalIndex = false, int positionDimensionDistributed = 1); 
    40     void computeServerGlobalIndexInRange(const std::pair<size_t, size_t>& indexBeginEnd, int positionDimensionDistributed = 1); 
    41     void computeServerGlobalByElement(std::vector<boost::unordered_map<size_t,std::vector<int> > >& indexServerOnElement, 
    42                                       int rank, 
    43                                       int clientSize, 
    44                                       const CArray<int,1>& axisDomainOrder, 
    45                                       int positionDimensionDistributed = 1); 
     40    std::vector<int> computeServerGlobalIndexInRange(const std::pair<size_t, size_t>& indexBeginEnd, int positionDimensionDistributed = 1); 
     41    std::vector<int> computeServerGlobalByElement(std::vector<boost::unordered_map<size_t,std::vector<int> > >& indexServerOnElement, 
     42                                                  int rank, 
     43                                                  int clientSize, 
     44                                                  const CArray<int,1>& axisDomainOrder, 
     45                                                  int positionDimensionDistributed = 1); 
    4646 
    4747    std::vector<std::vector<int> > getServerIndexBegin() const; 
     
    5252 
    5353  protected: 
    54     void computeBandDistribution(int nServer, int positionDimensionDistributed = 1); 
     54    int computeBandDistribution(int nServer, int positionDimensionDistributed = 1); 
    5555    void computePlanDistribution(int nServer); 
    5656    void computeRangeProcIndex(int clientRank, 
Note: See TracChangeset for help on using the changeset viewer.