[Openmp-commits] [openmp] r287561 - Merging r285703:

Jonathan Peyton via Openmp-commits openmp-commits at lists.llvm.org
Mon Nov 21 10:49:41 PST 2016


Author: jlpeyton
Date: Mon Nov 21 12:49:41 2016
New Revision: 287561

URL: http://llvm.org/viewvc/llvm-project?rev=287561&view=rev
Log:
Merging r285703:
------------------------------------------------------------------------
r285703 | achurbanov | 2016-11-01 11:19:04 -0500 (Tue, 01 Nov 2016) | 9 lines

Fixed problem introduced by part of https://reviews.llvm.org/D21196.

Check Task Scheduling Constraint (TSC) on stealing of untied task.
This is needed because the untied task can produce tied children
those can break TSC if untied is not a descendant of current task.
This can cause live lock on complex tyasking tests
(e.g. kastors/strassen-task-dep).

Differential Revision: https://reviews.llvm.org/D26182
------------------------------------------------------------------------

Modified:
    openmp/branches/release_39/   (props changed)
    openmp/branches/release_39/runtime/src/kmp_tasking.c

Propchange: openmp/branches/release_39/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 21 12:49:41 2016
@@ -1 +1 @@
-/openmp/trunk:278036,278332,280138,285283,287551
+/openmp/trunk:278036,278332,280138,285283,285703,287551

Modified: openmp/branches/release_39/runtime/src/kmp_tasking.c
URL: http://llvm.org/viewvc/llvm-project/openmp/branches/release_39/runtime/src/kmp_tasking.c?rev=287561&r1=287560&r2=287561&view=diff
==============================================================================
--- openmp/branches/release_39/runtime/src/kmp_tasking.c (original)
+++ openmp/branches/release_39/runtime/src/kmp_tasking.c Mon Nov 21 12:49:41 2016
@@ -1788,8 +1788,8 @@ __kmp_steal_task( kmp_info_t *victim, km
             parent = parent->td_parent;  // check generation up to the level of the current task
             KMP_DEBUG_ASSERT(parent != NULL);
         }
-        if ( parent != current && (taskdata->td_flags.tiedness == TASK_TIED) ) { // untied is always allowed to be stolen
-            // If the tail task is not a child, then no other childs can appear in the deque (?).
+        if ( parent != current ) {
+            // If the tail task is not a descendant of the current task then do not steal it.
             __kmp_release_bootstrap_lock( & victim_td -> td.td_deque_lock );
             KA_TRACE(10, ("__kmp_steal_task(exit #2): T#%d could not steal from T#%d: task_team=%p "
                           "ntasks=%d head=%u tail=%u\n",




More information about the Openmp-commits mailing list