xref: /llvm-project/openmp/libompd/test/openmp_examples/example_4.c (revision 1099498e3f35b2ad4b021ba3888b590259124e74)
1 // RUN: %gdb-compile-and-run 2>&1 | tee %t.out | FileCheck %s
2 
3 #include "../ompt_plugin.h"
4 #include <omp.h>
5 #include <pthread.h>
6 #include <stdio.h>
7 #include <unistd.h>
8 
main()9 int main() {
10   printf("Application: Process %d started.\n", getpid());
11   omp_set_num_threads(3);
12   omp_set_max_active_levels(10);
13 
14 #pragma omp parallel // parallel region begins
15   {
16     printf("Outer region - thread_ID: %d\n", omp_get_thread_num());
17 
18 #pragma omp parallel num_threads(2) // nested parallel region 1
19     {
20       printf("Inner region - thread_ID: %d\n", omp_get_thread_num());
21 
22 #pragma omp parallel num_threads(2) // nested parallel region 2
23       {
24         int i;
25 #pragma omp for
26         for (i = 0; i < 4; i++)
27           printf("Thread %i of %i working on %i\n", omp_get_thread_num(),
28                  omp_get_max_threads(), i);
29         ompd_tool_test(0);
30       }
31     }
32   }
33 
34   return 0;
35 }
36 
37 // CHECK-NOT: OMPT-OMPD mismatch
38 // CHECK-NOT: Python Exception
39 // CHECK-NOT: The program is not being run.
40