[Openmp-commits] [openmp] r285703 - Fixed problem introduced by part of https://reviews.llvm.org/D21196.
Andrey Churbanov via Openmp-commits
openmp-commits at lists.llvm.org
Tue Nov 1 09:19:04 PDT 2016
Author: achurbanov
Date: Tue Nov 1 11:19:04 2016
New Revision: 285703
URL: http://llvm.org/viewvc/llvm-project?rev=285703&view=rev
Log:
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/trunk/runtime/src/kmp_tasking.c
Modified: openmp/trunk/runtime/src/kmp_tasking.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_tasking.c?rev=285703&r1=285702&r2=285703&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_tasking.c (original)
+++ openmp/trunk/runtime/src/kmp_tasking.c Tue Nov 1 11:19:04 2016
@@ -1801,8 +1801,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