Skip to content
  • Mark OLESEN's avatar
    ENH: improve handling of multi-pass send/recv (#3152) · d9c73ae4
    Mark OLESEN authored
    - the maxCommsSize variable is used to 'chunk' large data transfers
      (eg, with PstreamBuffers) into a multi-pass send/recv sequence.
    
      The send/recv windows for chunk-wise transfers:
    
          iter    data window
          ----    -----------
          0       [0, 1*chunk]
          1       [1*chunk, 2*chunk]
          2       [2*chunk, 3*chunk]
          ...
    
      Since we mostly send/recv in bytes, the current internal limit
      for MPI counts (INT_MAX) can be hit rather quickly.
    
      The chunking limit should thus also be INT_MAX, but since it is
      rather tedious to specify such large numbers, can instead use
    
          maxCommsSize = -1
    
      to specify (INT_MAX-1) as the limit.
      The default value of maxCommsSize = 0 (ie, no chunking).
    
    Note
    ~~~~
      In previous versions, the number of chunks was determined by the
      sender sizes. This required an additional MPI_Allreduce to establish
      an overall consistent number of chunks to walk. This additional
      overhead each time meant that max...
    d9c73ae4