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 */ test_omp_nested()10int 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 omp_set_max_active_levels(omp_get_supported_active_levels()); 23 #endif 24 25 #pragma omp parallel shared(counter) 26 { 27 #pragma omp critical 28 counter++; 29 #pragma omp parallel 30 { 31 #pragma omp critical 32 counter--; 33 } 34 } 35 return (counter != 0); 36 } 37 main()38int main() 39 { 40 int i; 41 int num_failed=0; 42 43 for(i = 0; i < REPETITIONS; i++) { 44 if(!test_omp_nested()) { 45 num_failed++; 46 } 47 } 48 return num_failed; 49 } 50