1. 16 Apr, 2015 1 commit
  2. 05 Mar, 2015 1 commit
    • Huiwei Lu's avatar
      Mark comm_idup and comm_idup_mul as xfail · 758e1b2b
      Huiwei Lu authored
      comm_idup was caught failing on mpich-portals4 with configuration
      "intel,strict,ib”. It was not fully tested on portals4 because portals
      was added after comm_dup patch. On other platforms comm_idup seems to be
      OK.
      
      Ticket #2243
      
      No reviewer
      758e1b2b
  3. 01 Mar, 2015 1 commit
    • Huiwei Lu's avatar
      Mark comm_idup_overlap as xfail · 63ac36a4
      Huiwei Lu authored
      comm_idup_overlap fails on mpich-mxm with "clang,async,ib"
      configuration. It was not fully tested on mxm because mxm was added
      after comm_idup patch. The reason of failing is still unknown. All other
      platforms and configurations are fine.
      
      Ticket #2238
      
      No reviewer
      63ac36a4
  4. 10 Jun, 2014 1 commit
  5. 03 Jun, 2014 1 commit
  6. 31 May, 2014 1 commit
    • Huiwei Lu's avatar
      Fixes MPI_Comm_idup · 05eeccb5
      Huiwei Lu authored
      
      
      This patch fixes two related tickets:
      1. MPI_Comm_idup in multithreaded environments
      2. MPI_Comm_idup fails to create multiple communicators
      Because these two tickets are tightly coupled, so they are fixed in this
      single patch.
      
      The original code did not consider the multithreaded case and did not
      use progress engine in correct order when saving a copy of global mask
      to local thread.
      
      Following changes were made to implement the MPI_Comm_idup correctly:
      
      1. It shares the same global flag 'mask_in_use' with other communicator
      functions to protect access to context_mask. And use CONTEXTID lock to
      protext critical sections.
      
      2. It uses the same algorithm as multithreaded MPI_Comm_dup
      (multi-threaded vertion of MPIR_Get_contextid_sparse_group) to allocate
      a context id, but in a nonblocking way. In the case of conflicts, the
      algorithm needs to retry the allocation process again. In the
      nonblocking algorithm, 1) new entries are inserted to the end of
      schedule to replace the 'while' loop in MPI_Comm_dup algorithm; 2) all
      arguments passed to sched_get_cid_nonblock are saved to gcn_state in
      order to be called in the future; 3) in sched_cb_gcn_allocate_cid, if
      the first try failed, it will insert sched_cb_gcn_copy_mask to the
      schedule again.
      
      3. There is a subtle difference between INTRACOMM and INTERCOMM when
      duplicating a communicator.  They needed to be treated differently in
      current algorithm. Specifically, 1) when calling sched_get_cid_nonblock,
      the parameters are different; 2) updating newcommp->recvcontext_id in
      MPIR_Get_intercomm_contextid_nonblock has been moved to
      sched_cb_gcn_bcast because this should happen after
      sched_cb_gcn_allocate_cid has succeed.
      
      Fixes #1935
      Fixes #1913
      
      Signed-off-by: Pavan Balaji's avatarPavan Balaji <balaji@anl.gov>
      05eeccb5
  7. 25 Dec, 2013 1 commit
    • Pavan Balaji's avatar
      Added a new comm_idup_overlap test. · 0bc9871d
      Pavan Balaji authored
      This patch tests the code when we are duping overlapping communicators
      (with two processes each) essentially forming a ring that should
      deadlock with blocking Comm_dup.  With Comm_idup, this should work
      correctly as per the MPI standard.
      0bc9871d
  8. 01 Nov, 2013 2 commits
  9. 07 Nov, 2012 2 commits
  10. 19 Oct, 2012 1 commit
  11. 02 Mar, 2012 1 commit
  12. 01 Feb, 2012 1 commit
  13. 21 Nov, 2011 1 commit
  14. 02 Nov, 2011 2 commits
  15. 30 Oct, 2011 1 commit
  16. 27 Oct, 2011 1 commit
  17. 20 May, 2011 1 commit
  18. 28 Apr, 2009 1 commit
  19. 07 Oct, 2008 1 commit
  20. 02 Nov, 2007 1 commit