1*1099498eSVignesh Balasubramanian // RUN: %gdb-compile 2>&1 | tee %t.compile 2*1099498eSVignesh Balasubramanian // RUN: env OMP_SCHEDULE=guided,10 %gdb-run 2>&1 | tee %t.out | FileCheck %s 3*1099498eSVignesh Balasubramanian 4*1099498eSVignesh Balasubramanian #include "../ompt_plugin.h" 5*1099498eSVignesh Balasubramanian #include <omp.h> 6*1099498eSVignesh Balasubramanian #include <stdio.h> 7*1099498eSVignesh Balasubramanian #include <unistd.h> 8*1099498eSVignesh Balasubramanian main()9*1099498eSVignesh Balasubramanianint main() { 10*1099498eSVignesh Balasubramanian printf("Application: Process %d started.\n", getpid()); 11*1099498eSVignesh Balasubramanian 12*1099498eSVignesh Balasubramanian int i; 13*1099498eSVignesh Balasubramanian omp_set_num_threads(3); 14*1099498eSVignesh Balasubramanian omp_set_max_active_levels(10); 15*1099498eSVignesh Balasubramanian 16*1099498eSVignesh Balasubramanian #pragma omp parallel // parallel region begins 17*1099498eSVignesh Balasubramanian { 18*1099498eSVignesh Balasubramanian printf("outer parallel region Thread ID == %d\n", omp_get_thread_num()); 19*1099498eSVignesh Balasubramanian /* Code for work to be done by outer parallel region threads over here. */ 20*1099498eSVignesh Balasubramanian 21*1099498eSVignesh Balasubramanian if (omp_get_thread_num() == 2) 22*1099498eSVignesh Balasubramanian sleep(1); 23*1099498eSVignesh Balasubramanian 24*1099498eSVignesh Balasubramanian #pragma omp parallel num_threads(2) // nested parallel region 25*1099498eSVignesh Balasubramanian { 26*1099498eSVignesh Balasubramanian /* Code for work to be done by inner parallel region threads over here. */ 27*1099498eSVignesh Balasubramanian printf("inner parallel region thread id %d\n", omp_get_thread_num()); 28*1099498eSVignesh Balasubramanian 29*1099498eSVignesh Balasubramanian // if (omp_get_thread_num() == 1) sleep(1000); 30*1099498eSVignesh Balasubramanian 31*1099498eSVignesh Balasubramanian #pragma omp parallel num_threads(2) // 32*1099498eSVignesh Balasubramanian { 33*1099498eSVignesh Balasubramanian 34*1099498eSVignesh Balasubramanian #pragma omp for 35*1099498eSVignesh Balasubramanian for (i = 0; i < 20; i++) { 36*1099498eSVignesh Balasubramanian // Some independent iterative computation to be done. 37*1099498eSVignesh Balasubramanian printf(""); 38*1099498eSVignesh Balasubramanian ompd_tool_test(0); 39*1099498eSVignesh Balasubramanian } 40*1099498eSVignesh Balasubramanian } 41*1099498eSVignesh Balasubramanian } 42*1099498eSVignesh Balasubramanian } 43*1099498eSVignesh Balasubramanian 44*1099498eSVignesh Balasubramanian // sleep(1000); 45*1099498eSVignesh Balasubramanian 46*1099498eSVignesh Balasubramanian return 0; 47*1099498eSVignesh Balasubramanian } 48*1099498eSVignesh Balasubramanian 49*1099498eSVignesh Balasubramanian // CHECK-NOT: OMPT-OMPD mismatch 50*1099498eSVignesh Balasubramanian // CHECK-NOT: Python Exception 51*1099498eSVignesh Balasubramanian // CHECK-NOT: The program is not being run. 52