mbox series

[0/6,og8] OpenACC attach/detach

Message ID cover.1542748807.git.julian@codesourcery.com
Headers show
Series OpenACC attach/detach | expand

Message

Julian Brown Nov. 20, 2018, 9:54 p.m. UTC
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