omp-parallel-if.c 541 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <omp.h>
  2. extern void abort (void);
  3. int
  4. foo (void)
  5. {
  6. return 10;
  7. }
  8. int
  9. main ()
  10. {
  11. int A = 0;
  12. #pragma omp parallel if (foo () > 10) shared (A)
  13. {
  14. A = omp_get_num_threads ();
  15. }
  16. if (A != 1)
  17. abort ();
  18. #pragma omp parallel if (foo () == 10) num_threads (3) shared (A)
  19. {
  20. A = omp_get_num_threads ();
  21. }
  22. if (A != 3)
  23. abort ();
  24. #pragma omp parallel if (foo () == 10) num_threads (foo ()) shared (A)
  25. {
  26. A = omp_get_num_threads ();
  27. }
  28. if (A != 10)
  29. abort ();
  30. return 0;
  31. }