|
|
|
|
@ -0,0 +1,458 @@
|
|
|
|
|
/* PR middle-end/61486 */
|
|
|
|
|
/* { dg-do compile } */
|
|
|
|
|
/* { dg-options "-fopenmp" } */
|
|
|
|
|
|
|
|
|
|
#pragma omp declare target
|
|
|
|
|
void dosomething (int *a, int n, int m);
|
|
|
|
|
#pragma omp end declare target
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
test (int n, int o, int p, int q, int r, int s, int *pp)
|
|
|
|
|
{
|
|
|
|
|
int a[o], i, j;
|
|
|
|
|
#pragma omp target data device (n + 1) if (n != 6) map (tofrom: n, r)
|
|
|
|
|
{
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6) map (from: n) map (alloc: a[2:o-2])
|
|
|
|
|
dosomething (a, n, 0);
|
|
|
|
|
#pragma omp target teams device (n + 1) num_teams (n + 4) thread_limit (n * 2) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute device (n + 1) num_teams (n + 4) collapse (2) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute device (n + 1) num_teams (n + 4) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute parallel for device (n + 1) num_teams (n + 4) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute parallel for device (n + 1) num_teams (n + 4) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute parallel for simd device (n + 1) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
schedule (static, 8) num_teams (n + 4) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute parallel for simd device (n + 1) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) schedule (static, 8) \
|
|
|
|
|
num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute simd device (n + 1) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
|
|
|
|
|
lastprivate (s) num_teams (n + 4) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams distribute simd device (n + 1) \
|
|
|
|
|
if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) \
|
|
|
|
|
num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams num_teams (n + 4) thread_limit (n * 2) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute num_teams (n + 4) collapse (2) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute num_teams (n + 4) default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute parallel for num_teams (n + 4) if (n != 6) \
|
|
|
|
|
default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute parallel for num_teams (n + 4) if (n != 6) \
|
|
|
|
|
default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
schedule (static, 8) num_teams (n + 4) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) schedule (static, 8) \
|
|
|
|
|
num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute simd default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
|
|
|
|
|
lastprivate (s) num_teams (n + 4) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
|
|
|
|
|
#pragma omp teams distribute simd default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) \
|
|
|
|
|
num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2)default(shared) shared(n) \
|
|
|
|
|
private (p) reduction (+: r)
|
|
|
|
|
#pragma omp distribute collapse (2) dist_schedule (static, 4) firstprivate (q)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2) shared(n) private(p) reduction (+ : r) \
|
|
|
|
|
default(shared)
|
|
|
|
|
#pragma omp distribute dist_schedule (static, 4) firstprivate (q)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2)
|
|
|
|
|
#pragma omp distribute parallel for if (n != 6) \
|
|
|
|
|
default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
collapse (2) dist_schedule (static, 4) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2)
|
|
|
|
|
#pragma omp distribute parallel for if (n != 6) \
|
|
|
|
|
default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
num_threads (n + 4) dist_schedule (static, 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2)
|
|
|
|
|
#pragma omp distribute parallel for simd if (n != 6)default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
collapse (2) dist_schedule (static, 4) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
schedule (static, 8) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2)
|
|
|
|
|
#pragma omp distribute parallel for simd if (n != 6)default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
num_threads (n + 4) dist_schedule (static, 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) schedule (static, 8) \
|
|
|
|
|
safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2) default(shared) shared(n) private(p) \
|
|
|
|
|
reduction(+:r)
|
|
|
|
|
#pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
|
|
|
|
|
collapse (2) dist_schedule (static, 4) lastprivate (s) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
|
|
|
|
|
num_teams (n + 4) thread_limit (n * 2) default(shared) shared(n) private(p) \
|
|
|
|
|
reduction(+:r)
|
|
|
|
|
#pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
|
|
|
|
|
lastprivate (s) dist_schedule (static, 4) safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int q, i, j;
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
test2 (int n, int o, int p, int r, int s, int *pp)
|
|
|
|
|
{
|
|
|
|
|
int a[o];
|
|
|
|
|
#pragma omp distribute collapse (2) dist_schedule (static, 4) firstprivate (q)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute dist_schedule (static, 4) firstprivate (q)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute parallel for if (n != 6) \
|
|
|
|
|
default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
collapse (2) dist_schedule (static, 4) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute parallel for if (n != 6) \
|
|
|
|
|
default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
num_threads (n + 4) dist_schedule (static, 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) ordered schedule (static, 8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
dosomething (a, n, p + q);
|
|
|
|
|
}
|
|
|
|
|
#pragma omp ordered
|
|
|
|
|
p = q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute parallel for simd if (n != 6)default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
collapse (2) dist_schedule (static, 4) \
|
|
|
|
|
num_threads (n + 4) proc_bind (spread) lastprivate (s) \
|
|
|
|
|
schedule (static, 8) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute parallel for simd if (n != 6)default(shared) \
|
|
|
|
|
private (p) firstprivate (q) shared (n) reduction (+: r) \
|
|
|
|
|
num_threads (n + 4) dist_schedule (static, 4) \
|
|
|
|
|
proc_bind (master) lastprivate (s) schedule (static, 8) \
|
|
|
|
|
safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
|
|
|
|
|
collapse (2) dist_schedule (static, 4) lastprivate (s) safelen(8)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
for (j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i*10+j] = p + q;
|
|
|
|
|
s = i * 10 + j;
|
|
|
|
|
}
|
|
|
|
|
#pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
|
|
|
|
|
lastprivate (s) dist_schedule (static, 4) safelen(16) linear(i:1) aligned (pp:4)
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
|
|
|
|
r = r + 1;
|
|
|
|
|
p = q;
|
|
|
|
|
a[2+i] = p + q;
|
|
|
|
|
s = i * 10;
|
|
|
|
|
}
|
|
|
|
|
}
|