115 lines
3.3 KiB
C
115 lines
3.3 KiB
C
extern
|
|
#ifdef __cplusplus
|
|
"C"
|
|
#endif
|
|
void abort (void);
|
|
|
|
unsigned long long int k = 16;
|
|
#pragma omp declare target to (k)
|
|
|
|
int
|
|
main ()
|
|
{
|
|
unsigned char a[144], b[144], c[144];
|
|
int l;
|
|
#pragma omp target map(from:a, b, c)
|
|
{
|
|
int i;
|
|
unsigned long long int j;
|
|
#pragma omp parallel for schedule (runtime)
|
|
for (i = 0; i < 16; i++)
|
|
a[i] = i;
|
|
#pragma omp parallel for schedule (monotonic: runtime)
|
|
for (i = 0; i < 16; i++)
|
|
a[i + 16] = i + 16;
|
|
#pragma omp parallel for schedule (nonmonotonic: runtime)
|
|
for (i = 0; i < 16; i++)
|
|
a[i + 32] = i + 32;
|
|
#pragma omp parallel
|
|
{
|
|
#pragma omp for schedule (runtime)
|
|
for (i = 0; i < 16; i++)
|
|
a[i + 48] = i + 48;
|
|
#pragma omp for schedule (monotonic: runtime)
|
|
for (i = 0; i < 16; i++)
|
|
a[i + 64] = i + 64;
|
|
#pragma omp for schedule (nonmonotonic: runtime)
|
|
for (i = 0; i < 16; i++)
|
|
a[i + 80] = i + 80;
|
|
#pragma omp for schedule (runtime)
|
|
for (j = 0; j < k; j++)
|
|
a[j + 96] = j + 96;
|
|
#pragma omp for schedule (monotonic: runtime)
|
|
for (j = 0; j < k; j++)
|
|
a[j + 112] = j + 112;
|
|
#pragma omp for schedule (nonmonotonic: runtime)
|
|
for (j = 0; j < k; j++)
|
|
a[j + 128] = j + 128;
|
|
}
|
|
#pragma omp parallel for schedule (dynamic)
|
|
for (i = 0; i < 16; i++)
|
|
b[i] = i;
|
|
#pragma omp parallel for schedule (monotonic: dynamic)
|
|
for (i = 0; i < 16; i++)
|
|
b[i + 16] = i + 16;
|
|
#pragma omp parallel for schedule (nonmonotonic: dynamic)
|
|
for (i = 0; i < 16; i++)
|
|
b[i + 32] = i + 32;
|
|
#pragma omp parallel
|
|
{
|
|
#pragma omp for schedule (dynamic)
|
|
for (i = 0; i < 16; i++)
|
|
b[i + 48] = i + 48;
|
|
#pragma omp for schedule (monotonic: dynamic)
|
|
for (i = 0; i < 16; i++)
|
|
b[i + 64] = i + 64;
|
|
#pragma omp for schedule (nonmonotonic: dynamic)
|
|
for (i = 0; i < 16; i++)
|
|
b[i + 80] = i + 80;
|
|
#pragma omp for schedule (dynamic)
|
|
for (j = 0; j < k; j++)
|
|
b[j + 96] = j + 96;
|
|
#pragma omp for schedule (monotonic: dynamic)
|
|
for (j = 0; j < k; j++)
|
|
b[j + 112] = j + 112;
|
|
#pragma omp for schedule (nonmonotonic: dynamic)
|
|
for (j = 0; j < k; j++)
|
|
b[j + 128] = j + 128;
|
|
}
|
|
#pragma omp parallel for schedule (guided)
|
|
for (i = 0; i < 16; i++)
|
|
c[i] = i;
|
|
#pragma omp parallel for schedule (monotonic: guided)
|
|
for (i = 0; i < 16; i++)
|
|
c[i + 16] = i + 16;
|
|
#pragma omp parallel for schedule (nonmonotonic: guided)
|
|
for (i = 0; i < 16; i++)
|
|
c[i + 32] = i + 32;
|
|
#pragma omp parallel
|
|
{
|
|
#pragma omp for schedule (guided)
|
|
for (i = 0; i < 16; i++)
|
|
c[i + 48] = i + 48;
|
|
#pragma omp for schedule (monotonic: guided)
|
|
for (i = 0; i < 16; i++)
|
|
c[i + 64] = i + 64;
|
|
#pragma omp for schedule (nonmonotonic: guided)
|
|
for (i = 0; i < 16; i++)
|
|
c[i + 80] = i + 80;
|
|
#pragma omp for schedule (guided)
|
|
for (j = 0; j < k; j++)
|
|
c[j + 96] = j + 96;
|
|
#pragma omp for schedule (monotonic: guided)
|
|
for (j = 0; j < k; j++)
|
|
c[j + 112] = j + 112;
|
|
#pragma omp for schedule (nonmonotonic: guided)
|
|
for (j = 0; j < k; j++)
|
|
c[j + 128] = j + 128;
|
|
}
|
|
}
|
|
for (l = 0; l < 144; ++l)
|
|
if (a[l] != l || b[l] != l || c[l] != l)
|
|
abort ();
|
|
return 0;
|
|
}
|