From patchwork Fri Sep 25 08:19:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 522694 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 5AB291402A2 for ; Fri, 25 Sep 2015 18:20:38 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=QYTzg2sY; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to :from:subject:message-id:date:mime-version:content-type; q=dns; s=default; b=rVhyP8S2IIVL+pu+IEJrGEdHTuxjqf7xOcNYRu/L2N0ZVN9v5+ Ru9FCLbzK9F8GCB3WCRT0pmkl8ihA4fc9lDGpbZ3MJiiViYjZMYRfmX2ftd4BTRw UqKR2FAL+vAce68ZiQxHEvAbG3BbYUK4yeS5frg0ukuR9jizDlmgNmqpM= 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:to :from:subject:message-id:date:mime-version:content-type; s= default; bh=d6xSXwop0BDDJN1sDJTKtY9lcuo=; b=QYTzg2sYMlUZBTT9Ukuw vWd6fRcbyp1FqPyZjFNy5j6Z5z95NsUlFfiNW4Lr4Hc1DHUbGdNXnzxeeUZyHI8g yXAXQkhRwD8f89/BMeiicBiZ9/pip3ITEct/j+RO40+hDQrLjk7ikU6UGRC4C+hd Sj3wELlYmhBy6W5Xy/oEuZ8= Received: (qmail 59868 invoked by alias); 25 Sep 2015 08:20:31 -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 59855 invoked by uid 89); 25 Sep 2015 08:20:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-HELO: fencepost.gnu.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (208.118.235.10) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 25 Sep 2015 08:20:29 +0000 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41242) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ZfOF0-0007eA-SV for gcc-patches@gnu.org; Fri, 25 Sep 2015 04:20:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZfOEv-0001zi-ME for gcc-patches@gnu.org; Fri, 25 Sep 2015 04:20:26 -0400 Received: from relay1.mentorg.com ([192.94.38.131]:58712) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZfOEv-0001wm-HX for gcc-patches@gnu.org; Fri, 25 Sep 2015 04:20:21 -0400 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-02.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1ZfOEr-0006Ah-9r from Tom_deVries@mentor.com for gcc-patches@gnu.org; Fri, 25 Sep 2015 01:20:17 -0700 Received: from [127.0.0.1] (137.202.0.76) by SVR-IES-FEM-02.mgc.mentorg.com (137.202.0.106) with Microsoft SMTP Server id 14.3.224.2; Fri, 25 Sep 2015 09:20:15 +0100 To: "gcc-patches@gnu.org" From: Tom de Vries Subject: [gomp4, committed] Skip inner loops in oacc kernels region Message-ID: <560503AD.4080005@mentor.com> Date: Fri, 25 Sep 2015 10:19:57 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Windows NT kernel [generic] [fuzzy] X-Received-From: 192.94.38.131 Hi, this patch fixes an ICE when trying to parallelize inner loops in an oacc kernels region. The patch fixes it by not trying to parallelize those inner loops. Committed to gomp-4_0-branch. Thanks, - Tom Skip inner loops in oacc kernels region 2015-09-24 Tom de Vries * tree-parloops.c (parallelize_loops): Skip inner loops in oacc kernels region. * gfortran.dg/goacc/kernels-loop-inner.f95: New test. --- .../gfortran.dg/goacc/kernels-loop-inner.f95 | 23 ++++++++++++++++++++++ gcc/tree-parloops.c | 8 +++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 new file mode 100644 index 0000000..4db3a50 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95 @@ -0,0 +1,23 @@ +! { dg-additional-options "-O2" } +! { dg-additional-options "-ftree-parallelize-loops=32" } + +program main + implicit none + + integer :: a(100,100), b(100,100) + integer :: i, j, d + + !$acc kernels + do i=1,100 + do j=1,100 + a(i,j) = 1 + b(i,j) = 2 + a(i,j) = a(i,j) + b(i,j) + end do + end do + !$acc end kernels + + d = sum(a) + + print *,d +end program main diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 04ec254..5d93bc2 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -2792,7 +2792,8 @@ parallelize_loops (bool oacc_kernels_p) { if (loop == skip_loop) { - if (dump_file && (dump_flags & TDF_DETAILS)) + if (!loop->in_oacc_kernels_region + && dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "Skipping loop %d as inner loop of parallelized loop\n", loop->num); @@ -2810,6 +2811,10 @@ parallelize_loops (bool oacc_kernels_p) if (!loop->in_oacc_kernels_region) continue; + /* Don't try to parallelize inner loops in an oacc kernels region. */ + if (loop->inner) + skip_loop = loop->inner; + if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "Trying loop %d with header bb %d in oacc kernels region\n", @@ -2892,6 +2897,7 @@ parallelize_loops (bool oacc_kernels_p) } changed = true; + /* Skip inner loop(s) of parallelized loop. */ skip_loop = loop->inner; if (dump_file && (dump_flags & TDF_DETAILS)) { -- 1.9.1