1// RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
2// REQUIRES: ompt
3#include "callback.h"
4#include <omp.h>
5
6int main() {
7
8 int condition = 0;
9 int x = 0;
10 omp_set_nested(1);
11#pragma omp parallel num_threads(2)
12 {
13#pragma omp parallel num_threads(2)
14 {
15 OMPT_SIGNAL(condition);
16 OMPT_WAIT(condition, 4);
17 }
18 }
19
20 // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
21
22 // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_thread_begin:
23 // CHECK-SAME: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID]]
24 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_thread_end:
25 // CHECK-SAME: thread_id=[[MASTER_ID]]
26 // CHECK: {{^}}[[WORKER_ID1:[0-9]+]]: ompt_event_thread_begin:
27 // CHECK-SAME: thread_type=ompt_thread_worker=2, thread_id=[[WORKER_ID1]]
28 // CHECK: {{^}}[[WORKER_ID1]]: ompt_event_thread_end:
29 // CHECK-SAME: thread_id=[[WORKER_ID1]]
30 // CHECK: {{^}}[[WORKER_ID2:[0-9]+]]: ompt_event_thread_begin:
31 // CHECK-SAME: thread_type=ompt_thread_worker=2, thread_id=[[WORKER_ID2]]
32 // CHECK: {{^}}[[WORKER_ID2]]: ompt_event_thread_end:
33 // CHECK-SAME: thread_id=[[WORKER_ID2]]
34 // CHECK: {{^}}[[WORKER_ID3:[0-9]+]]: ompt_event_thread_begin:
35 // CHECK-SAME: thread_type=ompt_thread_worker=2, thread_id=[[WORKER_ID3]]
36 // CHECK: {{^}}[[WORKER_ID3]]: ompt_event_thread_end:
37 // CHECK-SAME: thread_id=[[WORKER_ID3]]
38
39 return 0;
40}
41

source code of openmp/runtime/test/ompt/misc/threads_nested.c