40 lines
892 B
C
40 lines
892 B
C
![]() |
#ifdef __cplusplus
|
||
|
extern "C"
|
||
|
#endif
|
||
|
void abort (void);
|
||
|
|
||
|
int
|
||
|
main ()
|
||
|
{
|
||
|
int a[64], b = 1;
|
||
|
#pragma omp parallel num_threads (4)
|
||
|
#pragma omp single
|
||
|
{
|
||
|
int i;
|
||
|
#pragma omp taskwait depend(in: a) nowait
|
||
|
#pragma omp taskwait depend(in: a) nowait
|
||
|
#pragma omp taskwait
|
||
|
#pragma omp taskgroup
|
||
|
{
|
||
|
#pragma omp taskwait depend(in: a) nowait
|
||
|
#pragma omp taskwait depend(in: a) nowait
|
||
|
}
|
||
|
for (i = 0; i < 64; ++i)
|
||
|
#pragma omp task depend(in: a) shared(a)
|
||
|
a[i] = i;
|
||
|
#pragma omp taskwait depend(inout: a) nowait
|
||
|
for (i = 0; i < 64; ++i)
|
||
|
#pragma omp task depend(inoutset: a) shared(a)
|
||
|
if (a[i] != i)
|
||
|
abort ();
|
||
|
else
|
||
|
a[i] = 2 * i + 1;
|
||
|
#pragma omp taskwait nowait depend(out: a) depend(in: b)
|
||
|
#pragma omp taskwait depend(inout: b)
|
||
|
for (i = 0; i < 64; ++i)
|
||
|
if (a[i] != 2 * i + 1)
|
||
|
abort ();
|
||
|
}
|
||
|
return 0;
|
||
|
}
|