1 // RUN: %libomp-compile-and-run 2 #include <stdio.h> 3 #include "omp_testsuite.h" 4 5 /* 6 * Test if the compiler supports nested parallelism 7 * By Chunhua Liao, University of Houston 8 * Oct. 2005 9 */ 10 int test_omp_nested() 11 { 12 #ifdef _OPENMP 13 if (omp_get_max_threads() > 4) 14 omp_set_num_threads(4); 15 if (omp_get_max_threads() < 2) 16 omp_set_num_threads(2); 17 #endif 18 19 int counter = 0; 20 #ifdef _OPENMP 21 omp_set_nested(1); 22 #endif 23 24 #pragma omp parallel shared(counter) 25 { 26 #pragma omp critical 27 counter++; 28 #pragma omp parallel 29 { 30 #pragma omp critical 31 counter--; 32 } 33 } 34 return (counter != 0); 35 } 36 37 int main() 38 { 39 int i; 40 int num_failed=0; 41 42 for(i = 0; i < REPETITIONS; i++) { 43 if(!test_omp_nested()) { 44 num_failed++; 45 } 46 } 47 return num_failed; 48 } 49