[PATCH 0/9] [OpenACC] Refcounting and manual deep copy improvements
Julian Brown
julian@codesourcery.com
Tue Jun 16 22:38:30 GMT 2020
This patch series collects several improvements/bugfixes to the reference
counting and manual deep-copy implementation for OpenACC, mostly based
on review feedback from Thomas. In short, areas addressed are:
- Some unexpectedly-dead code in goacc_enter_data_internal
introduced by "Adjust dynamic reference count
semantics" is no longer dead. Flagged by Thomas in:
https://gcc.gnu.org/pipermail/gcc-patches/2020-June/547196.html
- PR95270 ("OpenACC 'enter data attach' looks up target memory object
displaced by pointer size") has been fixed for C, C++ and Fortran.
- As part of the Fortran fix above, we no longer strip GOMP_MAP_TO_PSET,
GOMP_MAP_POINTER from OpenACC "enter data" and "exit data" directives.
- We now suppress detach operations for "no-op" exit data operations
when the dynamic refcount for the associated data is zero, fixing
several newishly-added testcases.
Further discussion on individual patches. Tested (as a series) with
offloading to NVPTX. OK?
Thanks,
Julian
Julian Brown (9):
[OpenACC] Fortran derived-type mapping fix
[OpenACC] GOMP_MAP_ATTACH handling in find_group_last
[OpenACC] Adjust dynamic reference count semantics
[OpenACC] Don't pass kind array via pointer to goacc_enter_datum
[OpenACC] Fix incompatible copyout for acc_map_data (PR92843)
[OpenACC] Set bias to zero for explicit attach/detach clauses in C and
C++
[OpenACC] Do not strip GOMP_MAP_TO_PSET/GOMP_MAP_POINTER for
enter/exit data directives
[OpenACC] Fix standalone attach for Fortran assumed-shape array
pointers
[OpenACC] Don't detach for no-op exit data with zero dynamic refcount
gcc/c/c-typeck.c | 8 +
gcc/cp/semantics.c | 8 +
gcc/fortran/trans-openmp.c | 44 +++-
gcc/gimplify.c | 11 +-
gcc/testsuite/c-c++-common/goacc/mdc-1.c | 14 +-
gcc/testsuite/gfortran.dg/goacc/finalize-1.f | 4 +-
.../gfortran.dg/goacc/mapping-tests-3.f90 | 15 ++
.../gfortran.dg/goacc/mapping-tests-4.f90 | 17 ++
libgomp/libgomp.h | 8 +-
libgomp/oacc-mem.c | 243 ++++++++++++++----
libgomp/target.c | 38 +--
.../libgomp.oacc-c-c++-common/pr92843-1.c | 1 -
.../libgomp.oacc-c-c++-common/refcounting-1.c | 31 +++
.../libgomp.oacc-c-c++-common/refcounting-2.c | 31 +++
.../attach-descriptor-1.f90 | 51 ++++
.../libgomp.oacc-fortran/deep-copy-6.f90 | 6 +-
.../mdc-refcount-1-1-1.f90 | 6 +-
.../mdc-refcount-1-1-2.F90 | 2 +-
.../mdc-refcount-1-2-1.f90 | 6 +-
.../mdc-refcount-1-2-2.f90 | 6 +-
.../mdc-refcount-1-3-1.f90 | 6 +-
.../mdc-refcount-1-3-2.f90 | 5 +-
.../mdc-refcount-1-4-1.f90 | 6 +-
.../mdc-refcount-1-4-2.f90 | 5 +-
24 files changed, 430 insertions(+), 142 deletions(-)
create mode 100644 gcc/testsuite/gfortran.dg/goacc/mapping-tests-3.f90
create mode 100644 gcc/testsuite/gfortran.dg/goacc/mapping-tests-4.f90
create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/refcounting-1.c
create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/refcounting-2.c
create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/attach-descriptor-1.f90
--
2.23.0
More information about the Gcc-patches
mailing list