[Openmp-commits] [openmp] db635a2 - [OpenMP] Minor improvement in task allocation
Hansang Bae via Openmp-commits
openmp-commits at lists.llvm.org
Tue Jul 13 07:08:13 PDT 2021
Author: Hansang Bae
Date: 2021-07-13T09:07:14-05:00
New Revision: db635a28e65fa168536a100542d250f0b13c7039
URL: https://github.com/llvm/llvm-project/commit/db635a28e65fa168536a100542d250f0b13c7039
DIFF: https://github.com/llvm/llvm-project/commit/db635a28e65fa168536a100542d250f0b13c7039.diff
LOG: [OpenMP] Minor improvement in task allocation
This patch includes a few changes to improve task allocation
performance slightly. These changes are enough to restore performance
drop observed after introducing hidden helper.
Differential Revision: https://reviews.llvm.org/D105715
Added:
Modified:
openmp/runtime/src/kmp_tasking.cpp
Removed:
################################################################################
diff --git a/openmp/runtime/src/kmp_tasking.cpp b/openmp/runtime/src/kmp_tasking.cpp
index fe15cb3dd9cf..ff9b1a8efb4a 100644
--- a/openmp/runtime/src/kmp_tasking.cpp
+++ b/openmp/runtime/src/kmp_tasking.cpp
@@ -1340,13 +1340,7 @@ kmp_task_t *__kmp_task_alloc(ident_t *loc_ref, kmp_int32 gtid,
if (flags->proxy == TASK_FULL)
copy_icvs(&taskdata->td_icvs, &taskdata->td_parent->td_icvs);
- taskdata->td_flags.tiedness = flags->tiedness;
- taskdata->td_flags.final = flags->final;
- taskdata->td_flags.merged_if0 = flags->merged_if0;
- taskdata->td_flags.destructors_thunk = flags->destructors_thunk;
- taskdata->td_flags.proxy = flags->proxy;
- taskdata->td_flags.detachable = flags->detachable;
- taskdata->td_flags.hidden_helper = flags->hidden_helper;
+ taskdata->td_flags = *flags;
taskdata->encountering_gtid = gtid;
taskdata->td_task_team = thread->th.th_task_team;
taskdata->td_size_alloc = shareds_offset + sizeof_shareds;
@@ -1371,8 +1365,6 @@ kmp_task_t *__kmp_task_alloc(ident_t *loc_ref, kmp_int32 gtid,
taskdata->td_flags.complete = 0;
taskdata->td_flags.freed = 0;
- taskdata->td_flags.native = flags->native;
-
KMP_ATOMIC_ST_RLX(&taskdata->td_incomplete_child_tasks, 0);
// start at one because counts current task and children
KMP_ATOMIC_ST_RLX(&taskdata->td_allocated_child_tasks, 1);
@@ -1402,12 +1394,11 @@ kmp_task_t *__kmp_task_alloc(ident_t *loc_ref, kmp_int32 gtid,
if (taskdata->td_parent->td_flags.tasktype == TASK_EXPLICIT) {
KMP_ATOMIC_INC(&taskdata->td_parent->td_allocated_child_tasks);
}
- }
-
- if (flags->hidden_helper) {
- taskdata->td_flags.task_serial = FALSE;
- // Increment the number of hidden helper tasks to be executed
- KMP_ATOMIC_INC(&__kmp_unexecuted_hidden_helper_tasks);
+ if (flags->hidden_helper) {
+ taskdata->td_flags.task_serial = FALSE;
+ // Increment the number of hidden helper tasks to be executed
+ KMP_ATOMIC_INC(&__kmp_unexecuted_hidden_helper_tasks);
+ }
}
KA_TRACE(20, ("__kmp_task_alloc(exit): T#%d created task %p parent=%p\n",
More information about the Openmp-commits
mailing list