From patchwork Mon Jan 28 21:35:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 1032256 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-494859-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="fUVE40cq"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43pNGW5n3nz9sCX for ; Tue, 29 Jan 2019 08:35:46 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; q=dns; s=default; b=SC1GUkfwNRMlmw5E oqJ1M9RFL9DEeSQ2rtHHhI3Gzyk93oYpfFkUPhzp24bw/Opu8HoK/1B64AnRPRcj PJ1eEG7q9qdkv9LNZhrYzELuvFwzKYrassLtFHdpmpslvaCQDcQHBgYlxMo1KnqP AqLrCwcZ+odgXYsGb7kGdsQHD6M= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=default; bh=VnbB/am5MLdS5UOiIS/3IJ U1HnY=; b=fUVE40cquSLL67YDgUuuBGATeNbF9aSUHtFMagZeu2BQbj3B6cu70J CM/CLVull2c8qgYeELwA/cdZGU+rB9miUiWeo+6krLCBRN57XDYkMbfyNUKHiggL qAVL/acMRPnnvjfESIZgEXYTpWLGjI872MOEP7IAVHlJ5tNlWx7r4= Received: (qmail 91649 invoked by alias); 28 Jan 2019 21:35:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 91637 invoked by uid 89); 28 Jan 2019 21:35:37 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=utilize, falls X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 28 Jan 2019 21:35:29 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=svr-ies-mbx-01.mgc.mentorg.com) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1goEYw-00058z-HC from Thomas_Schwinge@mentor.com for gcc-patches@gcc.gnu.org; Mon, 28 Jan 2019 13:35:27 -0800 Received: from hertz.schwinge.homeip.net (137.202.0.90) by svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Mon, 28 Jan 2019 21:35:22 +0000 From: Thomas Schwinge To: CC: =?utf-8?b?R2VyZ8O2?= Barany Subject: [og8] Add user-friendly diagnostics for OpenACC loop parallelism assigned In-Reply-To: <87y38rrfc1.fsf@euler.schwinge.homeip.net> References: <71c14c108ca5d2c936c4350ed127aa2276316f1d.1532531520.git.cesar@codesourcery.com> <7ed79d2c-6bee-e791-8a5a-168334fd2a19@codesourcery.com> <87y38rrfc1.fsf@euler.schwinge.homeip.net> User-Agent: Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/25.2.2 (x86_64-pc-linux-gnu) Date: Mon, 28 Jan 2019 22:35:11 +0100 Message-ID: MIME-Version: 1.0 Hi! On Fri, 14 Dec 2018 22:03:26 +0100, I wrote: > On Thu, 26 Jul 2018 07:14:21 -0700, Cesar Philippidis wrote: > > [...] > > I further changed that to make it build ;-) at all, and also emit > diagnostics for OpenACC kernels constructs, and also added considerably > more testsuite coverage. > > Committed to trunk in r267146: > > commit 75180da2a558d3106e26173326933f65b417182c > Author: tschwinge > Date: Fri Dec 14 20:41:58 2018 +0000 > > Add user-friendly diagnostics for OpenACC loop parallelism assigned Backported my changes to openacc-gcc-8-branch, see attached. Grüße Thomas From 010a7a9220c55c6bdf803617c72ed912a790267c Mon Sep 17 00:00:00 2001 From: Thomas Schwinge 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(-) diff --git a/gcc/ChangeLog.openacc b/gcc/ChangeLog.openacc index 22cdb5ba753..28d60da45b2 100644 --- a/gcc/ChangeLog.openacc +++ b/gcc/ChangeLog.openacc @@ -1,3 +1,8 @@ +2019-01-28 Thomas Schwinge + + * omp-offload.c (inform_oacc_loop, execute_oacc_device_lower): + Update. + 2019-01-09 Julian Brown * doc/invoke.texi: Update mention of OpenACC version to 2.6. diff --git a/gcc/omp-offload.c b/gcc/omp-offload.c index d428c6fdb62..60a85cba613 100644 --- a/gcc/omp-offload.c +++ b/gcc/omp-offload.c @@ -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 \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. */ diff --git a/gcc/testsuite/ChangeLog.openacc b/gcc/testsuite/ChangeLog.openacc index 3bdce2e457d..ea136a306dc 100644 --- a/gcc/testsuite/ChangeLog.openacc +++ b/gcc/testsuite/ChangeLog.openacc @@ -1,3 +1,25 @@ +2019-01-28 Thomas Schwinge + + * 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 * c-c++-common/cpp/openacc-define-3.c: Update expected value for diff --git a/gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c b/gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c index 626f6b4fe68..64467774037 100644 --- a/gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c +++ b/gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c @@ -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)]; } diff --git a/gcc/testsuite/c-c++-common/goacc/classify-kernels.c b/gcc/testsuite/c-c++-common/goacc/classify-kernels.c index 95037e6120e..c59a65e1d0f 100644 --- a/gcc/testsuite/c-c++-common/goacc/classify-kernels.c +++ b/gcc/testsuite/c-c++-common/goacc/classify-kernels.c @@ -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]; } diff --git a/gcc/testsuite/c-c++-common/goacc/classify-parallel.c b/gcc/testsuite/c-c++-common/goacc/classify-parallel.c index 4f97301f5cf..b345c225aea 100644 --- a/gcc/testsuite/c-c++-common/goacc/classify-parallel.c +++ b/gcc/testsuite/c-c++-common/goacc/classify-parallel.c @@ -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]; } diff --git a/gcc/testsuite/c-c++-common/goacc/classify-routine.c b/gcc/testsuite/c-c++-common/goacc/classify-routine.c index f54c3942bbf..5ca2ec9c603 100644 --- a/gcc/testsuite/c-c++-common/goacc/classify-routine.c +++ b/gcc/testsuite/c-c++-common/goacc/classify-routine.c @@ -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]; } diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-1.c b/gcc/testsuite/c-c++-common/goacc/kernels-1.c index 4fcf86eca69..0a4bd854611 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-1.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-1.c @@ -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++) diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c b/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c index 10b364b367c..dd3b7c8b144 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c @@ -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) diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c b/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c index c0263460c1d..0175434a20c 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c @@ -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) diff --git a/gcc/testsuite/c-c++-common/goacc/loop-auto-3.c b/gcc/testsuite/c-c++-common/goacc/loop-auto-3.c index 2c32dcadbc0..97b8d75104c 100644 --- a/gcc/testsuite/c-c++-common/goacc/loop-auto-3.c +++ b/gcc/testsuite/c-c++-common/goacc/loop-auto-3.c @@ -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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */ for (j = 0; j < n; j++) -#pragma acc loop /* { dg-message "Detected parallelism " } */ +#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 " } */ +#pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */ for (l = 0; l < n; l++) ; } diff --git a/gcc/testsuite/c-c++-common/goacc/note-parallelism.c b/gcc/testsuite/c-c++-common/goacc/note-parallelism.c index 3ec794c7ab4..7548fb72d14 100644 --- a/gcc/testsuite/c-c++-common/goacc/note-parallelism.c +++ b/gcc/testsuite/c-c++-common/goacc/note-parallelism.c @@ -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 " } */ +#pragma acc parallel for (x = 0; x < 10; x++) ; -#pragma acc parallel loop gang /* { dg-message "note: Detected parallelism " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#pragma acc loop seq /* { dg-message "note: assigned OpenACC seq loop parallelism" } */ for (z = 0; z < 10; z++) ; diff --git a/gcc/testsuite/c-c++-common/goacc/orphan-reductions-2.c b/gcc/testsuite/c-c++-common/goacc/orphan-reductions-2.c index 8ea4ce37344..bc29f3672c4 100644 --- a/gcc/testsuite/c-c++-common/goacc/orphan-reductions-2.c +++ b/gcc/testsuite/c-c++-common/goacc/orphan-reductions-2.c @@ -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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#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 " } */ +#pragma acc loop reduction (+:sum) /* { dg-message "note: assigned OpenACC vector loop parallelism" } */ for (k = 0; k < 100; k++) sum++; } diff --git a/gcc/testsuite/gcc.target/nvptx/oacc-autopar.c b/gcc/testsuite/gcc.target/nvptx/oacc-autopar.c index e574fb1838e..2cae7149eef 100644 --- a/gcc/testsuite/gcc.target/nvptx/oacc-autopar.c +++ b/gcc/testsuite/gcc.target/nvptx/oacc-autopar.c @@ -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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #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 " } */ + #pragma acc loop /* { dg-message "note: assigned OpenACC gang loop parallelism" } */ for (i = 0; i < 10; i++) - #pragma acc loop /* { dg-message "Detected parallelism " } */ + #pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */ for (j = 0; j < 10; j++) - #pragma acc loop /* { dg-message "Detected parallelism " } */ + #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 " } */ + #pragma acc loop /* { dg-message "note: assigned OpenACC gang loop parallelism" } */ for (i = 0; i < 10; i++) - #pragma acc loop /* { dg-message "Detected parallelism " } */ + #pragma acc loop /* { dg-message "note: assigned OpenACC worker loop parallelism" } */ for (j = 0; j < 10; j++) - #pragma acc loop /* { dg-message "Detected parallelism " } */ + #pragma acc loop /* { dg-message "note: assigned OpenACC vector loop parallelism" } */ for (k = 0; k < 10; k++) ; } diff --git a/gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95 b/gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95 index 4b282cab5ae..1b3b02aaf6c 100644 --- a/gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95 b/gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95 index da025c19af8..9d9827dbdf5 100644 --- a/gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95 b/gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95 index e215c79be61..c1ed044b448 100644 --- a/gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/goacc/classify-routine.f95 b/gcc/testsuite/gfortran.dg/goacc/classify-routine.f95 index 445ff9afd4e..38c32fa4f65 100644 --- a/gcc/testsuite/gfortran.dg/goacc/classify-routine.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/classify-routine.f95 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 index 33347414152..16a64e6d76d 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/goacc/loop-auto-1.f90 b/gcc/testsuite/gfortran.dg/goacc/loop-auto-1.f90 index 7fc9210997c..2bbb6f79a05 100644 --- a/gcc/testsuite/gfortran.dg/goacc/loop-auto-1.f90 +++ b/gcc/testsuite/gfortran.dg/goacc/loop-auto-1.f90 @@ -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 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 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 ! { 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 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 auto ! { dg-message "note: assigned OpenACC seq loop parallelism" } do j = 1, n - !$acc loop auto ! { dg-message "Detected parallelism " } + !$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 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 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 ! { dg-message "note: assigned OpenACC worker loop parallelism" } do j = 1, n - !$acc loop vector ! { dg-message "Detected parallelism " } + !$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 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 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 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 ! { dg-message "note: assigned OpenACC gang worker loop parallelism" } do j = 1, n - !$acc loop auto ! { dg-message "Detected parallelism " } + !$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 ! { 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 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 ! { dg-message "note: assigned OpenACC worker loop parallelism" } do j = 1, n - !$acc loop vector ! { dg-message "Detected parallelism " } + !$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 parallel loop ! { dg-message "note: assigned OpenACC gang loop parallelism" } do i = 1, n - !$acc loop ! { dg-message "Detected parallelism " } + !$acc loop ! { dg-message "note: assigned OpenACC worker loop parallelism" } do j = 1, n - !$acc loop ! { dg-message "Detected parallelism " } + !$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 ! { dg-message "note: assigned OpenACC vector loop parallelism" } do l = 1, n end do end do diff --git a/gcc/testsuite/gfortran.dg/goacc/note-parallelism.f90 b/gcc/testsuite/gfortran.dg/goacc/note-parallelism.f90 index a0c78c52058..6aaf1fe290a 100644 --- a/gcc/testsuite/gfortran.dg/goacc/note-parallelism.f90 +++ b/gcc/testsuite/gfortran.dg/goacc/note-parallelism.f90 @@ -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 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 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 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 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 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 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 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 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 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 parallel loop ! { dg-message "note: assigned OpenACC gang loop parallelism" } do x = 1, 10 - !$acc loop ! { dg-message "note: Detected parallelism " } + !$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 parallel do x = 1, 10 - !$acc loop worker ! { dg-message "note: Detected parallelism " } + !$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 ! { 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 diff --git a/gcc/testsuite/gfortran.dg/goacc/orphan-reductions-2.f90 b/gcc/testsuite/gfortran.dg/goacc/orphan-reductions-2.f90 index c10a5838fb0..02c5c2138b5 100644 --- a/gcc/testsuite/gfortran.dg/goacc/orphan-reductions-2.f90 +++ b/gcc/testsuite/gfortran.dg/goacc/orphan-reductions-2.f90 @@ -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 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 reduction (+:sum) ! { dg-message "note: assigned OpenACC worker loop parallelism" } do i = 1, 10 - !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism " } + !$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 reduction (+:sum) ! { dg-message "note: assigned OpenACC worker loop parallelism" } do i = 1, 10 - !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism " } + !$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 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 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 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 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 reduction (+:sum) ! { dg-message "note: assigned OpenACC gang loop parallelism" } do i = 1, 10 - !$acc loop reduction (+:sum) ! { dg-message "Detected parallelism " } + !$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 reduction (+:sum) ! { dg-message "note: assigned OpenACC vector loop parallelism" } do k = 1, 10 sum = sum + 1 end do -- 2.17.1