summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/test
diff options
context:
space:
mode:
authorHansang Bae <hansang.bae@intel.com>2019-08-03 02:38:53 +0000
committerHansang Bae <hansang.bae@intel.com>2019-08-03 02:38:53 +0000
commit67e93a1ae00f10450bfc1cfc1ca78498712f4b1f (patch)
tree88a72274b190dd17f608215b42fe2827b82f32b3 /openmp/runtime/test
parent25ab1c6471ff5f447ca75c66e6abee31620bcc03 (diff)
downloadbcm5719-llvm-67e93a1ae00f10450bfc1cfc1ca78498712f4b1f.tar.gz
bcm5719-llvm-67e93a1ae00f10450bfc1cfc1ca78498712f4b1f.zip
Add OMPT support for teams construct
This change adds OMPT support for events from teams construct. Differential Revision: https://reviews.llvm.org/D64025 llvm-svn: 367746
Diffstat (limited to 'openmp/runtime/test')
-rwxr-xr-xopenmp/runtime/test/ompt/callback.h31
-rw-r--r--openmp/runtime/test/ompt/misc/interoperability.cpp10
-rw-r--r--openmp/runtime/test/ompt/teams/parallel_team.c81
-rw-r--r--openmp/runtime/test/ompt/teams/serial_teams.c89
-rw-r--r--openmp/runtime/test/ompt/teams/serialized.c62
-rw-r--r--openmp/runtime/test/ompt/teams/team.c49
6 files changed, 308 insertions, 14 deletions
diff --git a/openmp/runtime/test/ompt/callback.h b/openmp/runtime/test/ompt/callback.h
index ed8ef60200a..64463ec83db 100755
--- a/openmp/runtime/test/ompt/callback.h
+++ b/openmp/runtime/test/ompt/callback.h
@@ -492,7 +492,8 @@ on_ompt_callback_implicit_task(
char buffer[2048];
format_task_type(flags, buffer);
- if(parallel_data->ptr)
+ // Only check initial task not created by teams construct
+ if (team_size == 1 && thread_num == 1 && parallel_data->ptr)
printf("%s\n", "0: parallel_data initially not null");
parallel_data->value = ompt_get_unique_id();
printf("%" PRIu64 ": ompt_event_initial_task_begin: parallel_id=%" PRIu64 ", task_id=%" PRIu64 ", actual_parallelism=%" PRIu32 ", index=%" PRIu32 ", flags=%" PRIu32 "\n", ompt_get_thread_data()->value, parallel_data->value, task_data->value, team_size, thread_num, flags);
@@ -503,7 +504,12 @@ on_ompt_callback_implicit_task(
break;
case ompt_scope_end:
if(flags & ompt_task_initial){
- printf("%" PRIu64 ": ompt_event_initial_task_end: parallel_id=%" PRIu64 ", task_id=%" PRIu64 ", team_size=%" PRIu32 ", thread_num=%" PRIu32 "\n", ompt_get_thread_data()->value, (parallel_data)?parallel_data->value:0, task_data->value, team_size, thread_num);
+ printf("%" PRIu64 ": ompt_event_initial_task_end: parallel_id=%" PRIu64
+ ", task_id=%" PRIu64 ", actual_parallelism=%" PRIu32
+ ", index=%" PRIu32 "\n",
+ ompt_get_thread_data()->value,
+ (parallel_data) ? parallel_data->value : 0, task_data->value,
+ team_size, thread_num);
} else {
printf("%" PRIu64 ": ompt_event_implicit_task_end: parallel_id=%" PRIu64 ", task_id=%" PRIu64 ", team_size=%" PRIu32 ", thread_num=%" PRIu32 "\n", ompt_get_thread_data()->value, (parallel_data)?parallel_data->value:0, task_data->value, team_size, thread_num);
}
@@ -644,23 +650,28 @@ static void on_ompt_callback_parallel_begin(
if(parallel_data->ptr)
printf("0: parallel_data initially not null\n");
parallel_data->value = ompt_get_unique_id();
- printf("%" PRIu64 ": ompt_event_parallel_begin: parent_task_id=%" PRIu64
+ int invoker = flag & 0xF;
+ const char *event = (flag & ompt_parallel_team) ? "parallel" : "teams";
+ const char *size = (flag & ompt_parallel_team) ? "team_size" : "num_teams";
+ printf("%" PRIu64 ": ompt_event_%s_begin: parent_task_id=%" PRIu64
", parent_task_frame.exit=%p, parent_task_frame.reenter=%p, "
- "parallel_id=%" PRIu64 ", requested_team_size=%" PRIu32
+ "parallel_id=%" PRIu64 ", requested_%s=%" PRIu32
", codeptr_ra=%p, invoker=%d\n",
- ompt_get_thread_data()->value, encountering_task_data->value,
+ ompt_get_thread_data()->value, event, encountering_task_data->value,
encountering_task_frame->exit_frame.ptr,
- encountering_task_frame->enter_frame.ptr, parallel_data->value,
- requested_team_size, codeptr_ra, flag);
+ encountering_task_frame->enter_frame.ptr, parallel_data->value, size,
+ requested_team_size, codeptr_ra, invoker);
}
static void on_ompt_callback_parallel_end(ompt_data_t *parallel_data,
ompt_data_t *encountering_task_data,
int flag, const void *codeptr_ra) {
- printf("%" PRIu64 ": ompt_event_parallel_end: parallel_id=%" PRIu64
+ int invoker = flag & 0xF;
+ const char *event = (flag & ompt_parallel_team) ? "parallel" : "teams";
+ printf("%" PRIu64 ": ompt_event_%s_end: parallel_id=%" PRIu64
", task_id=%" PRIu64 ", invoker=%d, codeptr_ra=%p\n",
- ompt_get_thread_data()->value, parallel_data->value,
- encountering_task_data->value, flag, codeptr_ra);
+ ompt_get_thread_data()->value, event, parallel_data->value,
+ encountering_task_data->value, invoker, codeptr_ra);
}
static void
diff --git a/openmp/runtime/test/ompt/misc/interoperability.cpp b/openmp/runtime/test/ompt/misc/interoperability.cpp
index cbb0e87a4bc..6f17a94c1f4 100644
--- a/openmp/runtime/test/ompt/misc/interoperability.cpp
+++ b/openmp/runtime/test/ompt/misc/interoperability.cpp
@@ -58,7 +58,8 @@ int main() {
// CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_initial_task_begin: parallel_id={{[0-9]+}}
-// CHECK-SAME: task_id=[[PARENT_TASK_ID_1:[0-9]+]], actual_parallelism=1, index=1, flags=1
+// CHECK-SAME: task_id=[[PARENT_TASK_ID_1:[0-9]+]], actual_parallelism=1,
+// CHECK-SAME: index=1, flags=1
// CHECK: {{^}}[[MASTER_ID_1]]: ompt_event_parallel_begin:
// CHECK-SAME: parent_task_id=[[PARENT_TASK_ID_1]]
@@ -73,7 +74,7 @@ int main() {
// CHECK: {{^}}[[MASTER_ID_1]]: ompt_event_initial_task_end:
// CHECK-SAME: parallel_id={{[0-9]+}}, task_id=[[PARENT_TASK_ID_1]],
-// CHECK-SAME: team_size=0, thread_num=1
+// CHECK-SAME: actual_parallelism=0, index=1
// CHECK: {{^}}[[MASTER_ID_1]]: ompt_event_thread_end:
// CHECK-SAME: thread_id=[[MASTER_ID_1]]
@@ -83,7 +84,8 @@ int main() {
// CHECK-SAME: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID_2]]
// CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_initial_task_begin: parallel_id={{[0-9]+}}
-// CHECK-SAME: task_id=[[PARENT_TASK_ID_2:[0-9]+]], actual_parallelism=1, index=1, flags=1
+// CHECK-SAME: task_id=[[PARENT_TASK_ID_2:[0-9]+]], actual_parallelism=1,
+// CHECK-SAME: index=1, flags=1
// CHECK: {{^}}[[MASTER_ID_2]]: ompt_event_parallel_begin:
// CHECK-SAME: parent_task_id=[[PARENT_TASK_ID_2]]
@@ -99,7 +101,7 @@ int main() {
// CHECK: {{^}}[[MASTER_ID_2]]: ompt_event_initial_task_end:
// CHECK-SAME: parallel_id={{[0-9]+}}, task_id=[[PARENT_TASK_ID_2]],
-// CHECK-SAME: team_size=0, thread_num=1
+// CHECK-SAME: actual_parallelism=0, index=1
// CHECK: {{^}}[[MASTER_ID_2]]: ompt_event_thread_end:
// CHECK-SAME: thread_id=[[MASTER_ID_2]]
diff --git a/openmp/runtime/test/ompt/teams/parallel_team.c b/openmp/runtime/test/ompt/teams/parallel_team.c
new file mode 100644
index 00000000000..eb22edfdbef
--- /dev/null
+++ b/openmp/runtime/test/ompt/teams/parallel_team.c
@@ -0,0 +1,81 @@
+// RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
+// REQUIRES: ompt
+// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+#include "callback.h"
+
+int main() {
+#pragma omp target teams num_teams(1) thread_limit(2)
+#pragma omp parallel num_threads(2)
+ { printf("In teams\n"); }
+ return 0;
+}
+
+// CHECK: 0: NULL_POINTER=[[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:[0-9]+]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK:[0-9]+]], {{.*}}, index=1
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_teams_begin:
+// CHECK-SAME: parent_task_id=[[INIT_TASK]]
+// CHECK-SAME: {{.*}} requested_num_teams=1
+// CHECK-SAME: {{.*}} invoker=[[TEAMS_FLAGS:[0-9]+]]
+
+//
+// team 0/thread 0
+//
+// initial task in the teams construct
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK_0:[0-9]+]], actual_parallelism=1, index=0
+
+// parallel region forked by runtime
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[INIT_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0:[0-9]+]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[IMPL_TASK_0:[0-9]+]]
+
+// user parallel region
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[IMPL_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00:[0-9]+]]
+// CHECK-SAME: {{.*}} requested_team_size=2
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00]], task_id=[[IMPL_TASK_00:[0-9]+]]
+// CHECK-SAME: {{.*}} team_size=2, thread_num=0
+//
+// barrier event is here
+//
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_00]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00]], task_id=[[IMPL_TASK_0]]
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_0]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[INIT_TASK_0]]
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK_0]], actual_parallelism=0, index=0
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_teams_end:
+// CHECK-SAME: {{.*}} task_id=[[INIT_TASK]], invoker=[[TEAMS_FLAGS]]
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK]], {{.*}}, index=1
+
+//
+// team 0/thread 1
+//
+// CHECK: {{^}}[[WORKER:[0-9]+]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00]], task_id=[[IMPL_TASK_01:[0-9]+]]
+// CHECK-SAME: {{.*}} team_size=2, thread_num=1
+//
+// barrier event is here
+//
+// CHECK: {{^}}[[WORKER]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_01]]
diff --git a/openmp/runtime/test/ompt/teams/serial_teams.c b/openmp/runtime/test/ompt/teams/serial_teams.c
new file mode 100644
index 00000000000..a1f2d608b6a
--- /dev/null
+++ b/openmp/runtime/test/ompt/teams/serial_teams.c
@@ -0,0 +1,89 @@
+// RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
+// REQUIRES: ompt
+// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+#include "callback.h"
+
+int main() {
+#pragma omp target teams num_teams(2) thread_limit(1)
+#pragma omp parallel num_threads(1)
+ { printf("In teams parallel\n"); }
+ return 0;
+}
+
+// CHECK: 0: NULL_POINTER=[[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_0:[0-9]+]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK:[0-9]+]], {{.*}}, index=1
+
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_teams_begin:
+// CHECK-SAME: parent_task_id=[[INIT_TASK]]
+// CHECK-SAME: {{.*}} requested_num_teams=2
+// CHECK-SAME: {{.*}} invoker=[[TEAMS_FLAGS:[0-9]+]]
+
+//
+// team 0
+//
+// initial task in the teams construct
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK_0:[0-9]+]], actual_parallelism=2, index=0
+
+// parallel region forked by runtime
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[INIT_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0:[0-9]+]]
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[IMPL_TASK_0:[0-9]+]]
+
+// user parallel region
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[IMPL_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00:[0-9]+]]
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00]], task_id=[[IMPL_TASK_0]]
+
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_0]]
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[INIT_TASK_0]]
+
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK_0]], actual_parallelism=0, index=0
+
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_teams_end:
+// CHECK-SAME: {{.*}} task_id=[[INIT_TASK]], invoker=[[TEAMS_FLAGS]]
+
+// CHECK: {{^}}[[MASTER_0]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK]], {{.*}}, index=1
+
+//
+// team 1
+//
+// initial task in the teams construct
+// CHECK: {{^}}[[MASTER_1:[0-9]+]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK_1:[0-9]+]], actual_parallelism=2, index=1
+
+// parallel region forked by runtime
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[INIT_TASK_1]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_ID_1:[0-9]+]]
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_ID_1]], task_id=[[IMPL_TASK_1:[0-9]+]]
+
+// user parallel region
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[IMPL_TASK_1]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_ID_11:[0-9]+]]
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_ID_11]], task_id=[[IMPL_TASK_1]]
+
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_1]]
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_ID_1]], task_id=[[INIT_TASK_1]]
+
+// CHECK: {{^}}[[MASTER_1]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK_1]], actual_parallelism=0, index=1
diff --git a/openmp/runtime/test/ompt/teams/serialized.c b/openmp/runtime/test/ompt/teams/serialized.c
new file mode 100644
index 00000000000..8787b921817
--- /dev/null
+++ b/openmp/runtime/test/ompt/teams/serialized.c
@@ -0,0 +1,62 @@
+// RUN: %libomp-compile-and-run | FileCheck %s
+// REQUIRES: ompt
+// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+#include "callback.h"
+
+int main() {
+#pragma omp target teams num_teams(1) thread_limit(1)
+#pragma omp parallel num_threads(1)
+ { printf("In teams\n"); }
+ return 0;
+}
+
+// CHECK: 0: NULL_POINTER=[[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:[0-9]+]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK:[0-9]+]], {{.*}}, index=1
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_teams_begin:
+// CHECK-SAME: parent_task_id=[[INIT_TASK]]
+// CHECK-SAME: {{.*}} requested_num_teams=1
+// CHECK-SAME: {{.*}} invoker=[[TEAMS_FLAGS:[0-9]+]]
+
+// initial task in the teams construct starts
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK_0:[0-9]+]], actual_parallelism=1, index=0
+
+// parallel region forked by runtime
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[INIT_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0:[0-9]+]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[IMPL_TASK_0:[0-9]+]]
+
+// user parallel region
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[IMPL_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00:[0-9]+]]
+// CHECK-SAME: {{.*}} requested_team_size=1
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00]], task_id=[[IMPL_TASK_00:[0-9]+]]
+// CHECK-SAME: {{.*}} team_size=1, thread_num=0
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_00]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_00]], task_id=[[IMPL_TASK_0]]
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[INIT_TASK_0]]
+
+// initial task in the teams construct ends
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK_0]], actual_parallelism=0, index=0
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_teams_end:
+// CHECK-SAME: {{.*}} task_id=[[INIT_TASK]], invoker=[[TEAMS_FLAGS]]
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK]], {{.*}}, index=1
diff --git a/openmp/runtime/test/ompt/teams/team.c b/openmp/runtime/test/ompt/teams/team.c
new file mode 100644
index 00000000000..78f8b7c28c8
--- /dev/null
+++ b/openmp/runtime/test/ompt/teams/team.c
@@ -0,0 +1,49 @@
+// RUN: %libomp-compile-and-run | FileCheck %s
+// REQUIRES: ompt
+// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+#include "callback.h"
+
+int main() {
+#pragma omp target teams num_teams(1) thread_limit(1)
+ { printf("In teams\n"); }
+ return 0;
+}
+
+// CHECK: 0: NULL_POINTER=[[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:[0-9]+]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK:[0-9]+]], {{.*}}, index=1
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_teams_begin:
+// CHECK-SAME: parent_task_id=[[INIT_TASK]]
+// CHECK-SAME: {{.*}} requested_num_teams=1
+// CHECK-SAME: {{.*}} invoker=[[TEAMS_FLAGS:[0-9]+]]
+
+// initial task in the teams construct starts
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_begin:
+// CHECK-SAME: task_id=[[INIT_TASK_0:[0-9]+]], actual_parallelism=1, index=0
+
+// parallel region forked by runtime
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_begin:
+// CHECK-SAME: {{.*}} parent_task_id=[[INIT_TASK_0]]
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0:[0-9]+]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_begin:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[IMPL_TASK_0:[0-9]+]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_implicit_task_end:
+// CHECK-SAME: {{.*}} parallel_id={{[0-9]+}}, task_id=[[IMPL_TASK_0]]
+// CHECK: {{^}}[[MASTER]]: ompt_event_parallel_end:
+// CHECK-SAME: {{.*}} parallel_id=[[PAR_0]], task_id=[[INIT_TASK_0]]
+
+// initial task in the teams construct ends
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK_0]], actual_parallelism=0, index=0
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_teams_end:
+// CHECK-SAME: {{.*}} task_id=[[INIT_TASK]], invoker=[[TEAMS_FLAGS]]
+
+// CHECK: {{^}}[[MASTER]]: ompt_event_initial_task_end:
+// CHECK-SAME: task_id=[[INIT_TASK]], {{.*}}, index=1
OpenPOWER on IntegriCloud