From 010a7a9220c55c6bdf803617c72ed912a790267c Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Wed, 23 Jan 2019 15:22:58 +0100
Subject: [PATCH] Add user-friendly diagnostics for OpenACC loop parallelism
assigned
Backport changes from trunk r267146.
gcc/
* omp-offload.c (inform_oacc_loop, execute_oacc_device_lower):
Update.
gcc/testsuite/
* c-c++-common/goacc/classify-kernels-unparallelized.c: Update.
* c-c++-common/goacc/classify-kernels.c: Likewise.
* c-c++-common/goacc/classify-parallel.c: Likewise.
* c-c++-common/goacc/classify-routine.c: Likewise.
* c-c++-common/goacc/kernels-1.c: Likewise.
* c-c++-common/goacc/kernels-double-reduction-n.c: Likewise.
* c-c++-common/goacc/kernels-double-reduction.c: Likewise.
* c-c++-common/goacc/loop-auto-3.c: Likewise.
* c-c++-common/goacc/note-parallelism.c: Likewise.
* c-c++-common/goacc/orphan-reductions-2.c: Likewise.
* gcc.target/nvptx/oacc-autopar.c: Likewise.
* gfortran.dg/goacc/classify-kernels-unparallelized.f95: Likewise.
* gfortran.dg/goacc/classify-kernels.f95: Likewise.
* gfortran.dg/goacc/classify-parallel.f95: Likewise.
* gfortran.dg/goacc/classify-routine.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-inner.f95: Likewise.
* gfortran.dg/goacc/loop-auto-1.f90: Likewise.
* gfortran.dg/goacc/note-parallelism.f90: Likewise.
* gfortran.dg/goacc/orphan-reductions-2.f90: Likewise.
---
gcc/ChangeLog.openacc | 5 +
gcc/omp-offload.c | 51 ++++++---
gcc/testsuite/ChangeLog.openacc | 22 ++++
.../goacc/classify-kernels-unparallelized.c | 3 +-
.../c-c++-common/goacc/classify-kernels.c | 3 +-
.../c-c++-common/goacc/classify-parallel.c | 3 +-
.../c-c++-common/goacc/classify-routine.c | 3 +-
gcc/testsuite/c-c++-common/goacc/kernels-1.c | 10 +-
.../goacc/kernels-double-reduction-n.c | 3 +-
.../goacc/kernels-double-reduction.c | 3 +-
.../c-c++-common/goacc/loop-auto-3.c | 48 ++++-----
.../c-c++-common/goacc/note-parallelism.c | 86 ++++++++++++---
.../c-c++-common/goacc/orphan-reductions-2.c | 26 ++---
gcc/testsuite/gcc.target/nvptx/oacc-autopar.c | 54 +++++-----
.../goacc/classify-kernels-unparallelized.f95 | 3 +-
.../gfortran.dg/goacc/classify-kernels.f95 | 3 +-
.../gfortran.dg/goacc/classify-parallel.f95 | 3 +-
.../gfortran.dg/goacc/classify-routine.f95 | 3 +-
.../gfortran.dg/goacc/kernels-loop-inner.f95 | 3 +-
.../gfortran.dg/goacc/loop-auto-1.f90 | 48 ++++-----
.../gfortran.dg/goacc/note-parallelism.f90 | 101 +++++++++++++++---
.../gfortran.dg/goacc/orphan-reductions-2.f90 | 26 ++---
22 files changed, 346 insertions(+), 164 deletions(-)
@@ -1,3 +1,8 @@
+2019-01-28 Thomas Schwinge <thomas@codesourcery.com>
+
+ * omp-offload.c (inform_oacc_loop, execute_oacc_device_lower):
+ Update.
+
2019-01-09 Julian Brown <julian@codesourcery.com>
* doc/invoke.texi: Update mention of OpenACC version to 2.6.
@@ -873,7 +873,7 @@ dump_oacc_loop_part (FILE *file, gcall *from, int depth,
}
}
-/* Dump OpenACC loops LOOP, its siblings and its children. */
+/* Dump OpenACC loop LOOP, its children, and its siblings. */
static void
dump_oacc_loop (FILE *file, oacc_loop *loop, int depth)
@@ -916,23 +916,22 @@ debug_oacc_loop (oacc_loop *loop)
dump_oacc_loop (stderr, loop, 0);
}
-/* Provide diagnostics on OpenACC loops LOOP, its siblings and its
- children. */
+/* Provide diagnostics on OpenACC loop LOOP, its children, and its
+ siblings. */
static void
-inform_oacc_loop (oacc_loop *loop)
+inform_oacc_loop (const oacc_loop *loop)
{
+ const char *gang
+ = loop->mask & GOMP_DIM_MASK (GOMP_DIM_GANG) ? " gang" : "";
+ const char *worker
+ = loop->mask & GOMP_DIM_MASK (GOMP_DIM_WORKER) ? " worker" : "";
+ const char *vector
+ = loop->mask & GOMP_DIM_MASK (GOMP_DIM_VECTOR) ? " vector" : "";
const char *seq = loop->mask == 0 ? " seq" : "";
- const char *gang = loop->mask & GOMP_DIM_MASK (GOMP_DIM_GANG)
- ? " gang" : "";
- const char *worker = loop->mask & GOMP_DIM_MASK (GOMP_DIM_WORKER)
- ? " worker" : "";
- const char *vector = loop->mask & GOMP_DIM_MASK (GOMP_DIM_VECTOR)
- ? " vector" : "";
-
- dump_printf_loc (MSG_NOTE, loop->loc,
- "Detected parallelism <acc loop%s%s%s%s>\n", seq, gang,
- worker, vector);
+ dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loop->loc,
+ "assigned OpenACC%s%s%s%s loop parallelism\n", gang, worker,
+ vector, seq);
if (loop->child)
inform_oacc_loop (loop->child);
@@ -1664,8 +1663,28 @@ execute_oacc_device_lower ()
dump_oacc_loop (dump_file, loops, 0);
fprintf (dump_file, "\n");
}
- if (dump_enabled_p () && loops->child)
- inform_oacc_loop (loops->child);
+ if (dump_enabled_p ())
+ {
+ oacc_loop *l = loops;
+ /* OpenACC kernels constructs are special: they currently don't use the
+ generic oacc_loop infrastructure. */
+ if (is_oacc_kernels)
+ {
+ /* Create a fake oacc_loop for diagnostic purposes. */
+ l = new_oacc_loop_raw (NULL,
+ DECL_SOURCE_LOCATION (current_function_decl));
+ l->mask = used_mask;
+ }
+ else
+ {
+ /* Skip the outermost, dummy OpenACC loop */
+ l = l->child;
+ }
+ if (l)
+ inform_oacc_loop (l);
+ if (is_oacc_kernels)
+ free_oacc_loop (l);
+ }
/* Offloaded targets may introduce new basic blocks, which require
dominance information to update SSA. */
@@ -1,3 +1,25 @@
+2019-01-28 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/classify-kernels-unparallelized.c: Update.
+ * c-c++-common/goacc/classify-kernels.c: Likewise.
+ * c-c++-common/goacc/classify-parallel.c: Likewise.
+ * c-c++-common/goacc/classify-routine.c: Likewise.
+ * c-c++-common/goacc/kernels-1.c: Likewise.
+ * c-c++-common/goacc/kernels-double-reduction-n.c: Likewise.
+ * c-c++-common/goacc/kernels-double-reduction.c: Likewise.
+ * c-c++-common/goacc/loop-auto-3.c: Likewise.
+ * c-c++-common/goacc/note-parallelism.c: Likewise.
+ * c-c++-common/goacc/orphan-reductions-2.c: Likewise.
+ * gcc.target/nvptx/oacc-autopar.c: Likewise.
+ * gfortran.dg/goacc/classify-kernels-unparallelized.f95: Likewise.
+ * gfortran.dg/goacc/classify-kernels.f95: Likewise.
+ * gfortran.dg/goacc/classify-parallel.f95: Likewise.
+ * gfortran.dg/goacc/classify-routine.f95: Likewise.
+ * gfortran.dg/goacc/kernels-loop-inner.f95: Likewise.
+ * gfortran.dg/goacc/loop-auto-1.f90: Likewise.
+ * gfortran.dg/goacc/note-parallelism.f90: Likewise.
+ * gfortran.dg/goacc/orphan-reductions-2.f90: Likewise.
+
2019-01-09 Julian Brown <julian@codesourcery.com>
* c-c++-common/cpp/openacc-define-3.c: Update expected value for
@@ -2,6 +2,7 @@
OpenACC kernels. */
/* { dg-additional-options "-O2" }
+ { dg-additional-options "-fopt-info-optimized-omp" }
{ dg-additional-options "-fdump-tree-ompexp" }
{ dg-additional-options "-fdump-tree-parloops1-all" }
{ dg-additional-options "-fdump-tree-oaccdevlow" } */
@@ -18,7 +19,7 @@ extern unsigned int f (unsigned int);
void KERNELS ()
{
-#pragma acc kernels copyin (a[0:N], b[0:N]) copyout (c[0:N])
+#pragma acc kernels copyin (a[0:N], b[0:N]) copyout (c[0:N]) /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (unsigned int i = 0; i < N; i++)
c[i] = a[f (i)] + b[f (i)];
}
@@ -2,6 +2,7 @@
kernels. */
/* { dg-additional-options "-O2" }
+ { dg-additional-options "-fopt-info-optimized-omp" }
{ dg-additional-options "-fdump-tree-ompexp" }
{ dg-additional-options "-fdump-tree-parloops1-all" }
{ dg-additional-options "-fdump-tree-oaccdevlow" } */
@@ -14,7 +15,7 @@ extern unsigned int *__restrict c;
void KERNELS ()
{
-#pragma acc kernels copyin (a[0:N], b[0:N]) copyout (c[0:N])
+#pragma acc kernels copyin (a[0:N], b[0:N]) copyout (c[0:N]) /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (unsigned int i = 0; i < N; i++)
c[i] = a[i] + b[i];
}
@@ -2,6 +2,7 @@
parallel. */
/* { dg-additional-options "-O2" }
+ { dg-additional-options "-fopt-info-optimized-omp" }
{ dg-additional-options "-fdump-tree-ompexp" }
{ dg-additional-options "-fdump-tree-oaccdevlow" } */
@@ -13,7 +14,7 @@ extern unsigned int *__restrict c;
void PARALLEL ()
{
-#pragma acc parallel loop copyin (a[0:N], b[0:N]) copyout (c[0:N])
+#pragma acc parallel loop copyin (a[0:N], b[0:N]) copyout (c[0:N]) /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (unsigned int i = 0; i < N; i++)
c[i] = a[i] + b[i];
}
@@ -2,6 +2,7 @@
routine. */
/* { dg-additional-options "-O2" }
+ { dg-additional-options "-fopt-info-optimized-omp" }
{ dg-additional-options "-fdump-tree-ompexp" }
{ dg-additional-options "-fdump-tree-oaccdevlow" } */
@@ -15,7 +16,7 @@ extern unsigned int *__restrict c;
#pragma acc routine worker
void ROUTINE ()
{
-#pragma acc loop
+#pragma acc loop /* { dg-message "note: assigned OpenACC worker vector loop parallelism" } */
for (unsigned int i = 0; i < N; i++)
c[i] = a[i] + b[i];
}
@@ -1,7 +1,9 @@
+/* { dg-additional-options "-fopt-info-optimized-omp" } */
+
int
kernels_empty (void)
{
-#pragma acc kernels
+#pragma acc kernels /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
;
return 0;
@@ -10,7 +12,7 @@ kernels_empty (void)
int
kernels_eternal (void)
{
-#pragma acc kernels
+#pragma acc kernels /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
{
while (1)
;
@@ -22,7 +24,7 @@ kernels_eternal (void)
int
kernels_noreturn (void)
{
-#pragma acc kernels
+#pragma acc kernels /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
__builtin_abort ();
return 0;
@@ -36,7 +38,7 @@ kernels_loop_ptr_it (void)
{
float *i;
-#pragma acc kernels
+#pragma acc kernels /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
{
#pragma acc loop
for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
@@ -1,4 +1,5 @@
/* { dg-additional-options "-O2" } */
+/* { dg-additional-options "-fopt-info-optimized-omp" } */
/* { dg-additional-options "-fdump-tree-parloops1-all" } */
/* { dg-additional-options "-fdump-tree-optimized" } */
@@ -14,7 +15,7 @@ foo (unsigned int n)
int i, j;
unsigned int sum = 1;
-#pragma acc kernels copyin (a[0:n]) copy (sum)
+#pragma acc kernels copyin (a[0:n]) copy (sum) /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
{
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
@@ -1,4 +1,5 @@
/* { dg-additional-options "-O2" } */
+/* { dg-additional-options "-fopt-info-optimized-omp" } */
/* { dg-additional-options "-fdump-tree-parloops1-all" } */
/* { dg-additional-options "-fdump-tree-optimized" } */
@@ -14,7 +15,7 @@ foo (void)
int i, j;
unsigned int sum = 1;
-#pragma acc kernels copyin (a[0:N]) copy (sum)
+#pragma acc kernels copyin (a[0:N]) copy (sum) /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
{
for (i = 0; i < N; ++i)
for (j = 0; j < N; ++j)
@@ -1,78 +1,78 @@
/* Ensure that the auto clause falls back to seq parallelism when the
OpenACC loop is not explicitly independent. */
-/* { dg-additional-options "-fopt-info-note-omp" } */
+/* { dg-additional-options "-fopt-info-optimized-omp" } */
void
test ()
{
int i, j, k, l, n = 100;
-#pragma acc parallel loop auto /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc parallel loop auto /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (i = 0; i < n; i++)
-#pragma acc loop auto independent /* { dg-message "Detected parallelism <acc loop gang>" } */
+#pragma acc loop auto independent /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (j = 0; j < n; j++)
-#pragma acc loop worker vector /* { dg-message "Detected parallelism <acc loop worker vector>" } */
+#pragma acc loop worker vector /* { dg-message "note: assigned OpenACC worker vector loop parallelism" } */
for (k = 0; k < n; k++)
;
-#pragma acc parallel loop auto independent /* { dg-message "Detected parallelism <acc loop gang worker>" } */
+#pragma acc parallel loop auto independent /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (i = 0; i < n; i++)
-#pragma acc loop auto /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop auto /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (j = 0; j < n; j++)
-#pragma acc loop auto /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop auto /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (k = 0; k < n; k++)
-#pragma acc loop auto independent /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop auto independent /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (l = 0; l < n; l++)
;
-#pragma acc parallel loop gang /* { dg-message "Detected parallelism <acc loop gang>" } */
+#pragma acc parallel loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < n; i++)
-#pragma acc loop worker /* { dg-message "Detected parallelism <acc loop worker>" } */
+#pragma acc loop worker /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (j = 0; j < n; j++)
-#pragma acc loop vector /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop vector /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (k = 0; k < n; k++)
{
-#pragma acc loop auto independent /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop auto independent /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
/* { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 } */
for (l = 0; l < n; l++)
;
-#pragma acc loop auto /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop auto /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (l = 0; l < n; l++)
;
}
-#pragma acc parallel loop /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
/* { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 } */
for (i = 0; i < n; i++)
{
-#pragma acc loop gang worker /* { dg-message "Detected parallelism <acc loop gang worker>" } */
+#pragma acc loop gang worker /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (j = 0; j < n; j++)
-#pragma acc loop auto /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop auto /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (k = 0; k < n; k++)
{
-#pragma acc loop vector /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop vector /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (l = 0; l < n; l++)
;
-#pragma acc loop auto independent /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop auto independent /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (l = 0; l < n; l++)
;
}
-#pragma acc loop worker /* { dg-message "Detected parallelism <acc loop worker>" } */
+#pragma acc loop worker /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (j = 0; j < n; j++)
-#pragma acc loop vector /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop vector /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (k = 0; k < n; k++)
;
}
-#pragma acc parallel loop /* { dg-message "Detected parallelism <acc loop gang>" } */
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < n; i++)
-#pragma acc loop /* { dg-message "Detected parallelism <acc loop worker>" } */
+#pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (j = 0; j < n; j++)
-#pragma acc loop /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
/* { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 } */
for (k = 0; k < n; k++)
-#pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (l = 0; l < n; l++)
;
}
@@ -1,59 +1,113 @@
-/* Test the output of -fopt-info-note-omp. */
+/* Test the output of "-fopt-info-optimized-omp". */
-/* { dg-additional-options "-fopt-info-note-omp" } */
+/* { dg-additional-options "-fopt-info-optimized-omp" } */
+
+/* See also "../../gfortran.dg/goacc/note-parallelism.f90". */
int
main ()
{
int x, y, z;
-#pragma acc parallel loop seq /* { dg-message "note: Detected parallelism <acc loop seq>" } */
+#pragma acc parallel
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop gang /* { dg-message "note: Detected parallelism <acc loop gang>" } */
+#pragma acc parallel loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop worker /* { dg-message "note: Detected parallelism <acc loop worker>" } */
+#pragma acc parallel loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop vector /* { dg-message "note: Detected parallelism <acc loop vector>" } */
+#pragma acc parallel loop worker /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop gang vector /* { dg-message "note: Detected parallelism <acc loop gang vector>" } */
+#pragma acc parallel loop vector /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop gang worker /* { dg-message "note: Detected parallelism <acc loop gang worker>" } */
+#pragma acc parallel loop gang vector /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop worker vector /* { dg-message "note: Detected parallelism <acc loop worker vector>" } */
+#pragma acc parallel loop gang worker /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop gang worker vector /* { dg-message "note: Detected parallelism <acc loop gang worker vector>" } */
+#pragma acc parallel loop worker vector /* { dg-message "note: assigned OpenACC worker vector loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop /* { dg-message "note: Detected parallelism <acc loop gang vector>" } */
+#pragma acc parallel loop gang worker vector /* { dg-message "note: assigned OpenACC gang worker vector loop parallelism" } */
+ for (x = 0; x < 10; x++)
+ ;
+
+#pragma acc parallel loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
+ for (x = 0; x < 10; x++)
+#pragma acc loop worker /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
+ for (y = 0; y < 10; y++)
+#pragma acc loop vector /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
+ for (z = 0; z < 10; z++)
+ ;
+
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (x = 0; x < 10; x++)
;
-#pragma acc parallel loop /* { dg-message "note: Detected parallelism <acc loop gang worker>" } */
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (x = 0; x < 10; x++)
-#pragma acc loop /* { dg-message "note: Detected parallelism <acc loop vector>" } */
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (y = 0; y < 10; y++)
;
-#pragma acc parallel loop gang /* { dg-message "note: Detected parallelism <acc loop gang>" } */
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
+ for (x = 0; x < 10; x++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
+ for (y = 0; y < 10; y++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
+ for (z = 0; z < 10; z++)
+ ;
+
+#pragma acc parallel
+ for (x = 0; x < 10; x++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
+ for (y = 0; y < 10; y++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
+ for (z = 0; z < 10; z++)
+ ;
+
+#pragma acc parallel loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
+ for (x = 0; x < 10; x++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
+ for (y = 0; y < 10; y++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
+ for (z = 0; z < 10; z++)
+ ;
+
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
+ for (x = 0; x < 10; x++)
+#pragma acc loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
+ for (y = 0; y < 10; y++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
+ for (z = 0; z < 10; z++)
+ ;
+
+#pragma acc parallel loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
+ for (x = 0; x < 10; x++)
+#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
+ for (y = 0; y < 10; y++)
+#pragma acc loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
+ for (z = 0; z < 10; z++)
+ ;
+
+#pragma acc parallel loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (x = 0; x < 10; x++)
-#pragma acc loop worker /* { dg-message "note: Detected parallelism <acc loop worker>" } */
+#pragma acc loop /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (y = 0; y < 10; y++)
-#pragma acc loop vector /* { dg-message "note: Detected parallelism <acc loop vector>" } */
+#pragma acc loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (z = 0; z < 10; z++)
;
@@ -1,7 +1,7 @@
/* Ensure that the middle end does not assign gang level parallelism
to orphan loop containing reductions. */
-/* { dg-additional-options "-fopt-info-note-omp" } */
+/* { dg-additional-options "-fopt-info-optimized-omp" } */
#pragma acc routine gang
int
@@ -9,7 +9,7 @@ f1 () /* { dg-warning "region is gang partitioned but does not contain gang part
{
int sum = 0, i;
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop worker vector>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC worker vector loop parallelism" } */
for (i = 0; i < 100; i++)
sum++;
@@ -22,9 +22,9 @@ f2 () /* { dg-warning "region is gang partitioned but does not contain gang part
{
int sum = 0, i, j;
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop worker>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (i = 0; i < 100; i++)
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 100; j++)
sum++;
@@ -37,12 +37,12 @@ f3 () /* { dg-warning "region is gang partitioned but does not contain gang part
{
int sum = 0, i, j, k;
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop worker>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (i = 0; i < 100; i++)
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop seq>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
/* { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 } */
for (j = 0; j < 100; j++)
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (k = 0; k < 100; k++)
sum++;
@@ -56,27 +56,27 @@ main ()
#pragma acc parallel copy (sum)
{
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop gang vector>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (i = 0; i < 100; i++)
sum++;
}
#pragma acc parallel copy (sum)
{
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop gang worker>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (i = 0; i < 100; i++)
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 100; j++)
sum++;
}
#pragma acc parallel copy (sum)
{
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop gang>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 100; i++)
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop worker>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (j = 0; j < 100; j++)
-#pragma acc loop reduction (+:sum) /* { dg-message "Detected parallelism <acc loop vector>" } */
+#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (k = 0; k < 100; k++)
sum++;
}
@@ -1,7 +1,7 @@
/* Verify the default assignment of parallelism. */
/* { dg-do compile } */
-/* { dg-additional-options "-fopenacc -fopt-info-note-omp" } */
+/* { dg-additional-options "-fopenacc -fopt-info-optimized-omp" } */
/* { dg-skip-if "cc1: error: option -mgomp is not supported together with -fopenacc" { *-*-* } { "-mgomp" } } */
void
@@ -10,16 +10,16 @@ gang_independent ()
int i, j;
#pragma acc parallel
- #pragma acc loop gang /* { dg-message "Detected parallelism <acc loop gang>" } */
+ #pragma acc loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop worker vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC worker vector loop parallelism" } */
for (j = 0; j < 10; j++)
;
#pragma acc parallel vector_length (128)
- #pragma acc loop gang /* { dg-message "Detected parallelism <acc loop gang>" } */
+ #pragma acc loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 10; j++)
;
}
@@ -30,20 +30,20 @@ gang_independent_seq ()
int i, j, k;
#pragma acc parallel
- #pragma acc loop gang /* { dg-message "Detected parallelism <acc loop gang>" } */
+ #pragma acc loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop worker vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC worker vector loop parallelism" } */
for (j = 0; j < 10; j++)
- #pragma acc loop seq /* { dg-message "Detected parallelism <acc loop seq>" } */
+ #pragma acc loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (k = 0; k < 10; k++)
;
#pragma acc parallel vector_length (128)
- #pragma acc loop gang /* { dg-message "Detected parallelism <acc loop gang>" } */
+ #pragma acc loop gang /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 10; j++)
- #pragma acc loop seq /* { dg-message "Detected parallelism <acc loop seq>" } */
+ #pragma acc loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */
for (k = 0; k < 10; k++)
;
}
@@ -54,16 +54,16 @@ worker ()
int i, j;
#pragma acc parallel
- #pragma acc loop worker /* { dg-message "Detected parallelism <acc loop worker>" } */
+ #pragma acc loop worker /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 10; j++)
;
#pragma acc parallel vector_length (128)
- #pragma acc loop worker /* { dg-message "Detected parallelism <acc loop worker>" } */
+ #pragma acc loop worker /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 10; j++)
;
}
@@ -74,48 +74,48 @@ fully_independent ()
int i, j, k;
#pragma acc parallel
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop gang vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (i = 0; i < 10; i++)
;
#pragma acc parallel vector_length (128)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop gang vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC gang vector loop parallelism" } */
for (i = 0; i < 10; i++)
;
#pragma acc parallel
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop gang worker>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 10; j++)
;
/* FIXME: Should the outer loop only be gang partitioned so that the
inner loopp can utilize a large vector_length? */
#pragma acc parallel vector_length (128)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop gang worker>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC gang worker loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (j = 0; j < 10; j++)
;
#pragma acc parallel
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop gang>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop worker>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (j = 0; j < 10; j++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (k = 0; k < 10; k++)
;
/* FIXME: Should the middle loop be seq-partitioned in order to
respect vector_length = 128 on the innermost loop? */
#pragma acc parallel vector_length (128)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop gang>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC gang loop parallelism" } */
for (i = 0; i < 10; i++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop worker>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */
for (j = 0; j < 10; j++)
- #pragma acc loop /* { dg-message "Detected parallelism <acc loop vector>" } */
+ #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */
for (k = 0; k < 10; k++)
;
}
@@ -2,6 +2,7 @@
! OpenACC kernels.
! { dg-additional-options "-O2" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
! { dg-additional-options "-fdump-tree-ompexp" }
! { dg-additional-options "-fdump-tree-parloops1-all" }
! { dg-additional-options "-fdump-tree-oaccdevlow" }
@@ -19,7 +20,7 @@ program main
call setup(a, b)
!$acc kernels copyin (a(0:n-1), b(0:n-1)) copyout (c(0:n-1))
- do i = 0, n - 1
+ do i = 0, n - 1 ! { dg-message "note: assigned OpenACC seq loop parallelism" }
c(i) = a(f (i)) + b(f (i))
end do
!$acc end kernels
@@ -2,6 +2,7 @@
! kernels.
! { dg-additional-options "-O2" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
! { dg-additional-options "-fdump-tree-ompexp" }
! { dg-additional-options "-fdump-tree-parloops1-all" }
! { dg-additional-options "-fdump-tree-oaccdevlow" }
@@ -15,7 +16,7 @@ program main
call setup(a, b)
!$acc kernels copyin (a(0:n-1), b(0:n-1)) copyout (c(0:n-1))
- do i = 0, n - 1
+ do i = 0, n - 1 ! { dg-message "note: assigned OpenACC gang loop parallelism" }
c(i) = a(i) + b(i)
end do
!$acc end kernels
@@ -2,6 +2,7 @@
! parallel.
! { dg-additional-options "-O2" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
! { dg-additional-options "-fdump-tree-ompexp" }
! { dg-additional-options "-fdump-tree-oaccdevlow" }
@@ -13,7 +14,7 @@ program main
call setup(a, b)
- !$acc parallel loop copyin (a(0:n-1), b(0:n-1)) copyout (c(0:n-1))
+ !$acc parallel loop copyin (a(0:n-1), b(0:n-1)) copyout (c(0:n-1)) ! { dg-message "note: assigned OpenACC gang vector loop parallelism" }
do i = 0, n - 1
c(i) = a(i) + b(i)
end do
@@ -2,6 +2,7 @@
! routine.
! { dg-additional-options "-O2" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
! { dg-additional-options "-fdump-tree-ompexp" }
! { dg-additional-options "-fdump-tree-oaccdevlow" }
@@ -13,7 +14,7 @@ subroutine ROUTINE
call setup(a, b)
- !$acc loop
+ !$acc loop ! { dg-message "note: assigned OpenACC worker vector loop parallelism" }
do i = 0, n - 1
c(i) = a(i) + b(i)
end do
@@ -1,4 +1,5 @@
! { dg-additional-options "-O2" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
program main
implicit none
@@ -6,7 +7,7 @@ program main
integer :: a(100,100), b(100,100)
integer :: i, j, d
- !$acc kernels
+ !$acc kernels ! { dg-message "note: assigned OpenACC seq loop parallelism" }
do i=1,100
do j=1,100
a(i,j) = 1
@@ -1,47 +1,47 @@
! Ensure that the auto clause falls back to seq parallelism when the
! OpenACC loop is not explicitly independent.
-! { dg-additional-options "-fopt-info-note-omp" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
program test
implicit none
integer, parameter :: n = 100
integer i, j, k, l
- !$acc parallel loop auto ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc parallel loop auto ! { dg-message "note: assigned OpenACC seq loop parallelism" }
do i = 1, n
- !$acc loop auto independent ! { dg-message "Detected parallelism <acc loop gang>" }
+ !$acc loop auto independent ! { dg-message "note: assigned OpenACC gang loop parallelism" }
do j = 1, n
- !$acc loop worker vector ! { dg-message "Detected parallelism <acc loop worker vector>" }
+ !$acc loop worker vector ! { dg-message "note: assigned OpenACC worker vector loop parallelism" }
do k = 1, n
end do
end do
end do
- !$acc parallel loop auto independent ! { dg-message "Detected parallelism <acc loop gang worker>" }
+ !$acc parallel loop auto independent ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
do i = 1, n
- !$acc loop auto ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop auto ! { dg-message "note: assigned OpenACC seq loop parallelism" }
do j = 1, n
- !$acc loop auto ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop auto ! { dg-message "note: assigned OpenACC seq loop parallelism" }
do k = 1, n
- !$acc loop auto independent ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop auto independent ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do l = 1, n
end do
end do
end do
end do
- !$acc parallel loop gang ! { dg-message "Detected parallelism <acc loop gang>" }
+ !$acc parallel loop gang ! { dg-message "note: assigned OpenACC gang loop parallelism" }
do i = 1, n
- !$acc loop worker ! { dg-message "Detected parallelism <acc loop worker>" }
+ !$acc loop worker ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do j = 1, n
- !$acc loop vector ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop vector ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do k = 1, n
- !$acc loop auto independent ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop auto independent ! { dg-message "note: assigned OpenACC seq loop parallelism" }
! { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 }
do l = 1, n
end do
- !$acc loop auto ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop auto ! { dg-message "note: assigned OpenACC seq loop parallelism" }
do l = 1, n
end do
end do
@@ -49,37 +49,37 @@ program test
end do
- !$acc parallel loop ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC seq loop parallelism" }
! { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 }
do i = 1, n
- !$acc loop gang worker ! { dg-message "Detected parallelism <acc loop gang worker>" }
+ !$acc loop gang worker ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
do j = 1, n
- !$acc loop auto ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop auto ! { dg-message "note: assigned OpenACC seq loop parallelism" }
do k = 1, n
- !$acc loop vector ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop vector ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do l = 1, n
end do
end do
- !$acc loop auto independent ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop auto independent ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do l = 1, n
end do
end do
- !$acc loop worker ! { dg-message "Detected parallelism <acc loop worker>" }
+ !$acc loop worker ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do j = 1, n
- !$acc loop vector ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop vector ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do k = 1, n
end do
end do
end do
- !$acc parallel loop ! { dg-message "Detected parallelism <acc loop gang>" }
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC gang loop parallelism" }
do i = 1, n
- !$acc loop ! { dg-message "Detected parallelism <acc loop worker>" }
+ !$acc loop ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do j = 1, n
- !$acc loop ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop ! { dg-message "note: assigned OpenACC seq loop parallelism" }
! { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 }
do k = 1, n
- !$acc loop ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do l = 1, n
end do
end do
@@ -1,62 +1,131 @@
-! Test the output of -fopt-info-note-omp.
+! Test the output of "-fopt-info-optimized-omp".
-! { dg-additional-options "-fopt-info-note-omp" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
+
+! See also "../../c-c++-common/goacc/note-parallelism.c".
program test
implicit none
integer x, y, z
- !$acc parallel loop seq ! { dg-message "note: Detected parallelism <acc loop seq>" }
+ !$acc parallel
+ do x = 1, 10
+ end do
+ !$acc end parallel
+
+ !$acc parallel loop seq ! { dg-message "note: assigned OpenACC seq loop parallelism" }
+ do x = 1, 10
+ end do
+
+ !$acc parallel loop gang ! { dg-message "note: assigned OpenACC gang loop parallelis" }
+ do x = 1, 10
+ end do
+
+ !$acc parallel loop worker ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop gang ! { dg-message "note: Detected parallelism <acc loop gang>" }
+ !$acc parallel loop vector ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop worker ! { dg-message "note: Detected parallelism <acc loop worker>" }
+ !$acc parallel loop gang vector ! { dg-message "note: assigned OpenACC gang vector loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop vector ! { dg-message "note: Detected parallelism <acc loop vector>" }
+ !$acc parallel loop gang worker ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop gang vector ! { dg-message "note: Detected parallelism <acc loop gang vector>" }
+ !$acc parallel loop worker vector ! { dg-message "note: assigned OpenACC worker vector loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop gang worker ! { dg-message "note: Detected parallelism <acc loop gang worker>" }
+ !$acc parallel loop gang worker vector ! { dg-message "note: assigned OpenACC gang worker vector loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop worker vector ! { dg-message "note: Detected parallelism <acc loop worker vector>" }
+ !$acc parallel loop gang ! { dg-message "note: assigned OpenACC gang loop parallelism" }
do x = 1, 10
+ !$acc loop worker ! { dg-message "note: assigned OpenACC worker loop parallelism" }
+ do y = 1, 10
+ !$acc loop vector ! { dg-message "note: assigned OpenACC vector loop parallelism" }
+ do z = 1, 10
+ end do
+ end do
end do
- !$acc parallel loop gang worker vector ! { dg-message "note: Detected parallelism <acc loop gang worker vector>" }
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC gang vector loop parallelism" }
do x = 1, 10
end do
- !$acc parallel loop ! { dg-message "note: Detected parallelism <acc loop gang vector>" }
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
do x = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
+ do y = 1, 10
+ end do
end do
- !$acc parallel loop ! { dg-message "note: Detected parallelism <acc loop gang worker>" }
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC gang loop parallelism" }
do x = 1, 10
- !$acc loop ! { dg-message "note: Detected parallelism <acc loop vector>" }
+ !$acc loop ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do y = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
+ do z = 1, 10
+ end do
end do
end do
- !$acc parallel loop gang ! { dg-message "note: Detected parallelism <acc loop gang>" }
+ !$acc parallel
do x = 1, 10
- !$acc loop worker ! { dg-message "note: Detected parallelism <acc loop worker>" }
+ !$acc loop ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
do y = 1, 10
- !$acc loop vector ! { dg-message "note: Detected parallelism <acc loop vector>" }
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do z = 1, 10
end do
end do
end do
+ !$acc end parallel
+
+ !$acc parallel loop seq ! { dg-message "note: assigned OpenACC seq loop parallelism" }
+ do x = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
+ do y = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
+ do z = 1, 10
+ end do
+ end do
+ end do
+
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
+ do x = 1, 10
+ !$acc loop seq ! { dg-message "note: assigned OpenACC seq loop parallelism" }
+ do y = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
+ do z = 1, 10
+ end do
+ end do
+ end do
+
+ !$acc parallel loop ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
+ do x = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC vector loop parallelism" }
+ do y = 1, 10
+ !$acc loop seq ! { dg-message "note: assigned OpenACC seq loop parallelism" }
+ do z = 1, 10
+ end do
+ end do
+ end do
+
+ !$acc parallel loop seq ! { dg-message "note: assigned OpenACC seq loop parallelism" }
+ do x = 1, 10
+ !$acc loop ! { dg-message "note: assigned OpenACC gang vector loop parallelism" }
+ do y = 1, 10
+ !$acc loop seq ! { dg-message "note: assigned OpenACC seq loop parallelism" }
+ do z = 1, 10
+ end do
+ end do
+ end do
+
end program test
@@ -1,14 +1,14 @@
! Ensure that the middle end does not assign gang level parallelism to
! orphan loop containing reductions.
-! { dg-additional-options "-fopt-info-note-omp" }
+! { dg-additional-options "-fopt-info-optimized-omp" }
subroutine s1 ! { dg-warning "region is gang partitioned but does not contain gang partitioned code" }
implicit none
!$acc routine gang
integer i, sum
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop worker vector>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC worker vector loop parallelism" }
do i = 1, 10
sum = sum + 1
end do
@@ -19,9 +19,9 @@ subroutine s2 ! { dg-warning "region is gang partitioned but does not contain ga
!$acc routine gang
integer i, j, sum
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop worker>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do i = 1, 10
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do j = 1, 10
sum = sum + 1
end do
@@ -33,12 +33,12 @@ subroutine s3 ! { dg-warning "region is gang partitioned but does not contain ga
!$acc routine gang
integer i, j, k, sum
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop worker>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do i = 1, 10
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop seq>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC seq loop parallelism" }
! { dg-warning "insufficient partitioning available to parallelize loop" "" { target *-*-* } .-1 }
do j = 1, 10
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do k = 1, 10
sum = sum + 1
end do
@@ -52,16 +52,16 @@ subroutine s4
integer i, j, k, sum
!$acc parallel copy(sum)
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop gang vector>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC gang vector loop parallelism" }
do i = 1, 10
sum = sum + 1
end do
!$acc end parallel
!$acc parallel copy(sum)
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop gang worker>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC gang worker loop parallelism" }
do i = 1, 10
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do j = 1, 10
sum = sum + 1
end do
@@ -69,11 +69,11 @@ subroutine s4
!$acc end parallel
!$acc parallel copy(sum)
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop gang>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC gang loop parallelism" }
do i = 1, 10
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop worker>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC worker loop parallelism" }
do j = 1, 10
- !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism <acc loop vector>" }
+ !$acc loop reduction (+:sum) ! { dg-message "note: assigned OpenACC vector loop parallelism" }
do k = 1, 10
sum = sum + 1
end do
--
2.17.1