From patchwork Tue Nov 20 21:54:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julian Brown X-Patchwork-Id: 1000752 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-490565-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="RXWs8tPF"; 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 42zzyt2433z9s3q for ; Wed, 21 Nov 2018 08:55:15 +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:date:message-id:mime-version:content-type; q=dns; s=default; b=RjdEYTrhI6nCkV90m6pVUEMwmcLL6i2t412jZ+GsXK5A2jvQyM UCMuKfsjl9rxsj6wrLmjeuDyJMCov0RTOdh7au1EWLQ9XqCQ6KYe4WkA+UnrvjIr fEbFSw3y9MaDLdhqxdX/XmqUlCyF72Ne4dosv14rFm7TQyrlbqmkUVdhY= 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:date:message-id:mime-version:content-type; s= default; bh=QD+BIYS12GevSg8kcU9Hj6khLF8=; b=RXWs8tPFD2zifMfUzrrw wkJshN95AuAqp0ik3rp3Bl2Zfp+rQYiAk1N/2EjRb41tXQ32Yfy+FBZDPYTByl7P VJYUm1wWTsFD1HBBikpBrHVVCwGzs8TYAYjKYLEocP10r+/j/VA8w/hWlzceIa2o nuEp4PWtaozdi6M4WhGoA3w= Received: (qmail 40626 invoked by alias); 20 Nov 2018 21:55:08 -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 40608 invoked by uid 89); 20 Nov 2018 21:55:08 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-12.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=291, UD:target.c, targetc, target.c 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; Tue, 20 Nov 2018 21:55:06 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-MBX-04.mgc.mentorg.com) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1gPDz5-0002vH-NJ from Julian_Brown@mentor.com ; Tue, 20 Nov 2018 13:55:03 -0800 Received: from localhost.localdomain (147.34.91.1) by SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Tue, 20 Nov 2018 21:54:58 +0000 From: Julian Brown To: CC: , , Subject: [PATCH 0/6] [og8] OpenACC attach/detach Date: Tue, 20 Nov 2018 13:54:46 -0800 Message-ID: MIME-Version: 1.0 X-IsSubscribed: yes This patch series is a backport of the OpenACC attach/detach support to the openacc-gcc-8-branch branch. It was previously posted upstream here: https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00823.html This version of the series has been adjusted to account for features on the branch that are not yet upstream. It also contains improvements to the reference counting behaviour, partially verified using self-checking code (not quite complete, and not yet submitted). Tested (as a series) with offloading to nvptx. I will apply to the openacc-gcc-8-branch shortly. Julian Brown (6): [og8] Host-to-device transfer coalescing & magic offset value self-documentation [og8] Factor out duplicate code in gimplify_scan_omp_clauses [og8] OpenACC 2.6 manual deep copy support (attach/detach) [og8] Interaction of dynamic/multidimensional arrays with attach/detach. [og8] Backport parts of upstream declare-allocate patch [og8] OpenACC refcounting refresh gcc/c/c-parser.c | 15 +- gcc/c/c-typeck.c | 4 + gcc/cp/parser.c | 16 +- gcc/cp/semantics.c | 6 +- gcc/fortran/gfortran.h | 2 + gcc/fortran/openmp.c | 126 ++++-- gcc/fortran/trans-openmp.c | 163 +++----- gcc/gimplify.c | 414 ++++++++++-------- gcc/omp-low.c | 13 +- .../c-c++-common/goacc/deep-copy-multidim.c | 32 ++ gcc/testsuite/c-c++-common/goacc/mdc-1.c | 10 +- gcc/testsuite/gfortran.dg/goacc/data-clauses.f95 | 38 +- gcc/testsuite/gfortran.dg/goacc/derived-types.f90 | 23 +- .../gfortran.dg/goacc/enter-exit-data.f95 | 24 +- .../gfortran.dg/goacc/kernels-alias-3.f95 | 4 +- libgomp/libgomp.h | 30 ++- libgomp/libgomp.map | 10 + libgomp/oacc-mem.c | 459 ++++++++++++-------- libgomp/oacc-parallel.c | 212 ++++++++-- libgomp/openacc.h | 6 + libgomp/target.c | 291 +++++++++++-- .../libgomp.oacc-c-c++-common/context-2.c | 6 +- .../libgomp.oacc-c-c++-common/context-4.c | 6 +- .../libgomp.oacc-c-c++-common/deep-copy-1.c | 24 + .../libgomp.oacc-c-c++-common/deep-copy-2.c | 29 ++ .../libgomp.oacc-c-c++-common/deep-copy-3.c | 34 ++ .../libgomp.oacc-c-c++-common/deep-copy-4.c | 87 ++++ .../libgomp.oacc-c-c++-common/deep-copy-5.c | 81 ++++ .../libgomp.oacc-c-c++-common/deep-copy-6.c | 59 +++ .../libgomp.oacc-c-c++-common/deep-copy-7.c | 42 ++ .../libgomp.oacc-c-c++-common/deep-copy-8.c | 53 +++ libgomp/testsuite/libgomp.oacc-fortran/data-2.f90 | 20 +- .../testsuite/libgomp.oacc-fortran/deep-copy-1.f90 | 35 ++ .../testsuite/libgomp.oacc-fortran/deep-copy-2.f90 | 33 ++ .../testsuite/libgomp.oacc-fortran/deep-copy-3.f90 | 34 ++ .../testsuite/libgomp.oacc-fortran/deep-copy-4.f90 | 49 ++ .../testsuite/libgomp.oacc-fortran/deep-copy-5.f90 | 57 +++ .../testsuite/libgomp.oacc-fortran/deep-copy-6.f90 | 61 +++ .../testsuite/libgomp.oacc-fortran/deep-copy-7.f90 | 89 ++++ .../testsuite/libgomp.oacc-fortran/deep-copy-8.f90 | 41 ++ .../libgomp.oacc-fortran/derived-type-1.f90 | 6 +- .../libgomp.oacc-fortran/non-scalar-data.f90 | 6 +- .../testsuite/libgomp.oacc-fortran/update-2.f90 | 44 +- 43 files changed, 2079 insertions(+), 715 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/goacc/deep-copy-multidim.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-2.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-1.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-2.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-3.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-4.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-5.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-6.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-7.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/deep-copy-8.f90