1. 24 Apr, 2015 8 commits
  2. 23 Apr, 2015 3 commits
  3. 22 Apr, 2015 6 commits
    • Pavan Balaji's avatar
      Fix arbitrary poll count before yielding. · abb56764
      Pavan Balaji authored
      Instead of polling for an arbitrarily decided number of times in the
      progress engine before yielding, we now moved the yielding
      intelligence to the threading layer.  The threading layer can keep
      track of other threads that are waiting to enter the critical section
      and only yield if another thread is waiting.  In this way, if no
      thread is waiting to get the lock, the main thread never yields.  At
      the same time, if another thread is waiting to get a lock, there is no
      delay in yielding.
      This change, however, introduces possible deadlocks. If a thread enters
      MPIDI_CH3I_progress with is_blocking unset, it may set the
      MPIDI_CH3I_progress_blocked flag and then will yield the critical section.
      Another thread may enter with is_blocking set, find the flag
      MPIDI_CH3I_progress_blocked set, and block in the conditional variable.
      The first thread will wake up and leave the progress engine without
      emitting any signal to wake up the second thread which may sleep forever.
      A simple fix is to yield the critical section only if the current thread
      entered the progress engine with is_blocking set.
      Signed-off-by: default avatarHalim Amer <aamer@anl.gov>
    • Pavan Balaji's avatar
      Initial version of the intelligent thread yielding. · b39314a5
      Pavan Balaji authored
      Instead of a simple thread yield, this patch adds some additional
      information to the yield about how many threads are waiting for it.
      When a thread tries to acquire a lock, they increment a counter.  When
      a thread needs to yield, it can check this counter to see how many
      threads are waiting to get the lock.  If there are no threads waiting,
      the yield can be skipped.
      This patch contains various changes to make that happen:
      1. We modify the mutex object to maintain additional information on
      the number of queued threads.
      2. We improve the yield call to include the unlock and lock as well,
      since it needs to decide whether to do the unlock/lock based on how
      many other threads are queued up.
      Signed-off-by: default avatarHalim Amer <aamer@anl.gov>
    • Pavan Balaji's avatar
      Cleanup threaded progress. · f385680e
      Pavan Balaji authored
      The nemesis progress engine was written in a way so that if one thread
      is inside a progress engine, other threads cannot enter the receive
      progress.  They can enter the send progress in some cases.  There
      doesn't seem to be a good reason for this behavior.  This patch
      combines this so threads would simply return for nonblocking
      operations and wait for a signal before entering the progress engine
      for blocking operations.
      Signed-off-by: default avatarHalim Amer <aamer@anl.gov>
    • Sangmin Seo's avatar
      Fix wrong alias names. · 5fb750b9
      Sangmin Seo authored
      __attribute__((weak,alias())) should have function names starting with
      PMPI, but some MPIX functions, such as MPIX_Grequest_class_create,
      MPIX_Grequest_class_allocate, MPIX_Grequest_start, MPIX_Mutex_create,
      MPIX_Mutex_free, MPIX_Mutex_lock, and MPIX_Mutex_unlock, had the same
      alias names as those of original functions. This patch fixes wrong
      alias names in __attribute__((weak,alias())) and also fixes some wrong
      alias names in #pragma.
      Signed-off-by: default avatarHuiwei Lu <huiweilu@mcs.anl.gov>
    • Antonio J. Pena's avatar
    • Kenneth Raffenetti's avatar
      mxm: fix anysource_matched · 1be5fc49
      Kenneth Raffenetti authored
      The return value of anysource_matched should be the actual result
      of the cancel operation. If the result is uncancelable, i.e. already
      matched, then CH3 will let the netmod message win and move on to the
      other requests in the queue. When the completion for the unsuccessfully
      canceled message comes in, we process it like normal.
      Reviewed-by: default avatarIgor Ivanov <Igor.Ivanov@itseez.com>
      Signed-off-by: default avatarAntonio J. Pena <apenya@mcs.anl.gov>
  4. 21 Apr, 2015 2 commits
  5. 20 Apr, 2015 9 commits
  6. 17 Apr, 2015 9 commits
  7. 16 Apr, 2015 2 commits
  8. 15 Apr, 2015 1 commit
    • Pavan Balaji's avatar
      Increase bcast_full time limit. · 04060d1d
      Pavan Balaji authored
      We increased the number of cases the bcast test was running in
      [e01a20b6].  This is causing it to timeout on some platforms, where
      the test now seems to take close to 3 minutes.  This increased timeout
      should be sufficient on those platforms.
      No reviewer.