aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Hahnfeld <hahnjo@hahnjo.de>2018-02-23 16:46:25 +0000
committerJonas Hahnfeld <hahnjo@hahnjo.de>2018-02-23 16:46:25 +0000
commit3954610539a7fdbf6e09e1cb7a23a2012418b0ba (patch)
treeedc2c797a6c351205d0f903127aebec2093a4008
parente1a7a90dad92196c9dcf42c69485356f17cba71e (diff)
[OMPT] Fix parallel_data in implicit barrier-end
This is required to be NULL for implicit barriers at the end of a parallel region. Noticed in review of D43191. Differential Revision: https://reviews.llvm.org/D43308 git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@325922 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--runtime/src/kmp_barrier.cpp49
-rw-r--r--runtime/src/kmp_runtime.cpp16
-rw-r--r--runtime/test/ompt/parallel/normal.c164
-rw-r--r--runtime/test/ompt/tasks/serialized.c4
4 files changed, 135 insertions, 98 deletions
diff --git a/runtime/src/kmp_barrier.cpp b/runtime/src/kmp_barrier.cpp
index cc125dc..ca107cd 100644
--- a/runtime/src/kmp_barrier.cpp
+++ b/runtime/src/kmp_barrier.cpp
@@ -1883,34 +1883,31 @@ void __kmp_fork_barrier(int gtid, int tid) {
}
#if OMPT_SUPPORT
- if (ompt_enabled.enabled) {
- if (this_thr->th.ompt_thread_info.state ==
- omp_state_wait_barrier_implicit) {
- int ds_tid = this_thr->th.th_info.ds.ds_tid;
- ompt_data_t *tId = (team) ? OMPT_CUR_TASK_DATA(this_thr)
- : &(this_thr->th.ompt_thread_info.task_data);
- this_thr->th.ompt_thread_info.state = omp_state_overhead;
+ if (ompt_enabled.enabled &&
+ this_thr->th.ompt_thread_info.state == omp_state_wait_barrier_implicit) {
+ int ds_tid = this_thr->th.th_info.ds.ds_tid;
+ ompt_data_t *task_data = (team)
+ ? OMPT_CUR_TASK_DATA(this_thr)
+ : &(this_thr->th.ompt_thread_info.task_data);
+ this_thr->th.ompt_thread_info.state = omp_state_overhead;
#if OMPT_OPTIONAL
- void *codeptr = NULL;
- if (KMP_MASTER_TID(ds_tid) &&
- (ompt_callbacks.ompt_callback(ompt_callback_sync_region_wait) ||
- ompt_callbacks.ompt_callback(ompt_callback_sync_region)))
- codeptr = team->t.ompt_team_info.master_return_address;
- if (ompt_enabled.ompt_callback_sync_region_wait) {
- ompt_callbacks.ompt_callback(ompt_callback_sync_region_wait)(
- ompt_sync_region_barrier, ompt_scope_end, NULL, tId, codeptr);
- }
- if (ompt_enabled.ompt_callback_sync_region) {
- ompt_callbacks.ompt_callback(ompt_callback_sync_region)(
- ompt_sync_region_barrier, ompt_scope_end, NULL, tId, codeptr);
- }
+ void *codeptr = NULL;
+ if (KMP_MASTER_TID(ds_tid) &&
+ (ompt_callbacks.ompt_callback(ompt_callback_sync_region_wait) ||
+ ompt_callbacks.ompt_callback(ompt_callback_sync_region)))
+ codeptr = team->t.ompt_team_info.master_return_address;
+ if (ompt_enabled.ompt_callback_sync_region_wait) {
+ ompt_callbacks.ompt_callback(ompt_callback_sync_region_wait)(
+ ompt_sync_region_barrier, ompt_scope_end, NULL, task_data, codeptr);
+ }
+ if (ompt_enabled.ompt_callback_sync_region) {
+ ompt_callbacks.ompt_callback(ompt_callback_sync_region)(
+ ompt_sync_region_barrier, ompt_scope_end, NULL, task_data, codeptr);
+ }
#endif
- if (!KMP_MASTER_TID(ds_tid) && ompt_enabled.ompt_callback_implicit_task) {
- ompt_callbacks.ompt_callback(ompt_callback_implicit_task)(
- ompt_scope_end, NULL, tId, 0, ds_tid);
- }
- // return to idle state
- this_thr->th.ompt_thread_info.state = omp_state_overhead;
+ if (!KMP_MASTER_TID(ds_tid) && ompt_enabled.ompt_callback_implicit_task) {
+ ompt_callbacks.ompt_callback(ompt_callback_implicit_task)(
+ ompt_scope_end, NULL, task_data, 0, ds_tid);
}
}
#endif
diff --git a/runtime/src/kmp_runtime.cpp b/runtime/src/kmp_runtime.cpp
index c05e973..f902f04 100644
--- a/runtime/src/kmp_runtime.cpp
+++ b/runtime/src/kmp_runtime.cpp
@@ -7164,10 +7164,10 @@ void __kmp_internal_join(ident_t *id, int gtid, kmp_team_t *team) {
__kmp_join_barrier(gtid); /* wait for everyone */
#if OMPT_SUPPORT
- int ds_tid = this_thr->th.th_info.ds.ds_tid;
- if (this_thr->th.ompt_thread_info.state == omp_state_wait_barrier_implicit) {
- ompt_data_t *tId = OMPT_CUR_TASK_DATA(this_thr);
- ompt_data_t *pId = OMPT_CUR_TEAM_DATA(this_thr);
+ if (ompt_enabled.enabled &&
+ this_thr->th.ompt_thread_info.state == omp_state_wait_barrier_implicit) {
+ int ds_tid = this_thr->th.th_info.ds.ds_tid;
+ ompt_data_t *task_data = OMPT_CUR_TASK_DATA(this_thr);
this_thr->th.ompt_thread_info.state = omp_state_overhead;
#if OMPT_OPTIONAL
void *codeptr = NULL;
@@ -7178,19 +7178,17 @@ void __kmp_internal_join(ident_t *id, int gtid, kmp_team_t *team) {
if (ompt_enabled.ompt_callback_sync_region_wait) {
ompt_callbacks.ompt_callback(ompt_callback_sync_region_wait)(
- ompt_sync_region_barrier, ompt_scope_end, pId, tId, codeptr);
+ ompt_sync_region_barrier, ompt_scope_end, NULL, task_data, codeptr);
}
if (ompt_enabled.ompt_callback_sync_region) {
ompt_callbacks.ompt_callback(ompt_callback_sync_region)(
- ompt_sync_region_barrier, ompt_scope_end, pId, tId, codeptr);
+ ompt_sync_region_barrier, ompt_scope_end, NULL, task_data, codeptr);
}
#endif
if (!KMP_MASTER_TID(ds_tid) && ompt_enabled.ompt_callback_implicit_task) {
ompt_callbacks.ompt_callback(ompt_callback_implicit_task)(
- ompt_scope_end, NULL, tId, 0, ds_tid);
+ ompt_scope_end, NULL, task_data, 0, ds_tid);
}
- // return to idle state
- this_thr->th.ompt_thread_info.state = omp_state_overhead;
}
#endif
diff --git a/runtime/test/ompt/parallel/normal.c b/runtime/test/ompt/parallel/normal.c
index 015ff5c..2cc9ce1 100644
--- a/runtime/test/ompt/parallel/normal.c
+++ b/runtime/test/ompt/parallel/normal.c
@@ -1,11 +1,11 @@
// RUN: %libomp-compile-and-run | FileCheck %s
-// RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
+// RUN: %libomp-compile-and-run | %sort-threads \
+// RUN: | FileCheck --check-prefix=THREADS %s
// REQUIRES: ompt
#include "callback.h"
-int main()
-{
- #pragma omp parallel num_threads(4)
+int main() {
+#pragma omp parallel num_threads(4)
{
print_ids(0);
print_ids(1);
@@ -13,78 +13,120 @@ int main()
print_fuzzy_address(1);
// Check if libomp supports the callbacks for this test.
- // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_thread_begin'
- // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_thread_end'
- // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_parallel_begin'
- // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_parallel_end'
- // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_implicit_task'
-
+ // CHECK-NOT: {{^}}0: Could not register callback
// CHECK: 0: NULL_POINTER=[[NULL:.*$]]
-
+
// make sure initial data pointers are null
// CHECK-NOT: 0: parallel_data initially not null
// CHECK-NOT: 0: task_data initially not null
// CHECK-NOT: 0: thread_data initially not null
- // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin: parent_task_id=[[PARENT_TASK_ID:[0-9]+]], parent_task_frame.exit=[[NULL]], parent_task_frame.reenter={{0x[0-f]+}}, parallel_id=[[PARALLEL_ID:[0-9]+]], requested_team_size=4, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}}, invoker=[[PARALLEL_INVOKER:[0-9]+]]
-
- // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
+ // Only check callback names, arguments are verified in THREADS below.
+ // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin
- // Note that we cannot ensure that the worker threads have already called barrier_end and implicit_task_end before parallel_end!
+ // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin
+ // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
- // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // Note that we cannot ensure that the worker threads have already called
+ // barrier_end and implicit_task_end before parallel_end!
- // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin
+ // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin
- // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin
+ // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin
- // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end: parallel_id=[[PARALLEL_ID]], task_id=[[PARENT_TASK_ID]], invoker=[[PARALLEL_INVOKER]], codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
- // CHECK: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]]
+ // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin
+ // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin
+ // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end
// THREADS: 0: NULL_POINTER=[[NULL:.*$]]
- // THREADS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_thread_begin: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID]]
- // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_begin: parent_task_id=[[PARENT_TASK_ID:[0-9]+]], parent_task_frame.exit=[[NULL]], parent_task_frame.reenter={{0x[0-f]+}}, parallel_id=[[PARALLEL_ID:[0-9]+]], requested_team_size=4, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}}, invoker={{.*}}
-
- // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // THREADS: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[MASTER_ID]]: task level 1: parallel_id=[[IMPLICIT_PARALLEL_ID:[0-9]+]], task_id=[[PARENT_TASK_ID]]
- // THREADS-NOT: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
- // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]], codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
- // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]], codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
- // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
-
- // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // THREADS: {{^}}[[THREAD_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: task level 1: parallel_id=[[IMPLICIT_PARALLEL_ID]], task_id=[[PARENT_TASK_ID]]
- // THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
-
- // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // THREADS: {{^}}[[THREAD_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: task level 1: parallel_id=[[IMPLICIT_PARALLEL_ID]], task_id=[[PARENT_TASK_ID]]
- // THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
-
- // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
- // THREADS: {{^}}[[THREAD_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: task level 1: parallel_id=[[IMPLICIT_PARALLEL_ID]], task_id=[[PARENT_TASK_ID]]
- // THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
- // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end: parallel_id={{[0-9]+}}, task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_thread_begin
+ // THREADS-SAME: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID]]
+ // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_begin
+ // THREADS-SAME: parent_task_id=[[PARENT_TASK_ID:[0-9]+]]
+ // THREADS-SAME: parent_task_frame.exit=[[NULL]]
+ // THREADS-SAME: parent_task_frame.reenter={{0x[0-f]+}}
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID:[0-9]+]], requested_team_size=4
+ // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}}
+
+ // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
+ // THREADS: {{^}}[[MASTER_ID]]: task level 0
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[MASTER_ID]]: task level 1
+ // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID:[0-9]+]]
+ // THREADS-SAME: task_id=[[PARENT_TASK_ID]]
+ // THREADS-NOT: ompt_event_implicit_task_end
+ // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
+ // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_end
+ // parallel_id is 0 because the region ended in the barrier!
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
+ // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+
+ // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin
+ // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
+ // THREADS: {{^}}[[THREAD_ID]]: task level 0
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: task level 1
+ // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[PARENT_TASK_ID]]
+ // THREADS-NOT: ompt_event_implicit_task_end
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_end
+ // parallel_id is 0 because the region ended in the barrier!
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+
+ // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin
+ // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
+ // THREADS: {{^}}[[THREAD_ID]]: task level 0
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: task level 1
+ // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[PARENT_TASK_ID]]
+ // THREADS-NOT: ompt_event_implicit_task_end
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_end
+ // parallel_id is 0 because the region ended in the barrier!
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+
+ // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin
+ // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-9]+]]
+ // THREADS: {{^}}[[THREAD_ID]]: task level 0
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: task level 1
+ // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]
+ // THREADS-SAME: task_id=[[PARENT_TASK_ID]]
+ // THREADS-NOT: ompt_event_implicit_task_end
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_begin
+ // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_end
+ // parallel_id is 0 because the region ended in the barrier!
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
+ // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
+ // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
return 0;
}
diff --git a/runtime/test/ompt/tasks/serialized.c b/runtime/test/ompt/tasks/serialized.c
index dc2000f..12a0281 100644
--- a/runtime/test/ompt/tasks/serialized.c
+++ b/runtime/test/ompt/tasks/serialized.c
@@ -119,8 +119,8 @@ int main() {
// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
// CHECK-SAME: exit_frame=[[NULL]], reenter_frame=[[NULL]]
// CHECK: {{^}}[[MASTER_ID]]: ompt_event_barrier_end
- // FIXME: parallel_id should be 0 because the region ended in the barrier!
- // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
+ // parallel_id is 0 because the region ended in the barrier!
+ // CHECK-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
// CHECK: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
// CHECK-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]