123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <stdlib.h>
- #include <omp.h>
- void
- dep (void)
- {
- int x = 1;
- omp_depend_t d1, d2;
- #pragma omp depobj (d1) depend(in: x)
- #pragma omp depobj (d2) depend(in: x)
- #pragma omp depobj (d2) update(out)
- #pragma omp parallel
- #pragma omp single
- {
- #pragma omp task shared (x) depend(depobj: d2)
- x = 2;
- #pragma omp task shared (x) depend(depobj: d1)
- if (x != 2)
- abort ();
- }
- #pragma omp depobj (d2) destroy
- #pragma omp depobj (d1) destroy
- }
- void
- dep2 (void)
- {
- #pragma omp parallel
- #pragma omp single
- {
- int x = 1;
- omp_depend_t d1, d2;
- #pragma omp depobj (d1) depend(out: x)
- #pragma omp depobj (*&d2) depend (in:x)
- #pragma omp depobj(d2)update(in)
- #pragma omp task shared (x) depend(depobj:d1)
- x = 2;
- #pragma omp task shared (x) depend(depobj : d2)
- if (x != 2)
- abort ();
- #pragma omp taskwait
- #pragma omp depobj(d1)destroy
- #pragma omp depobj((&d2)[0]) destroy
- }
- }
- void
- dep3 (void)
- {
- omp_depend_t d[2];
- #pragma omp parallel
- {
- int x = 1;
- #pragma omp single
- {
- #pragma omp depobj(d[0]) depend(out:x)
- #pragma omp depobj(d[1]) depend(in: x)
- #pragma omp task shared (x) depend(depobj: *d)
- x = 2;
- #pragma omp task shared (x) depend(depobj: *(d + 1))
- if (x != 2)
- abort ();
- }
- }
- #pragma omp depobj(d[0]) destroy
- #pragma omp depobj(d[1]) destroy
- }
- int xx;
- omp_depend_t dd1, dd2;
- void
- antidep (void)
- {
- xx = 1;
- #pragma omp parallel
- #pragma omp single
- {
- #pragma omp task shared(xx) depend(depobj:dd2)
- if (xx != 1)
- abort ();
- #pragma omp task shared(xx) depend(depobj:dd1)
- xx = 2;
- }
- }
- int
- main ()
- {
- dep ();
- dep2 ();
- dep3 ();
- #pragma omp depobj (dd1) depend (inout: xx)
- #pragma omp depobj (dd2) depend (in : xx)
- antidep ();
- #pragma omp depobj (dd2) destroy
- #pragma omp depobj (dd1) destroy
- return 0;
- }
|