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