Enhance OpenACC 'kernels' decomposition testing
gcc/testsuite/ * c-c++-common/goacc/kernels-decompose-1.c: Enhance. * c-c++-common/goacc/kernels-decompose-2.c: Likewise. * c-c++-common/goacc/kernels-decompose-ice-1.c: Likewise. * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise. * gfortran.dg/goacc/kernels-decompose-1.f95: Likewise. * gfortran.dg/goacc/kernels-decompose-2.f95: Likewise. libgomp/ * testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c: Enhance. * testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/declare-vla.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/f-asyncwait-1.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/f-asyncwait-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/f-asyncwait-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c: Likewise. * testsuite/libgomp.oacc-fortran/asyncwait-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/asyncwait-2.f90: Likewise. * testsuite/libgomp.oacc-fortran/asyncwait-3.f90: Likewise. * testsuite/libgomp.oacc-fortran/pr94358-1.f90: Likewise.
This commit is contained in:
parent
ff496134a9
commit
862e5f398b
17 changed files with 593 additions and 153 deletions
|
@ -1,10 +1,16 @@
|
|||
/* Test OpenACC 'kernels' construct decomposition. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" } */
|
||||
|
||||
/* { dg-additional-options "-fdump-tree-gimple" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-kernels=decompose" }
|
||||
{ dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
/* { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting
|
||||
aspects of that functionality. */
|
||||
|
||||
|
@ -14,7 +20,7 @@
|
|||
passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
so to maintain compatibility with earlier Tcl releases, we manually
|
||||
initialize counter variables:
|
||||
{ dg-line l_dummy[variable c_loop_i 0] }
|
||||
{ dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
{ dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
"WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
|
@ -28,36 +34,43 @@ main (void)
|
|||
int i;
|
||||
unsigned int sum = 1;
|
||||
|
||||
#pragma acc kernels copyin(a[0:N]) copy(sum)
|
||||
/* { dg-bogus "optimized: assigned OpenACC seq loop parallelism" "TODO" { xfail *-*-* } .-1 }
|
||||
#pragma acc kernels copyin(a[0:N]) copy(sum) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'sum\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-bogus {optimized: assigned OpenACC seq loop parallelism} TODO { xfail *-*-* } l_compute$c_compute }
|
||||
TODO Is this maybe the report that belongs to the XFAILed report further down? */
|
||||
{
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (i = 0; i < N; ++i)
|
||||
sum += a[i];
|
||||
|
||||
sum++; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
sum++;
|
||||
a[0]++;
|
||||
|
||||
#pragma acc loop independent /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (i = 0; i < N; ++i)
|
||||
sum += a[i];
|
||||
|
||||
if (sum > 10) /* { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
if (sum > 10)
|
||||
{
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-missed "unparallelized loop nest in OpenACC 'kernels' region: it's executed conditionally" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/*TODO { dg-optimized "assigned OpenACC seq loop parallelism" "TODO" { xfail *-*-* } l_loop_i$c_loop_i } */
|
||||
for (i = 0; i < N; ++i)
|
||||
sum += a[i];
|
||||
}
|
||||
|
||||
#pragma acc loop auto /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (i = 0; i < N; ++i)
|
||||
sum += a[i];
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
/* Test OpenACC 'kernels' construct decomposition. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-kernels=decompose" }
|
||||
/* { dg-additional-options "-O2" } for 'parloops'. */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
/* { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting
|
||||
aspects of that functionality. */
|
||||
|
||||
|
@ -13,7 +18,7 @@
|
|||
passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
so to maintain compatibility with earlier Tcl releases, we manually
|
||||
initialize counter variables:
|
||||
{ dg-line l_dummy[variable c_loop_i 0 c_loop_j 0 c_loop_k 0 c_part 0] }
|
||||
{ dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0 c_part 0] }
|
||||
{ dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
"WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
|
@ -40,9 +45,11 @@ main ()
|
|||
#define N 10
|
||||
int a[N], b[N], c[N];
|
||||
|
||||
#pragma acc kernels
|
||||
#pragma acc kernels /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'x\.0' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */
|
||||
{
|
||||
x = 0; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
x = 0;
|
||||
y = x < 10;
|
||||
z = x++;
|
||||
;
|
||||
|
@ -50,13 +57,17 @@ main ()
|
|||
|
||||
{ /*TODO Instead of using 'for (int i = 0; [...])', move 'int i' outside, to work around for ICE detailed in 'kernels-decompose-ice-1.c'. */
|
||||
int i;
|
||||
#pragma acc kernels /* { dg-optimized "assigned OpenACC gang loop parallelism" } */
|
||||
for (i = 0; i < N; i++) /* { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" } */
|
||||
#pragma acc kernels /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-optimized {assigned OpenACC gang loop parallelism} {} { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
for (i = 0; i < N; i++)
|
||||
a[i] = 0;
|
||||
}
|
||||
|
||||
#pragma acc kernels loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; i++)
|
||||
b[i] = a[N - i - 1];
|
||||
|
@ -64,44 +75,60 @@ main ()
|
|||
#pragma acc kernels
|
||||
{
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; i++)
|
||||
b[i] = a[N - i - 1];
|
||||
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; i++)
|
||||
c[i] = a[i] * b[i];
|
||||
|
||||
a[z] = 0; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
a[z] = 0;
|
||||
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; i++)
|
||||
c[i] += a[i];
|
||||
|
||||
#pragma acc loop seq /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0 + 1; i < N; i++)
|
||||
c[i] += c[i - 1];
|
||||
}
|
||||
|
||||
#pragma acc kernels
|
||||
#pragma acc kernels /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */
|
||||
/*TODO What does this mean?
|
||||
TODO { dg-optimized "assigned OpenACC worker vector loop parallelism" "" { target *-*-* } .-2 } */
|
||||
TODO { dg-optimized "assigned OpenACC worker vector loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
{
|
||||
#pragma acc loop independent /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
#pragma acc loop independent /* { dg-line l_loop_j[incr c_loop_j] } */
|
||||
/* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-optimized "assigned OpenACC worker loop parallelism" "" { target *-*-* } l_loop_j$c_loop_j } */
|
||||
for (int j = 0; j < N; ++j)
|
||||
#pragma acc loop independent /* { dg-line l_loop_k[incr c_loop_k] } */
|
||||
/* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */
|
||||
/* { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } l_loop_k$c_loop_k } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_k$c_loop_k } */
|
||||
for (int k = 0; k < N; ++k)
|
||||
|
@ -111,23 +138,27 @@ main ()
|
|||
|
||||
/*TODO Should the following turn into "gang-single" instead of "parloops"?
|
||||
TODO The problem is that the first STMT is 'if (y <= 4) goto <D.2547>; else goto <D.2548>;', thus "parloops". */
|
||||
if (y < 5) /* { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
if (y < 5)
|
||||
#pragma acc loop independent /* { dg-line l_loop_j[incr c_loop_j] } */
|
||||
/* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-missed "unparallelized loop nest in OpenACC 'kernels' region: it's executed conditionally" "" { target *-*-* } l_loop_j$c_loop_j } */
|
||||
for (int j = 0; j < N; ++j)
|
||||
b[j] = f_w (c[j]);
|
||||
}
|
||||
|
||||
#pragma acc kernels
|
||||
/* { dg-bogus "warning: region contains gang partitioned code but is not gang partitioned" "TODO 'kernels'" { xfail *-*-* } .-1 } */
|
||||
#pragma acc kernels /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-bogus "warning: region contains gang partitioned code but is not gang partitioned" "TODO 'kernels'" { xfail *-*-* } l_compute$c_compute } */
|
||||
{
|
||||
y = f_g (a[5]); /* { dg-line l_part[incr c_part] } */
|
||||
/*TODO If such a construct is placed in its own part (like it is, here), can't this actually use gang paralelism, instead of "gang-single"?
|
||||
{ dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" "" { target *-*-* } l_part$c_part } */
|
||||
{ dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } l_part$c_part } */
|
||||
/* { dg-optimized "assigned OpenACC gang worker vector loop parallelism" "" { target *-*-* } l_part$c_part } */
|
||||
|
||||
#pragma acc loop independent /* { dg-line l_loop_j[incr c_loop_j] } */
|
||||
/* { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-optimized "assigned OpenACC gang loop parallelism" "" { target *-*-* } l_loop_j$c_loop_j } */
|
||||
for (int j = 0; j < N; ++j)
|
||||
b[j] = y + f_w (c[j]); /* { dg-optimized "assigned OpenACC worker vector loop parallelism" } */
|
||||
|
@ -135,18 +166,23 @@ main ()
|
|||
|
||||
#pragma acc kernels
|
||||
{
|
||||
y = 3; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
y = 3;
|
||||
|
||||
#pragma acc loop independent /* { dg-line l_loop_j[incr c_loop_j] } */
|
||||
/* { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */
|
||||
/* { dg-optimized "assigned OpenACC gang worker loop parallelism" "" { target *-*-* } l_loop_j$c_loop_j } */
|
||||
for (int j = 0; j < N; ++j)
|
||||
b[j] = y + f_v (c[j]); /* { dg-optimized "assigned OpenACC vector loop parallelism" } */
|
||||
|
||||
z = 2; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
z = 2;
|
||||
}
|
||||
|
||||
#pragma acc kernels /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
#pragma acc kernels
|
||||
;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
/* Test OpenACC 'kernels' construct decomposition. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" } */
|
||||
|
||||
/* { dg-additional-options "-fchecking --param=openacc-kernels=decompose" } */
|
||||
/* { dg-ice "TODO" }
|
||||
{ dg-prune-output "during GIMPLE pass: omplower" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" } */
|
||||
|
||||
/* Reduced from 'kernels-decompose-2.c'.
|
||||
(Hopefully) similar instances:
|
||||
- 'kernels-decompose-ice-2.c'
|
||||
|
@ -18,7 +21,9 @@ main ()
|
|||
#define N 10
|
||||
|
||||
#pragma acc kernels
|
||||
for (int i = 0; i < N; i++) /* { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } .-1 } */
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
for (int i = 0; i < N; i++)
|
||||
;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,15 +1,21 @@
|
|||
/* Test OpenACC 'kernels' construct decomposition. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" } */
|
||||
|
||||
/* { dg-additional-options "-fchecking --param=openacc-kernels=decompose" } */
|
||||
/* { dg-ice "TODO" }
|
||||
{ dg-prune-output "during GIMPLE pass: omplower" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" } */
|
||||
|
||||
/* Reduced from 'kernels-decompose-ice-1.c'. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
#pragma acc kernels
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .-1 } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } .-2 } */
|
||||
{
|
||||
int i;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
! Test OpenACC 'kernels' construct decomposition.
|
||||
|
||||
! { dg-additional-options "-fopt-info-omp-all" }
|
||||
|
||||
! { dg-additional-options "-fdump-tree-gimple" }
|
||||
|
||||
! { dg-additional-options "--param=openacc-kernels=decompose" }
|
||||
! { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" }
|
||||
|
||||
! { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
! Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} }
|
||||
|
||||
! { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting
|
||||
! aspects of that functionality.
|
||||
|
||||
|
@ -14,7 +20,7 @@
|
|||
! passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
! so to maintain compatibility with earlier Tcl releases, we manually
|
||||
! initialize counter variables:
|
||||
! { dg-line l_dummy[variable c_loop_i 0] }
|
||||
! { dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
! "WARNING: dg-line var l_dummy defined, but not used".
|
||||
|
||||
|
@ -24,30 +30,36 @@ program main
|
|||
integer, dimension (1:N) :: a
|
||||
integer :: i, sum
|
||||
|
||||
!$acc kernels copyin(a(1:N)) copy(sum)
|
||||
! { dg-bogus "optimized: assigned OpenACC seq loop parallelism" "TODO" { xfail *-*-* } .-1 }
|
||||
!$acc kernels copyin(a(1:N)) copy(sum) ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-note {variable 'sum\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute }
|
||||
! { dg-bogus "optimized: assigned OpenACC seq loop parallelism" "TODO" { xfail *-*-* } l_compute$c_compute }
|
||||
!TODO Is this maybe the report that belongs to the XFAILed report further down? */
|
||||
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
sum = sum + a(i)
|
||||
end do
|
||||
|
||||
sum = sum + 1 ! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
sum = sum + 1
|
||||
a(1) = a(1) + 1
|
||||
|
||||
!$acc loop independent ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
sum = sum + a(i)
|
||||
end do
|
||||
|
||||
if (sum .gt. 10) then ! { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
if (sum .gt. 10) then
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-missed "unparallelized loop nest in OpenACC 'kernels' region: it's executed conditionally" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
!TODO { dg-optimized "assigned OpenACC seq loop parallelism" "TODO" { xfail *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
sum = sum + a(i)
|
||||
|
@ -55,7 +67,8 @@ program main
|
|||
end if
|
||||
|
||||
!$acc loop auto ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
sum = sum + a(i)
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
! Test OpenACC 'kernels' construct decomposition.
|
||||
|
||||
! { dg-additional-options "-fopt-info-omp-all" }
|
||||
|
||||
! { dg-additional-options "--param=openacc-kernels=decompose" }
|
||||
! { dg-additional-options "-O2" } for 'parloops'.
|
||||
|
||||
! { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
! Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} }
|
||||
|
||||
! { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting
|
||||
! aspects of that functionality.
|
||||
|
||||
|
@ -13,7 +18,7 @@
|
|||
! passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
! so to maintain compatibility with earlier Tcl releases, we manually
|
||||
! initialize counter variables:
|
||||
! { dg-line l_dummy[variable c_loop_i 0 c_loop_j 0 c_loop_k 0 c_part 0] }
|
||||
! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0 c_part 0] }
|
||||
! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
! "WARNING: dg-line var l_dummy defined, but not used".
|
||||
|
||||
|
@ -36,7 +41,8 @@ program main
|
|||
integer :: a(N), b(N), c(N)
|
||||
|
||||
!$acc kernels
|
||||
x = 0 ! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
x = 0
|
||||
y = 0
|
||||
y_l = x < 10
|
||||
z = x
|
||||
|
@ -44,14 +50,17 @@ program main
|
|||
;
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels ! { dg-optimized "assigned OpenACC gang loop parallelism" }
|
||||
do i = 1, N ! { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" }
|
||||
!$acc kernels ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-optimized {assigned OpenACC gang loop parallelism} {} { target *-*-* } l_compute$c_compute }
|
||||
! { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
do i = 1, N
|
||||
a(i) = 0
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = a(N - i + 1)
|
||||
|
@ -59,47 +68,55 @@ program main
|
|||
|
||||
!$acc kernels
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = a(N - i + 1)
|
||||
end do
|
||||
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = a(i) * b(i)
|
||||
end do
|
||||
|
||||
a(z) = 0 ! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
a(z) = 0
|
||||
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = c(i) + a(i)
|
||||
end do
|
||||
|
||||
!$acc loop seq ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1 + 1, N
|
||||
c(i) = c(i) + c(i - 1)
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels
|
||||
!$acc kernels ! { dg-line l_compute[incr c_compute] }
|
||||
!TODO What does this mean?
|
||||
!TODO { dg-optimized "assigned OpenACC worker vector loop parallelism" "" { target *-*-* } .-2 }
|
||||
!TODO { dg-optimized "assigned OpenACC worker vector loop parallelism" "" { target *-*-* } l_compute$c_compute }
|
||||
!$acc loop independent ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
!$acc loop independent ! { dg-line l_loop_j[incr c_loop_j] }
|
||||
! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-optimized "assigned OpenACC worker loop parallelism" "" { target *-*-* } l_loop_j$c_loop_j }
|
||||
do j = 1, N
|
||||
!$acc loop independent ! { dg-line l_loop_k[incr c_loop_k] }
|
||||
! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k }
|
||||
! { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } l_loop_k$c_loop_k }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_k$c_loop_k }
|
||||
do k = 1, N
|
||||
|
@ -112,24 +129,27 @@ program main
|
|||
|
||||
!TODO Should the following turn into "gang-single" instead of "parloops"?
|
||||
!TODO The problem is that the first STMT is 'if (y <= 4) goto <D.2547>; else goto <D.2548>;', thus "parloops".
|
||||
if (y < 5) then ! { dg-message "note: beginning 'parloops' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
if (y < 5) then
|
||||
!$acc loop independent ! { dg-line l_loop_j[incr c_loop_j] }
|
||||
! { dg-missed "unparallelized loop nest in OpenACC 'kernels' region: it's executed conditionally" "" { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j }
|
||||
do j = 1, N
|
||||
b(j) = f_w (c(j))
|
||||
end do
|
||||
end if
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels
|
||||
! { dg-bogus "\[Ww\]arning: region contains gang partitioned code but is not gang partitioned" "TODO 'kernels'" { xfail *-*-* } .-1 }
|
||||
!$acc kernels ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-bogus "\[Ww\]arning: region contains gang partitioned code but is not gang partitioned" "TODO 'kernels'" { xfail *-*-* } l_compute$c_compute }
|
||||
y = f_g (a(5)) ! { dg-line l_part[incr c_part] }
|
||||
!TODO If such a construct is placed in its own part (like it is, here), can't this actually use gang paralelism, instead of "gang-single"?
|
||||
! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" "" { target *-*-* } l_part$c_part }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } l_part$c_part }
|
||||
! { dg-optimized "assigned OpenACC gang worker vector loop parallelism" "" { target *-*-* } l_part$c_part }
|
||||
|
||||
!$acc loop independent ! { dg-line l_loop_j[incr c_loop_j] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-optimized "assigned OpenACC gang loop parallelism" "" { target *-*-* } l_loop_j$c_loop_j }
|
||||
do j = 1, N
|
||||
b(j) = y + f_w (c(j)) ! { dg-optimized "assigned OpenACC worker vector loop parallelism" }
|
||||
|
@ -137,18 +157,22 @@ program main
|
|||
!$acc end kernels
|
||||
|
||||
!$acc kernels
|
||||
y = 3 ! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
y = 3
|
||||
|
||||
!$acc loop independent ! { dg-line l_loop_j[incr c_loop_j] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j }
|
||||
! { dg-optimized "assigned OpenACC gang worker loop parallelism" "" { target *-*-* } l_loop_j$c_loop_j }
|
||||
do j = 1, N
|
||||
b(j) = y + f_v (c(j)) ! { dg-optimized "assigned OpenACC vector loop parallelism" }
|
||||
end do
|
||||
|
||||
z = 2 ! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
z = 2
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels ! { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" }
|
||||
! { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
!$acc kernels
|
||||
!$acc end kernels
|
||||
end program main
|
||||
|
|
|
@ -4,5 +4,19 @@
|
|||
TODO { dg-prune-output "during GIMPLE pass: omplower" }
|
||||
TODO { dg-do link } */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
#undef KERNELS_DECOMPOSE_ICE_HACK
|
||||
#include "declare-vla.c"
|
||||
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } 27 } */
|
||||
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } 61 } */
|
||||
|
||||
/* { dg-bogus {note: variable [^\n\r]+ candidate for adjusting OpenACC privatization level} {TODO 'data'} { xfail *-*-* } 42 } */
|
||||
|
|
|
@ -2,5 +2,28 @@
|
|||
|
||||
/* See also 'declare-vla-kernels-decompose-ice-1.c'. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
#define KERNELS_DECOMPOSE_ICE_HACK
|
||||
#include "declare-vla.c"
|
||||
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } 27 } */
|
||||
|
||||
/* { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } 61 } */
|
||||
|
||||
/* { dg-bogus {note: variable [^\n\r]+ candidate for adjusting OpenACC privatization level} {TODO 'data'} { xfail *-*-* } 42 } */
|
||||
|
||||
/* { dg-note {variable 'i\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } 58 }
|
||||
{ dg-note {variable 'N\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } 58 } */
|
||||
|
||||
/* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target { ! __OPTIMIZE__ } } 24 }
|
||||
{ dg-optimized {assigned OpenACC gang loop parallelism} {} { target { __OPTIMIZE__ } } 24 } */
|
||||
|
||||
/* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target { ! __OPTIMIZE__ } } 58 }
|
||||
{ dg-optimized {assigned OpenACC gang loop parallelism} {} { target { __OPTIMIZE__ } } 58 } */
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
/* Verify OpenACC 'declare' with VLAs. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
|
@ -14,6 +22,8 @@ f (void)
|
|||
A[i] = -i;
|
||||
|
||||
#pragma acc kernels
|
||||
/* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target { ! __OPTIMIZE__ } } .-1 }
|
||||
{ dg-optimized {assigned OpenACC gang loop parallelism} {} { target { __OPTIMIZE__ } } .-2 } */
|
||||
for (i = 0; i < N; i++)
|
||||
A[i] = i;
|
||||
|
||||
|
@ -30,6 +40,7 @@ void
|
|||
f_data (void)
|
||||
{
|
||||
#pragma acc data
|
||||
/* { dg-bogus {note: variable [^\n\r]+ candidate for adjusting OpenACC privatization level} {TODO 'data'} { xfail *-*-* } .-1 } */
|
||||
{
|
||||
int N = 1000;
|
||||
int i, A[N];
|
||||
|
@ -45,6 +56,8 @@ f_data (void)
|
|||
#endif
|
||||
|
||||
# pragma acc kernels
|
||||
/* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target { ! __OPTIMIZE__ } } .-1 }
|
||||
{ dg-optimized {assigned OpenACC gang loop parallelism} {} { target { __OPTIMIZE__ } } .-2 } */
|
||||
for (i = 0; i < N; i++)
|
||||
A[i] = i;
|
||||
|
||||
|
@ -65,3 +78,6 @@ main ()
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-note dummy "" { target n-on-e } } to disable 'prune_notes'. */
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
/* Based on asyncwait-1.f90. */
|
||||
/* Based on '../libgomp.oacc-fortran/asyncwait-1.f90'. */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
/* TODO To avoid PR100280 ICE { dg-additional-options "--param=openacc-kernels=parloops" } */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-all-omp" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable '[Di]\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
so to maintain compatibility with earlier Tcl releases, we manually
|
||||
initialize counter variables:
|
||||
{ dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
{ dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
"WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -26,8 +45,11 @@ main (void)
|
|||
#pragma acc data copy (a[0:N]) copy (b[0:N])
|
||||
{
|
||||
|
||||
#pragma acc parallel async
|
||||
#pragma acc loop
|
||||
#pragma acc parallel async /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = a[i];
|
||||
|
||||
|
@ -50,8 +72,11 @@ main (void)
|
|||
|
||||
#pragma acc data copy (a[0:N]) copy (b[0:N])
|
||||
{
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = a[i];
|
||||
|
||||
|
@ -75,17 +100,22 @@ main (void)
|
|||
#pragma acc data copy (a[0:N]) copy (b[0:N]) copy (c[0:N]) copy (d[0:N])
|
||||
{
|
||||
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = (a[i] * a[i] * a[i]) / a[i];
|
||||
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = (a[i] * 4) / a[i];
|
||||
|
||||
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
d[i] = ((a[i] * a[i] + a[i]) / a[i]) - a[i];
|
||||
|
||||
|
@ -116,23 +146,33 @@ main (void)
|
|||
#pragma acc data copy (a[0:N], b[0:N], c[0:N], d[0:N], e[0:N])
|
||||
{
|
||||
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = (a[i] * a[i] * a[i]) / a[i];
|
||||
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = (a[i] * 4) / a[i];
|
||||
|
||||
#pragma acc parallel async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
d[i] = ((a[i] * a[i] + a[i]) / a[i]) - a[i];
|
||||
|
||||
|
||||
#pragma acc parallel wait (1) async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel wait (1) async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
e[i] = a[i] + b[i] + c[i] + d[i];
|
||||
|
||||
|
@ -162,8 +202,11 @@ main (void)
|
|||
#pragma acc data copy (a[0:N]) copy (b[0:N])
|
||||
{
|
||||
|
||||
#pragma acc kernels async
|
||||
#pragma acc loop
|
||||
#pragma acc kernels async /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = a[i];
|
||||
|
||||
|
@ -186,8 +229,11 @@ main (void)
|
|||
|
||||
#pragma acc data copy (a[0:N]) copy (b[0:N])
|
||||
{
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = a[i];
|
||||
|
||||
|
@ -212,16 +258,25 @@ main (void)
|
|||
|
||||
#pragma acc data copy (a[0:N]) copy (b[0:N]) copy (c[0:N]) copy (d[0:N])
|
||||
{
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target { ! __OPTIMIZE__ } } l_compute$c_compute }
|
||||
{ dg-optimized "assigned OpenACC gang loop parallelism" "" { target { __OPTIMIZE__ } } l_compute$c_compute } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = (a[i] * a[i] * a[i]) / a[i];
|
||||
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target { ! __OPTIMIZE__ } } l_compute$c_compute }
|
||||
{ dg-optimized "assigned OpenACC gang loop parallelism" "" { target { __OPTIMIZE__ } } l_compute$c_compute } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = (a[i] * 4) / a[i];
|
||||
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
d[i] = ((a[i] * a[i] + a[i]) / a[i]) - a[i];
|
||||
|
||||
|
@ -251,22 +306,34 @@ main (void)
|
|||
|
||||
#pragma acc data copy (a[0:N], b[0:N], c[0:N], d[0:N], e[0:N])
|
||||
{
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target { ! __OPTIMIZE__ } } l_compute$c_compute }
|
||||
{ dg-optimized "assigned OpenACC gang loop parallelism" "" { target { __OPTIMIZE__ } } l_compute$c_compute } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = (a[i] * a[i] * a[i]) / a[i];
|
||||
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = (a[i] * 4) / a[i];
|
||||
|
||||
#pragma acc kernels async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
d[i] = ((a[i] * a[i] + a[i]) / a[i]) - a[i];
|
||||
|
||||
#pragma acc kernels wait (1) async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels wait (1) async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
e[i] = a[i] + b[i] + c[i] + d[i];
|
||||
|
||||
|
|
|
@ -1,6 +1,24 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
/* Based on asyncwait-2.f90. */
|
||||
/* Based on '../libgomp.oacc-fortran/asyncwait-2.f90'. */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-all-omp" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable '[Di]\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
so to maintain compatibility with earlier Tcl releases, we manually
|
||||
initialize counter variables:
|
||||
{ dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
{ dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
"WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -15,18 +33,27 @@ main (void)
|
|||
b = (int *)malloc (N * sizeof (*b));
|
||||
c = (int *)malloc (N * sizeof (*c));
|
||||
|
||||
#pragma acc parallel copy (a[0:N]) async (0)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel copy (a[0:N]) async (0) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
a[i] = 1;
|
||||
|
||||
#pragma acc parallel copy (b[0:N]) async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel copy (b[0:N]) async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = 1;
|
||||
|
||||
#pragma acc parallel copy (a[0:N], b[0:N], c[0:N]) wait (0, 1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel copy (a[0:N], b[0:N], c[0:N]) wait (0, 1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = a[i] + b[i];
|
||||
|
||||
|
@ -35,18 +62,35 @@ main (void)
|
|||
abort ();
|
||||
|
||||
#if 1
|
||||
#pragma acc kernels copy (a[0:N]) async (0)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels copy (a[0:N]) async (0) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'a\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
a[i] = 1;
|
||||
|
||||
#pragma acc kernels copy (b[0:N]) async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels copy (b[0:N]) async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'b\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = 1;
|
||||
|
||||
#pragma acc kernels copy (a[0:N], b[0:N], c[0:N]) wait (0, 1)
|
||||
#pragma acc loop
|
||||
#pragma acc kernels copy (a[0:N], b[0:N], c[0:N]) wait (0, 1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'a\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-note {variable 'b\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
/* { dg-note {variable 'c\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = a[i] + b[i];
|
||||
|
||||
|
|
|
@ -1,6 +1,24 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
/* Based on asyncwait-3.f90. */
|
||||
/* Based on '../libgomp.oacc-fortran/asyncwait-3.f90'. */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-all-omp" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
{ dg-prune-output {note: variable '[Di]\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
so to maintain compatibility with earlier Tcl releases, we manually
|
||||
initialize counter variables:
|
||||
{ dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
{ dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
"WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -15,20 +33,29 @@ main (void)
|
|||
b = (int *)malloc (N * sizeof (*b));
|
||||
c = (int *)malloc (N * sizeof (*c));
|
||||
|
||||
#pragma acc parallel copy (a[0:N]) async (0)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel copy (a[0:N]) async (0) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
a[i] = 1;
|
||||
|
||||
#pragma acc parallel copy (b[0:N]) async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc parallel copy (b[0:N]) async (1) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = 1;
|
||||
|
||||
#pragma acc wait (0, 1)
|
||||
|
||||
#pragma acc parallel copy (a[0:N], b[0:N], c[0:N])
|
||||
#pragma acc loop
|
||||
#pragma acc parallel copy (a[0:N], b[0:N], c[0:N]) /* { dg-line l_compute[incr c_compute] } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = a[i] + b[i];
|
||||
|
||||
|
@ -37,19 +64,31 @@ main (void)
|
|||
abort ();
|
||||
|
||||
#pragma acc kernels copy (a[0:N]) async (0)
|
||||
#pragma acc loop
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
a[i] = 1;
|
||||
|
||||
#pragma acc kernels copy (b[0:N]) async (1)
|
||||
#pragma acc loop
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = 1;
|
||||
|
||||
#pragma acc wait (0, 1)
|
||||
|
||||
#pragma acc kernels copy (a[0:N], b[0:N], c[0:N])
|
||||
#pragma acc loop
|
||||
#pragma acc loop /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
c[i] = a[i] + b[i];
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/* Test OpenACC 'kernels' construct decomposition. */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-omp-all" } */
|
||||
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
|
||||
/* { dg-additional-options "-fopt-info-all-omp" }
|
||||
{ dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" }
|
||||
{ dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
/* { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
{ dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
for testing/documenting aspects of that functionality. */
|
||||
|
||||
|
@ -30,7 +30,8 @@ int main()
|
|||
|
||||
#pragma acc kernels /* { dg-line l_compute[incr c_compute] } */
|
||||
{
|
||||
int c = 234; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
int c = 234;
|
||||
/* { dg-note {variable 'c' declared in block is candidate for adjusting OpenACC privatization level} "" { target *-*-* } l_compute$c_compute }
|
||||
{ dg-note {variable 'c\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_compute$c_compute } */
|
||||
|
||||
|
@ -38,14 +39,15 @@ int main()
|
|||
(volatile int *) &c;
|
||||
|
||||
#pragma acc loop independent gang /* { dg-line l_loop_i[incr c_loop_i] } */
|
||||
/* { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
/* { dg-optimized "assigned OpenACC gang loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i } */
|
||||
for (int i = 0; i < N; ++i)
|
||||
b[i] = c;
|
||||
|
||||
a = c; /* { dg-message "note: beginning 'gang-single' part in OpenACC 'kernels' region" } */
|
||||
/* { dg-note {beginning 'gang-single' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 } */
|
||||
a = c;
|
||||
}
|
||||
|
||||
for (int i = 0; i < N; ++i)
|
||||
|
|
|
@ -1,5 +1,25 @@
|
|||
! { dg-do run }
|
||||
|
||||
! See also '../libgomp.oacc-c-c++-common/f-asyncwait-1.c'.
|
||||
|
||||
! { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
|
||||
! { dg-additional-options "-fopt-info-all-omp" }
|
||||
! { dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
! { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
! Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
! passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
! so to maintain compatibility with earlier Tcl releases, we manually
|
||||
! initialize counter variables:
|
||||
! { dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
! "WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
program asyncwait
|
||||
integer, parameter :: N = 64
|
||||
real, allocatable :: a(:), b(:), c(:), d(:), e(:)
|
||||
|
@ -17,7 +37,9 @@ program asyncwait
|
|||
!$acc data copy (a(1:N)) copy (b(1:N))
|
||||
|
||||
!$acc parallel async
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = a(i)
|
||||
end do
|
||||
|
@ -37,7 +59,9 @@ program asyncwait
|
|||
!$acc data copy (a(1:N)) copy (b(1:N))
|
||||
|
||||
!$acc parallel async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = a(i)
|
||||
end do
|
||||
|
@ -71,7 +95,9 @@ program asyncwait
|
|||
!$acc end parallel
|
||||
|
||||
!$acc parallel async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
d(i) = ((a(i) * a(i) + a(i)) / a(i)) - a(i)
|
||||
end do
|
||||
|
@ -102,21 +128,27 @@ program asyncwait
|
|||
!$acc end parallel
|
||||
|
||||
!$acc parallel async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = (a(i) * 4) / a(i)
|
||||
end do
|
||||
!$acc end parallel
|
||||
|
||||
!$acc parallel async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
d(i) = ((a(i) * a(i) + a(i)) / a(i)) - a(i)
|
||||
end do
|
||||
!$acc end parallel
|
||||
|
||||
!$acc parallel wait (1) async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
e(i) = a(i) + b(i) + c(i) + d(i)
|
||||
end do
|
||||
|
@ -139,7 +171,10 @@ program asyncwait
|
|||
!$acc data copy (a(1:N)) copy (b(1:N))
|
||||
|
||||
!$acc kernels async
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = a(i)
|
||||
end do
|
||||
|
@ -159,7 +194,10 @@ program asyncwait
|
|||
!$acc data copy (a(1:N)) copy (b(1:N))
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = a(i)
|
||||
end do
|
||||
|
@ -180,20 +218,27 @@ program asyncwait
|
|||
|
||||
!$acc data copy (a(1:N)) copy (b(1:N)) copy (c(1:N)) copy (d(1:N))
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc kernels async (1) ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute }
|
||||
! { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
do i = 1, N
|
||||
b(i) = (a(i) * a(i) * a(i)) / a(i)
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc kernels async (1) ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute }
|
||||
! { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
do i = 1, N
|
||||
c(i) = (a(i) * 4) / a(i)
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
d(i) = ((a(i) * a(i) + a(i)) / a(i)) - a(i)
|
||||
end do
|
||||
|
@ -217,28 +262,39 @@ program asyncwait
|
|||
|
||||
!$acc data copy (a(1:N), b(1:N), c(1:N), d(1:N), e(1:N))
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc kernels async (1) ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_compute$c_compute }
|
||||
! { dg-note {beginning 'parloops' part in OpenACC 'kernels' region} {} { target *-*-* } .+1 }
|
||||
do i = 1, N
|
||||
b(i) = (a(i) * a(i) * a(i)) / a(i)
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = (a(i) * 4) / a(i)
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
d(i) = ((a(i) * a(i) + a(i)) / a(i)) - a(i)
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels wait (1) async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
e(i) = a(i) + b(i) + c(i) + d(i)
|
||||
end do
|
||||
|
|
|
@ -1,5 +1,25 @@
|
|||
! { dg-do run }
|
||||
|
||||
! See also '../libgomp.oacc-c-c++-common/f-asyncwait-2.c'.
|
||||
|
||||
! { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
|
||||
! { dg-additional-options "-fopt-info-all-omp" }
|
||||
! { dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
! { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
! Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
! passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
! so to maintain compatibility with earlier Tcl releases, we manually
|
||||
! initialize counter variables:
|
||||
! { dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
! "WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
program asyncwait
|
||||
integer, parameter :: N = 64
|
||||
real, allocatable :: a(:), b(:), c(:)
|
||||
|
@ -10,21 +30,27 @@ program asyncwait
|
|||
allocate (c(N))
|
||||
|
||||
!$acc parallel async (0)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
a(i) = 1
|
||||
end do
|
||||
!$acc end parallel
|
||||
|
||||
!$acc parallel async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = 1
|
||||
end do
|
||||
!$acc end parallel
|
||||
|
||||
!$acc parallel wait (0, 1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = a(i) + b(i)
|
||||
end do
|
||||
|
@ -35,21 +61,30 @@ program asyncwait
|
|||
end do
|
||||
|
||||
!$acc kernels async (0)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
a(i) = 1
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = 1
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels wait (0, 1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = a(i) + b(i)
|
||||
end do
|
||||
|
|
|
@ -1,5 +1,25 @@
|
|||
! { dg-do run }
|
||||
|
||||
! See also '../libgomp.oacc-c-c++-common/f-asyncwait-3.c'.
|
||||
|
||||
! { dg-additional-options "--param=openacc-kernels=decompose" } */
|
||||
|
||||
! { dg-additional-options "-fopt-info-all-omp" }
|
||||
! { dg-additional-options "-foffload=-fopt-info-all-omp" } */
|
||||
|
||||
! { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
! Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} } */
|
||||
|
||||
! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
! passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
! so to maintain compatibility with earlier Tcl releases, we manually
|
||||
! initialize counter variables:
|
||||
! { dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
! "WARNING: dg-line var l_dummy defined, but not used". */
|
||||
|
||||
program asyncwait
|
||||
integer, parameter :: N = 64
|
||||
real, allocatable :: a(:), b(:), c(:)
|
||||
|
@ -10,14 +30,18 @@ program asyncwait
|
|||
allocate (c(N))
|
||||
|
||||
!$acc parallel async (0)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
a(i) = 1
|
||||
end do
|
||||
!$acc end parallel
|
||||
|
||||
!$acc parallel async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = 1
|
||||
end do
|
||||
|
@ -26,7 +50,9 @@ program asyncwait
|
|||
!$acc wait (0, 1)
|
||||
|
||||
!$acc parallel
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = a(i) + b(i)
|
||||
end do
|
||||
|
@ -37,14 +63,20 @@ program asyncwait
|
|||
end do
|
||||
|
||||
!$acc kernels async (0)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
a(i) = 1
|
||||
end do
|
||||
!$acc end kernels
|
||||
|
||||
!$acc kernels async (1)
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
b(i) = 1
|
||||
end do
|
||||
|
@ -53,7 +85,10 @@ program asyncwait
|
|||
!$acc wait (0, 1)
|
||||
|
||||
!$acc kernels
|
||||
!$acc loop
|
||||
!$acc loop ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-note {forwarded loop nest in OpenACC 'kernels' region to 'parloops' for analysis} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC seq loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = 1, N
|
||||
c(i) = a(i) + b(i)
|
||||
end do
|
||||
|
|
|
@ -1,12 +1,20 @@
|
|||
! { dg-do run }
|
||||
|
||||
! { dg-additional-options "-fopt-info-omp-all" }
|
||||
! { dg-additional-options "-foffload=-fopt-info-all-omp" }
|
||||
|
||||
! { dg-additional-options "--param=openacc-kernels=decompose" }
|
||||
|
||||
! { dg-additional-options "--param=openacc-privatization=noisy" }
|
||||
! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
|
||||
! Prune a few: uninteresting, and potentially varying depending on GCC configuration (data types):
|
||||
! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} }
|
||||
|
||||
! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
|
||||
! passed to 'incr' may be unset, and in that case, it will be set to [...]",
|
||||
! so to maintain compatibility with earlier Tcl releases, we manually
|
||||
! initialize counter variables:
|
||||
! { dg-line l_dummy[variable c_loop_i 0] }
|
||||
! { dg-line l_dummy[variable c_compute 0 c_loop_i 0] }
|
||||
! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
|
||||
! "WARNING: dg-line var l_dummy defined, but not used".
|
||||
|
||||
|
@ -15,15 +23,19 @@ subroutine kernel(lo, hi, a, b, c)
|
|||
integer :: lo, hi, i
|
||||
real, dimension(lo:hi) :: a, b, c
|
||||
|
||||
!$acc kernels copyin(lo, hi)
|
||||
!$acc kernels copyin(lo, hi) ! { dg-line l_compute[incr c_compute] }
|
||||
! { dg-note {variable 'lo\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute }
|
||||
! { dg-note {variable 'hi\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute }
|
||||
!$acc loop independent ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = lo, hi
|
||||
b(i) = a(i)
|
||||
end do
|
||||
!$acc loop independent ! { dg-line l_loop_i[incr c_loop_i] }
|
||||
! { dg-message "note: parallelized loop nest in OpenACC 'kernels' region" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {parallelized loop nest in OpenACC 'kernels' region} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i }
|
||||
! { dg-optimized "assigned OpenACC gang vector loop parallelism" "" { target *-*-* } l_loop_i$c_loop_i }
|
||||
do i = lo, hi
|
||||
c(i) = b(i)
|
||||
|
|
Loading…
Add table
Reference in a new issue