Skip to content
  • Mark OLESEN's avatar
    aa002122
    ENH: simplify handling of pushed/freed requests · aa002122
    Mark OLESEN authored
    - previously had an additional stack for freedRequests_,
      which were used to 'remember' locations into the list of
      outstandingRequests_ that were handled by 'waitRequest()'.
    
      This was principally done for sanity checks on shutdown,
      but we now just test for any outstanding requests that
      are *not* MPI_REQUEST_NULL instead (much simpler).
    
      The framework with freedRequests_ also had a provision to 'recycle'
      them by popping from that stack, but this is rather fragile since it
      would only triggered by some collectives
      (MPI_Iallreduce, MPI_Ialltoall, MPI_Igather, MPI_Iscatter)
      with no guarantee that these will all be properly removed again.
      There was also no pruning of extraneous indices.
    
    ENH: consolidate internal reset/push of requests
    
    - replace duplicate code with inline functions
      reset_request(), push_request()
    
    ENH: null out trailing requests
    
    - extra safety (paranoia) for the UPstream::Request versions
      of finishedRequests(), waitAnyRequest()
    
    CONFIG: document nPollProcInterfaces in etc/controlDict
    
    - still experimental, but at least make the keyword known
    aa002122
    ENH: simplify handling of pushed/freed requests
    Mark OLESEN authored
    - previously had an additional stack for freedRequests_,
      which were used to 'remember' locations into the list of
      outstandingRequests_ that were handled by 'waitRequest()'.
    
      This was principally done for sanity checks on shutdown,
      but we now just test for any outstanding requests that
      are *not* MPI_REQUEST_NULL instead (much simpler).
    
      The framework with freedRequests_ also had a provision to 'recycle'
      them by popping from that stack, but this is rather fragile since it
      would only triggered by some collectives
      (MPI_Iallreduce, MPI_Ialltoall, MPI_Igather, MPI_Iscatter)
      with no guarantee that these will all be properly removed again.
      There was also no pruning of extraneous indices.
    
    ENH: consolidate internal reset/push of requests
    
    - replace duplicate code with inline functions
      reset_request(), push_request()
    
    ENH: null out trailing requests
    
    - extra safety (paranoia) for the UPstream::Request versions
      of finishedRequests(), waitAnyRequest()
    
    CONFIG: document nPollProcInterfaces in etc/controlDict
    
    - still experimental, but at least make the keyword known
Loading