[OpenMP] Fix performance regression reported in bug #51235
authorShilei Tian <tianshilei1992@gmail.com>
Wed, 4 Aug 2021 16:34:37 +0000 (12:34 -0400)
committerShilei Tian <tianshilei1992@gmail.com>
Wed, 4 Aug 2021 16:34:49 +0000 (12:34 -0400)
This patch fixes the "performance regression" reported in https://bugs.llvm.org/show_bug.cgi?id=51235. In fact it has nothing to do with performance. The root cause is, the stolen task is not allowed to execute by another thread because by default it is tied task. Since hidden helper task will always be executed by hidden helper threads, it should be untied.

Reviewed By: protze.joachim

Differential Revision: https://reviews.llvm.org/D107121

openmp/runtime/src/kmp_tasking.cpp

index ea94b3c..ae97287 100644 (file)
@@ -1444,6 +1444,7 @@ kmp_task_t *__kmpc_omp_target_task_alloc(ident_t *loc_ref, kmp_int32 gtid,
   if (__kmp_enable_hidden_helper) {
     auto &input_flags = reinterpret_cast<kmp_tasking_flags_t &>(flags);
     input_flags.hidden_helper = TRUE;
+    input_flags.tiedness = TASK_UNTIED;
   }
 
   return __kmpc_omp_task_alloc(loc_ref, gtid, flags, sizeof_kmp_task_t,