a.15.1.c 600 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /* { dg-do run } */
  2. /* { dg-additional-options "-Wno-deprecated-declarations" } */
  3. #include <omp.h>
  4. #include <stdio.h>
  5. void
  6. work (int n)
  7. {
  8. printf ("[%d of %d], nested = %d, n = %d\n", omp_get_thread_num (), omp_get_num_threads(), omp_get_nested (), n);
  9. }
  10. void
  11. sub3 (int n)
  12. {
  13. work (n);
  14. #pragma omp barrier
  15. work (n);
  16. }
  17. void
  18. sub2 (int k)
  19. {
  20. #pragma omp parallel shared(k)
  21. sub3 (k);
  22. }
  23. void
  24. sub1 (int n)
  25. {
  26. int i;
  27. #pragma omp parallel private(i) shared(n)
  28. {
  29. #pragma omp for
  30. for (i = 0; i < n; i++)
  31. sub2 (i);
  32. }
  33. }
  34. int
  35. main ()
  36. {
  37. sub1 (2);
  38. sub2 (15);
  39. sub3 (20);
  40. return 0;
  41. }