1. 31 Jul, 2014 1 commit
    • Wesley Bland's avatar
      Add MPI_Comm_revoke · 57f6ee88
      Wesley Bland authored
      
      
      MPI_Comm_revoke is a special function because it does not have a matching call
      on the "receiving side". This is because it has to act as an out-of-band,
      resilient broadcast algorithm. Because of this, in this commit, in addition to
      the usual functions to implement MPI communication calls (MPI/MPID/CH3/etc.),
      we add a new CH3 packet type that will handle revoking a communicator without
      involving a matching call from the MPI layer (similar to how RMA is currently
      implemented).
      
      The thing that must be handled most carefully when revoking a communicator is
      to ensure that a previously used context ID will eventually be returned to the
      pool of available context IDs and that after this occurs, no old messages will
      match the new usage of the context ID (for instance, if some messages are very
      slow and show up late). To accomplish this, revoke is implemented as an
      all-to-all algorithm. When one process calls revoke, it will send a message to
      all other processes in the communicator, which will trigger that process to
      send a message to all other processes, and so on. Once a process has already
      revoked its communicator locally, it won't send out another wave of messages.
      As each process receives the revoke messages from the other processes, it will
      track how many messages have been received. Once it has either received a
      revoke message or a message about a process failure for each other process, it
      will release its refcount on the communicator object. After the application
      has freed all of its references to the communicator (and all requests, files,
      etc. associated with it), the context ID will be returned to the available
      pool.
      Signed-off-by: default avatarJunchao Zhang <jczhang@mcs.anl.gov>
      57f6ee88
  2. 21 Jul, 2014 4 commits
  3. 18 Jul, 2014 1 commit
  4. 17 Jul, 2014 1 commit
    • Pavan Balaji's avatar
      Simplified RMA_Op structure. · 274a5a70
      Pavan Balaji authored
      
      
      We were creating duplicating information in the operation structure
      and in the packet structure when the message is actually issued.
      Since most of the information is the same anyway, this patch just
      embeds a packet structure into the operation structure.
      Signed-off-by: default avatarXin Zhao <xinzhao3@illinois.edu>
      274a5a70
  5. 21 Feb, 2013 5 commits
    • James Dinan's avatar
      Implemented lock op piggybacking for MODE_NOCHECK · 223fce45
      James Dinan authored
      When the MPI_MODE_NOCHECK assertion is given to a passive target lock
      operation, we defer acquisition of the lock and piggyback the request on
      the first RMA op to the target.  This eliminates a round-trip
      lock-request message.
      
      Reviewer: goodell
      223fce45
    • James Dinan's avatar
      Cleanup of FOP packet header · 422006da
      James Dinan authored
      Removed source_win_handle from the packet header, since it's no longer
      needed.
      
      Reviewer: goodell
      422006da
    • James Dinan's avatar
      RMA sync. piggybacking from origin->target · 4e67607f
      James Dinan authored
      This patch uses packet header flags to piggyback the unlock operation on other
      RMA operations.  For most operations, there is no net change.  However, FOP and
      GACC, unlock piggybacking was previously not implemented.
      
      Reviewer: goodell
      4e67607f
    • James Dinan's avatar
      Added flags field to RMA op packet headers · c3f87fe3
      James Dinan authored
      Added flags field to RMA operation packets that are sent from origin to target.
      This will be used to piggyback RMA synchronization operations.
      
      Reviewer: goodell
      c3f87fe3
    • James Dinan's avatar
      Converted packet type field to 16-bits · 90b3b2f8
      James Dinan authored
      Convert the packet type field from an enum to a uint16.  This change was also
      applied to packet types defined by Nemesis.  Downstream netmod developers will
      also have to make this change if they defined new packet types.
      
      Reviewer: goodell
      90b3b2f8
  6. 05 Nov, 2012 1 commit
  7. 20 Oct, 2012 2 commits
    • James Dinan's avatar
      [svn-r10426] MPI-3 RMA Flush implementation · 7e3e73a2
      James Dinan authored
      This commit implements MPI-3 RMA's flush and flush_all operations.
      
      Reviewer: buntinas
      7e3e73a2
    • James Dinan's avatar
      [svn-r10423] Added passive target immediate locking · 5109ab1b
      James Dinan authored
      When enabled, this mode of operation immediately requests the lock when
      MPI_Win_lock is called.  Currently, this is enabled by setting the
      MPICH_RMA_LOCK_IMMED environment variable.  In the future, we can also make
      this mode of operation available though an info/assert.  This capability is
      needed to implement MPI-3's flush operations.
      
      Reviewer: buntinas
      5109ab1b
  8. 11 Oct, 2012 1 commit
  9. 10 Oct, 2012 1 commit
  10. 20 Sep, 2012 1 commit
    • James Dinan's avatar
      [svn-r10249] Updated fetch_and_op implementation · 9574b9ab
      James Dinan authored
      Updated the fetch_and_op implementation to have two data transfer paths; one
      where data can be embedded in the packet header and one where it is sent
      separately.  With this change, the header size is back to 40 bytes.
      
      Reviewer: buntinas
      9574b9ab
  11. 11 Sep, 2012 1 commit
    • James Dinan's avatar
      [svn-r10219] Refactoring of oputil for use in RMA. · 6165992c
      James Dinan authored
      An extra argument was added to the oputil macros to provide a name,
      which can be used to generate union types.  This is needed for
      generating types to be included in the RMA packet headers.  The RMA code
      is also modified to use this new functionality, replacing the old
      hand-coded unions.
      
      Reviewer: goodell@
      6165992c
  12. 07 Sep, 2012 1 commit
  13. 30 Aug, 2012 2 commits
  14. 06 Nov, 2010 1 commit
    • William Gropp's avatar
      [svn-r7416] Major improvement to RMA performance for long lists of operations,... · 3608ca24
      William Gropp authored
      [svn-r7416] Major improvement to RMA performance for long lists of operations, an immediate mode accumulate for single ints, store the MPID_Comm within the window, and added a basic performance instrumentation interface that was extensively used to improve the RMA performance (enabled with --enable-g=instr).  With these fixes, MPICH2 can run the one-sided version of the Graph500 benchmark at a respectable if not great rate
      3608ca24
  15. 01 Jul, 2010 1 commit
  16. 16 May, 2008 1 commit
  17. 07 Jan, 2008 1 commit
  18. 02 Nov, 2007 1 commit