[Openmp-commits] [PATCH] D100366: [OpenMP] [OMPD] openmp/runtime code changes required for OMPD
Vignesh Balasubramanian via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Mon Jul 19 01:17:59 PDT 2021
Vigneshbalu updated this revision to Diff 359691.
Vigneshbalu added a comment.
Rebasing the patch.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D100366/new/
https://reviews.llvm.org/D100366
Files:
openmp/runtime/src/kmp_csupport.cpp
openmp/runtime/src/ompt-specific.cpp
Index: openmp/runtime/src/ompt-specific.cpp
===================================================================
--- openmp/runtime/src/ompt-specific.cpp
+++ openmp/runtime/src/ompt-specific.cpp
@@ -283,10 +283,6 @@
link_lwt->ompt_team_info = *OMPT_CUR_TEAM_INFO(thr);
*OMPT_CUR_TEAM_INFO(thr) = tmp_team;
- ompt_task_info_t tmp_task = lwt->ompt_task_info;
- link_lwt->ompt_task_info = *OMPT_CUR_TASK_INFO(thr);
- *OMPT_CUR_TASK_INFO(thr) = tmp_task;
-
// link the taskteam into the list of taskteams:
ompt_lw_taskteam_t *my_parent =
thr->th.th_team->t.ompt_serialized_team_info;
@@ -297,6 +293,10 @@
ompd_bp_parallel_begin();
}
#endif
+
+ ompt_task_info_t tmp_task = lwt->ompt_task_info;
+ link_lwt->ompt_task_info = *OMPT_CUR_TASK_INFO(thr);
+ *OMPT_CUR_TASK_INFO(thr) = tmp_task;
} else {
// this is the first serialized team, so we just store the values in the
// team and drop the taskteam-object
@@ -313,6 +313,9 @@
void __ompt_lw_taskteam_unlink(kmp_info_t *thr) {
ompt_lw_taskteam_t *lwtask = thr->th.th_team->t.ompt_serialized_team_info;
if (lwtask) {
+ ompt_task_info_t tmp_task = lwtask->ompt_task_info;
+ lwtask->ompt_task_info = *OMPT_CUR_TASK_INFO(thr);
+ *OMPT_CUR_TASK_INFO(thr) = tmp_task;
#if OMPD_SUPPORT
if (ompd_state & OMPD_ENABLE_BP) {
ompd_bp_parallel_end();
@@ -324,10 +327,6 @@
lwtask->ompt_team_info = *OMPT_CUR_TEAM_INFO(thr);
*OMPT_CUR_TEAM_INFO(thr) = tmp_team;
- ompt_task_info_t tmp_task = lwtask->ompt_task_info;
- lwtask->ompt_task_info = *OMPT_CUR_TASK_INFO(thr);
- *OMPT_CUR_TASK_INFO(thr) = tmp_task;
-
if (lwtask->heap) {
__kmp_free(lwtask);
lwtask = NULL;
@@ -380,7 +379,8 @@
// lightweight teams are exhausted
if (!lwt && taskdata) {
// first try scheduling parent (for explicit task scheduling)
- if (taskdata->ompt_task_info.scheduling_parent) {
+ if (taskdata->td_flags.tasktype == TASK_EXPLICIT &&
+ taskdata->ompt_task_info.scheduling_parent) {
taskdata = taskdata->ompt_task_info.scheduling_parent;
} else if (next_lwt) {
lwt = next_lwt;
Index: openmp/runtime/src/kmp_csupport.cpp
===================================================================
--- openmp/runtime/src/kmp_csupport.cpp
+++ openmp/runtime/src/kmp_csupport.cpp
@@ -578,9 +578,6 @@
__kmp_free(top);
}
- // if( serial_team -> t.t_serialized > 1 )
- serial_team->t.t_level--;
-
/* pop dispatch buffers stack */
KMP_DEBUG_ASSERT(serial_team->t.t_dispatch->th_disp_buffer);
{
@@ -605,6 +602,7 @@
}
#endif /* KMP_ARCH_X86 || KMP_ARCH_X86_64 */
+ __kmp_pop_current_task_from_thread(this_thr);
#if OMPD_SUPPORT
if (ompd_state & OMPD_ENABLE_BP)
ompd_bp_parallel_end();
@@ -623,8 +621,6 @@
this_thr->th.th_dispatch =
&this_thr->th.th_team->t.t_dispatch[serial_team->t.t_master_tid];
- __kmp_pop_current_task_from_thread(this_thr);
-
KMP_ASSERT(this_thr->th.th_current_task->td_flags.executing == 0);
this_thr->th.th_current_task->td_flags.executing = 1;
@@ -645,6 +641,7 @@
}
}
+ serial_team->t.t_level--;
if (__kmp_env_consistency_check)
__kmp_pop_parallel(global_tid, NULL);
#if OMPT_SUPPORT
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D100366.359691.patch
Type: text/x-patch
Size: 3316 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210719/ae05b02b/attachment-0001.bin>
More information about the Openmp-commits
mailing list