1*404b540aSrobert #include <omp.h>
2*404b540aSrobert #include <stdlib.h>
3*404b540aSrobert 
4*404b540aSrobert int
main(void)5*404b540aSrobert main (void)
6*404b540aSrobert {
7*404b540aSrobert   int i = -1, j = -1;
8*404b540aSrobert 
9*404b540aSrobert   omp_set_nested (0);
10*404b540aSrobert   omp_set_dynamic (0);
11*404b540aSrobert #pragma omp parallel num_threads (4)
12*404b540aSrobert   {
13*404b540aSrobert #pragma omp single
14*404b540aSrobert     {
15*404b540aSrobert       i = omp_get_thread_num () + omp_get_num_threads () * 256;
16*404b540aSrobert #pragma omp parallel num_threads (2)
17*404b540aSrobert       {
18*404b540aSrobert #pragma omp single
19*404b540aSrobert         {
20*404b540aSrobert           j = omp_get_thread_num () + omp_get_num_threads () * 256;
21*404b540aSrobert         }
22*404b540aSrobert       }
23*404b540aSrobert     }
24*404b540aSrobert   }
25*404b540aSrobert   if (i < 4 * 256 || i >= 4 * 256 + 4)
26*404b540aSrobert     abort ();
27*404b540aSrobert   if (j != 256 + 0)
28*404b540aSrobert     abort ();
29*404b540aSrobert   return 0;
30*404b540aSrobert }
31