From e464fc903506b75bef90374ab520b52df317a00e Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 3 Feb 2020 10:10:37 +0100 Subject: [PATCH] [OpenACC] bump version for 2.6 plus libgomp.texi update 2020-02-03 Julian Brown Tobias Burnus gcc/c-family/ * c-cppbuiltin.c (c_cpp_builtins): Update _OPENACC define to 201711. gcc/ * doc/invoke.texi: Update mention of OpenACC version to 2.6. gcc/fortran/ * cpp.c (cpp_define_builtins): Update _OPENACC define to 201711. * intrinsic.texi: Update mentions of OpenACC version to 2.6. * gfortran.texi: Likewise. Remove experimental disclamer for OpenACC. * invoke.texi: Remove experimental disclamer for OpenACC. gcc/testsuite/ * c-c++-common/cpp/openacc-define-3.c: Update expected value for _OPENACC define. * gfortran.dg/openacc-define-3.f90: Likewise. libgomp/ * libgomp.texi (OpenACC Runtime Library Routines): Document *_async and *_finalize variants; document acc_attach and acc_detach; update references from OpenACC 2.0 to 2.6. * openacc.f90 (openacc_version): Update to 201711. * openacc_lib.h (openacc_version): Update to 201711. * testsuite/libgomp.oacc-fortran/openacc_version-1.f: Update expected openacc_version to 201711. * testsuite/libgomp.oacc-fortran/openacc_version-2.f90: Likewise. --- gcc/ChangeLog | 5 + gcc/c-family/ChangeLog | 5 + gcc/c-family/c-cppbuiltin.c | 2 +- gcc/doc/invoke.texi | 2 +- gcc/fortran/ChangeLog | 10 +- gcc/fortran/cpp.c | 2 +- gcc/fortran/gfortran.texi | 15 +- gcc/fortran/intrinsic.texi | 6 +- gcc/fortran/invoke.texi | 4 - gcc/testsuite/ChangeLog | 7 + .../c-c++-common/cpp/openacc-define-3.c | 2 +- .../gfortran.dg/openacc-define-3.f90 | 2 +- libgomp/ChangeLog | 12 + libgomp/libgomp.texi | 257 +++++++++++++----- libgomp/openacc.f90 | 2 +- libgomp/openacc_lib.h | 2 +- .../libgomp.oacc-fortran/openacc_version-1.f | 2 +- .../openacc_version-2.f90 | 2 +- 18 files changed, 244 insertions(+), 95 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2cb1b9f7361..ca88b31e6e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-02-03 Julian Brown + Tobias Burnus + + * doc/invoke.texi: Update mention of OpenACC version to 2.6. + 2020-02-03 Jakub Jelinek PR target/93533 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b15630df41b..9d9962068bb 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2020-02-03 Julian Brown + Tobias Burnus + + * c-cppbuiltin.c (c_cpp_builtins): Update _OPENACC define to 201711. + 2020-01-29 Jason Merrill PR c++/89357 diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index 70a12055e27..5532ae46ae1 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -1435,7 +1435,7 @@ c_cpp_builtins (cpp_reader *pfile) cpp_define (pfile, "__SSP__=1"); if (flag_openacc) - cpp_define (pfile, "_OPENACC=201306"); + cpp_define (pfile, "_OPENACC=201711"); if (flag_openmp) cpp_define (pfile, "_OPENMP=201511"); diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b8ba8a34e29..4dec0c8326b 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -2248,7 +2248,7 @@ freestanding and hosted environments. Enable handling of OpenACC directives @code{#pragma acc} in C/C++ and @code{!$acc} in Fortran. When @option{-fopenacc} is specified, the compiler generates accelerated code according to the OpenACC Application -Programming Interface v2.0 @w{@uref{https://www.openacc.org}}. This option +Programming Interface v2.6 @w{@uref{https://www.openacc.org}}. This option implies @option{-pthread}, and thus is only supported on targets that have support for @option{-pthread}. diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b74c2ddccb3..568bb78a183 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2020-02-03 Julian Brown + Tobias Burnus + + * cpp.c (cpp_define_builtins): Update _OPENACC define to 201711. + * intrinsic.texi: Update mentions of OpenACC version to 2.6. + * gfortran.texi: Likewise. Remove experimental disclamer for OpenACC. + * invoke.texi: Remove experimental disclamer for OpenACC. + 2020-02-03 Tobias Burnus PR fortran/93541 @@ -109,7 +117,7 @@ * interface.c (gfc_procedure_use): Also check parent namespace for 'implict none (external)'. * symbol.c (gfc_get_namespace): Don't set has_implicit_none_export - to parent namespace's setting. + to parent namespace's setting. 2020-01-19 Thomas König diff --git a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c index 8ab46986ae9..dcde5576cd5 100644 --- a/gcc/fortran/cpp.c +++ b/gcc/fortran/cpp.c @@ -166,7 +166,7 @@ cpp_define_builtins (cpp_reader *pfile) cpp_define (pfile, "_LANGUAGE_FORTRAN=1"); if (flag_openacc) - cpp_define (pfile, "_OPENACC=201306"); + cpp_define (pfile, "_OPENACC=201711"); if (flag_openmp) cpp_define (pfile, "_OPENMP=201511"); diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 0b52c1b6ab8..20fe38534d5 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -485,9 +485,6 @@ include OpenMP, Cray-style pointers, some old vendor extensions, and several Fortran 2003 and Fortran 2008 features, including TR 15581. However, it is still under development and has a few remaining rough edges. There also is initial support for OpenACC. -Note that this is an experimental feature, incomplete, and subject to -change in future versions of GCC. See -@uref{https://gcc.gnu.org/wiki/OpenACC} for more information. At present, the GNU Fortran compiler passes the @uref{http://www.fortran-2000.com/ArnaudRecipes/fcvs21_f95.html, @@ -546,10 +543,8 @@ status} and @ref{Fortran 2018 status} sections of the documentation. Additionally, the GNU Fortran compilers supports the OpenMP specification (version 4.0 and most of the features of the 4.5 version, @url{http://openmp.org/@/wp/@/openmp-specifications/}). -There also is initial support for the OpenACC specification (targeting -version 2.0, @uref{http://www.openacc.org/}). -Note that this is an experimental feature, incomplete, and subject to -change in future versions of GCC. See +There also is support for the OpenACC specification (targeting +version 2.6, @uref{http://www.openacc.org/}). See @uref{https://gcc.gnu.org/wiki/OpenACC} for more information. @node Varying Length Character Strings @@ -2245,7 +2240,7 @@ influence run-time behavior. GNU Fortran strives to be compatible to the @uref{http://www.openacc.org/, OpenACC Application Programming -Interface v2.0}. +Interface v2.6}. To enable the processing of the OpenACC directive @code{!$acc} in free-form source code; the @code{c$acc}, @code{*$acc} and @code{!$acc} @@ -2261,10 +2256,6 @@ The OpenACC Fortran runtime library routines are provided both in a form of a Fortran 90 module named @code{openacc} and in a form of a Fortran @code{include} file named @file{openacc_lib.h}. -Note that this is an experimental feature, incomplete, and subject to -change in future versions of GCC. See -@uref{https://gcc.gnu.org/wiki/OpenACC} for more information. - @node Argument list functions @subsection Argument list functions @code{%VAL}, @code{%REF} and @code{%LOC} @cindex argument list functions diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 842c88b2eba..36ca4e75f03 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -15371,7 +15371,7 @@ kind @code{omp_pause_resource_kind}: @section OpenACC Module @code{OPENACC} @table @asis @item @emph{Standard}: -OpenACC Application Programming Interface v2.0 +OpenACC Application Programming Interface v2.6 @end table @@ -15385,9 +15385,9 @@ are listed below. For details refer to the actual @uref{http://www.openacc.org/, -OpenACC Application Programming Interface v2.0}. +OpenACC Application Programming Interface v2.6}. @code{OPENACC} provides the scalar default-integer named constant @code{openacc_version} with a value of the form @var{yyyymm}, where @code{yyyy} is the year and @var{mm} the month -of the OpenACC version; for OpenACC v2.0 the value is @code{201306}. +of the OpenACC version; for OpenACC v2.6 the value is @code{201711}. diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 622123b5ae2..052d3178244 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -420,10 +420,6 @@ compilation sentinels in free form and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form, and when linking arranges for the OpenACC runtime library to be linked in. -Note that this is an experimental feature, incomplete, and subject to -change in future versions of GCC. See -@w{@uref{https://gcc.gnu.org/wiki/OpenACC}} for more information. - @item -fopenmp @opindex @code{fopenmp} @cindex OpenMP diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8f116971229..67ac4a79892 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2020-02-03 Julian Brown + Tobias Burnus + + * c-c++-common/cpp/openacc-define-3.c: Update expected value for + _OPENACC define. + * gfortran.dg/openacc-define-3.f90: Likewise. + 2020-02-03 Tobias Burnus PR fortran/93427 diff --git a/gcc/testsuite/c-c++-common/cpp/openacc-define-3.c b/gcc/testsuite/c-c++-common/cpp/openacc-define-3.c index ccedcd90782..f2122f57dd9 100644 --- a/gcc/testsuite/c-c++-common/cpp/openacc-define-3.c +++ b/gcc/testsuite/c-c++-common/cpp/openacc-define-3.c @@ -6,6 +6,6 @@ # error _OPENACC not defined #endif -#if _OPENACC != 201306 +#if _OPENACC != 201711 # error _OPENACC defined to wrong value #endif diff --git a/gcc/testsuite/gfortran.dg/openacc-define-3.f90 b/gcc/testsuite/gfortran.dg/openacc-define-3.f90 index b6c296e6b98..dcc52b6b4cb 100644 --- a/gcc/testsuite/gfortran.dg/openacc-define-3.f90 +++ b/gcc/testsuite/gfortran.dg/openacc-define-3.f90 @@ -6,6 +6,6 @@ # error _OPENACC not defined #endif -#if _OPENACC != 201306 +#if _OPENACC != 201711 # error _OPENACC defined to wrong value #endif diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 557bec34f2f..23d939f83e4 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,15 @@ +2020-02-03 Julian Brown + Tobias Burnus + + * libgomp.texi (OpenACC Runtime Library Routines): Document *_async + and *_finalize variants; document acc_attach and acc_detach; update + references from OpenACC 2.0 to 2.6. + * openacc.f90 (openacc_version): Update to 201711. + * openacc_lib.h (openacc_version): Update to 201711. + * testsuite/libgomp.oacc-fortran/openacc_version-1.f: Update expected + openacc_version to 201711. + * testsuite/libgomp.oacc-fortran/openacc_version-2.f90: Likewise. + 2020-01-31 Kwok Cheung Yeung * plugin/plugin-gcn.c (struct hsa_kernel_description): Add sgpr_count diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index f082a4a401b..e0c7e01ba41 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -1820,7 +1820,7 @@ arranges for automatic linking of the OpenACC runtime library A complete description of all OpenACC directives accepted may be found in the @uref{https://www.openacc.org, OpenACC} Application Programming -Interface manual, version 2.0. +Interface manual, version 2.6. Note that this is an experimental feature and subject to change in future versions of GCC. See @@ -1836,7 +1836,7 @@ change in future versions of GCC. See @chapter OpenACC Runtime Library Routines The runtime routines described here are defined by section 3 of the OpenACC -specifications in version 2.0. +specifications in version 2.6. They have C linkage, and do not throw exceptions. Generally, they are available only for the host, with the exception of @code{acc_on_device}, which is available for both the host and the @@ -1892,6 +1892,8 @@ acceleration device. present on device. * acc_memcpy_to_device:: Copy host memory to device memory. * acc_memcpy_from_device:: Copy device memory to host memory. +* acc_attach:: Let device pointer point to device-pointer target. +* acc_detach:: Let device pointer point to host-pointer target. API routines for target platforms. @@ -1929,7 +1931,7 @@ for the device type specified in @var{devicetype}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 3.2.1. @end table @@ -1954,7 +1956,7 @@ in @var{devicetype}, to use when executing a parallel or kernels region. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 3.2.2. @end table @@ -1979,7 +1981,7 @@ parallel or kernels region. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 3.2.3. @end table @@ -2006,7 +2008,7 @@ type @var{devicetype}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 3.2.4. @end table @@ -2033,7 +2035,7 @@ region. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 3.2.5. @end table @@ -2100,8 +2102,8 @@ a zero and Fortran returns a @code{false}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.6. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.9. @end table @@ -2128,8 +2130,8 @@ Fortran returns a @code{false}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.7. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.10. @end table @@ -2156,8 +2158,8 @@ specified in @var{arg}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.8. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.11. @end table @@ -2181,8 +2183,8 @@ This function waits for the completion of all asynchronous operations. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.10. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.13. @end table @@ -2207,8 +2209,8 @@ any queue. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.11. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.14. @end table @@ -2232,8 +2234,8 @@ asynchronous operations enqueued on queue @var{arg}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.9. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.12. @end table @@ -2257,8 +2259,8 @@ This function initializes the runtime for the device type specified in @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.12. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.7. @end table @@ -2282,8 +2284,8 @@ This function shuts down the runtime for the device type specified in @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.13. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.8. @end table @@ -2313,8 +2315,8 @@ return @code{false}. @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.14. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.17. @end table @@ -2332,8 +2334,8 @@ the device address of the allocated memory. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.15. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.18. @end table @@ -2350,8 +2352,8 @@ Free previously allocated device memory at the device address @code{a}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.16. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.19. @end table @@ -2371,6 +2373,7 @@ variable or array element and @var{len} specifies the length in bytes. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{void *acc_copyin(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{void *acc_copyin_async(h_void *a, size_t len, int async);} @end multitable @item @emph{Fortran}: @@ -2380,11 +2383,18 @@ variable or array element and @var{len} specifies the length in bytes. @item @emph{Interface}: @tab @code{subroutine acc_copyin(a, len)} @item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_copyin_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_copyin_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.17. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.20. @end table @@ -2402,6 +2412,9 @@ In Fortran, two (2) forms are supported. In the first form, @var{a} specifies a contiguous array section. The second form @var{a} specifies a variable or array element and @var{len} specifies the length in bytes. +Note that @code{acc_present_or_copyin} and @code{acc_pcopyin} exist for +backward compatibility with OpenACC 2.0; use @ref{acc_copyin} instead. + @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{void *acc_present_or_copyin(h_void *a, size_t len);} @@ -2423,8 +2436,8 @@ array element and @var{len} specifies the length in bytes. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.18. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.20. @end table @@ -2444,6 +2457,7 @@ array element and @var{len} specifies the length in bytes. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{void *acc_create(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{void *acc_create_async(h_void *a, size_t len, int async);} @end multitable @item @emph{Fortran}: @@ -2453,11 +2467,18 @@ array element and @var{len} specifies the length in bytes. @item @emph{Interface}: @tab @code{subroutine acc_create(a, len)} @item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_create_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_create_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.19. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.21. @end table @@ -2475,6 +2496,8 @@ In Fortran, two (2) forms are supported. In the first form, @var{a} specifies a contiguous array section. The second form @var{a} specifies a variable or array element and @var{len} specifies the length in bytes. +Note that @code{acc_present_or_create} and @code{acc_pcreate} exist for +backward compatibility with OpenACC 2.0; use @ref{acc_create} instead. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @@ -2497,8 +2520,8 @@ array element and @var{len} specifies the length in bytes. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.20. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.21. @end table @@ -2517,6 +2540,9 @@ array element and @var{len} specifies the length in bytes. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{acc_copyout(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{acc_copyout_async(h_void *a, size_t len, int async);} +@item @emph{Prototype}: @tab @code{acc_copyout_finalize(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{acc_copyout_finalize_async(h_void *a, size_t len, int async);} @end multitable @item @emph{Fortran}: @@ -2526,11 +2552,30 @@ array element and @var{len} specifies the length in bytes. @item @emph{Interface}: @tab @code{subroutine acc_copyout(a, len)} @item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_copyout_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_copyout_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_copyout_finalize(a)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @emph{Interface}: @tab @code{subroutine acc_copyout_finalize(a, len)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_copyout_finalize_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_copyout_finalize_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.21. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.22. @end table @@ -2549,6 +2594,9 @@ array element and @var{len} specifies the length in bytes. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{acc_delete(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{acc_delete_async(h_void *a, size_t len, int async);} +@item @emph{Prototype}: @tab @code{acc_delete_finalize(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{acc_delete_finalize_async(h_void *a, size_t len, int async);} @end multitable @item @emph{Fortran}: @@ -2558,11 +2606,30 @@ array element and @var{len} specifies the length in bytes. @item @emph{Interface}: @tab @code{subroutine acc_delete(a, len)} @item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_delete_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_delete_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_delete_finalize(a)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @emph{Interface}: @tab @code{subroutine acc_delete_finalize(a, len)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_delete_async_finalize(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_delete_async_finalize(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.22. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.23. @end table @@ -2582,6 +2649,7 @@ array element and @var{len} specifies the length in bytes. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{acc_update_device(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{acc_update_device(h_void *a, size_t len, async);} @end multitable @item @emph{Fortran}: @@ -2591,11 +2659,18 @@ array element and @var{len} specifies the length in bytes. @item @emph{Interface}: @tab @code{subroutine acc_update_device(a, len)} @item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_update_device_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_update_device_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.23. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.24. @end table @@ -2615,6 +2690,7 @@ array element and @var{len} specifies the length in bytes. @item @emph{C/C++}: @multitable @columnfractions .20 .80 @item @emph{Prototype}: @tab @code{acc_update_self(h_void *a, size_t len);} +@item @emph{Prototype}: @tab @code{acc_update_self_async(h_void *a, size_t len, int async);} @end multitable @item @emph{Fortran}: @@ -2624,11 +2700,18 @@ array element and @var{len} specifies the length in bytes. @item @emph{Interface}: @tab @code{subroutine acc_update_self(a, len)} @item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{integer len} +@item @emph{Interface}: @tab @code{subroutine acc_update_self_async(a, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer(acc_handle_kind) :: async} +@item @emph{Interface}: @tab @code{subroutine acc_update_self_async(a, len, async)} +@item @tab @code{type, dimension(:[,:]...) :: a} +@item @tab @code{integer len} +@item @tab @code{integer(acc_handle_kind) :: async} @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.24. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.25. @end table @@ -2647,8 +2730,8 @@ specified with the host address @var{h} and a length of @var{len}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.25. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.26. @end table @@ -2666,8 +2749,8 @@ specified by @var{h}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.26. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.27. @end table @@ -2685,8 +2768,8 @@ host address specified by @var{h}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.27. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.28. @end table @@ -2704,8 +2787,8 @@ device address specified by @var{d}. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.28. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.29. @end table @@ -2743,8 +2826,8 @@ a @code{false} is return to indicate the mapped memory is not present. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.29. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.30. @end table @@ -2763,8 +2846,8 @@ device memory specified by the device address @var{dest} for a length of @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.30. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.31. @end table @@ -2783,8 +2866,50 @@ device memory specified by the device address @var{dest} for a length of @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section -3.2.31. +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.32. +@end table + + + +@node acc_attach +@section @code{acc_attach} -- Let device pointer point to device-pointer target. +@table @asis +@item @emph{Description} +This function updates a pointer on the device from pointing to a host-pointer +address to pointing to the corresponding device data. + +@item @emph{C/C++}: +@multitable @columnfractions .20 .80 +@item @emph{Prototype}: @tab @code{acc_attach(h_void **ptr);} +@item @emph{Prototype}: @tab @code{acc_attach_async(h_void **ptr, int async);} +@end multitable + +@item @emph{Reference}: +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.34. +@end table + + + +@node acc_detach +@section @code{acc_detach} -- Let device pointer point to host-pointer target. +@table @asis +@item @emph{Description} +This function updates a pointer on the device from pointing to a device-pointer +address to pointing to the corresponding host data. + +@item @emph{C/C++}: +@multitable @columnfractions .20 .80 +@item @emph{Prototype}: @tab @code{acc_detach(h_void **ptr);} +@item @emph{Prototype}: @tab @code{acc_detach_async(h_void **ptr, int async);} +@item @emph{Prototype}: @tab @code{acc_detach_finalize(h_void **ptr);} +@item @emph{Prototype}: @tab @code{acc_detach_finalize_async(h_void **ptr, int async);} +@end multitable + +@item @emph{Reference}: +@uref{https://www.openacc.org, OpenACC specification v2.6}, section +3.2.35. @end table @@ -2802,7 +2927,7 @@ as used by the CUDA Runtime or Driver API's. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section A.2.1.1. @end table @@ -2821,7 +2946,7 @@ as used by the CUDA Runtime or Driver API's. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section A.2.1.2. @end table @@ -2840,7 +2965,7 @@ This handle is the same as used by the CUDA Runtime or Driver API's. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section A.2.1.3. @end table @@ -2864,7 +2989,7 @@ The return value is not specified. @end multitable @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section A.2.1.4. @end table @@ -2980,7 +3105,7 @@ The variable @env{GCC_ACC_NOTIFY} is used for diagnostic purposes. @section @code{ACC_DEVICE_TYPE} @table @asis @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 4.1. @end table @@ -2990,7 +3115,7 @@ The variable @env{GCC_ACC_NOTIFY} is used for diagnostic purposes. @section @code{ACC_DEVICE_NUM} @table @asis @item @emph{Reference}: -@uref{https://www.openacc.org, OpenACC specification v2.0}, section +@uref{https://www.openacc.org, OpenACC specification v2.6}, section 4.2. @end table @@ -3220,7 +3345,7 @@ is called prior to a call to an OpenACC function, then you must call @code{acc_set_device_num()}@footnote{More complete information about @env{ACC_DEVICE_TYPE} and @env{ACC_DEVICE_NUM} can be found in sections 4.1 and 4.2 of the @uref{https://www.openacc.org, OpenACC} -Application Programming Interface”, Version 2.0.} +Application Programming Interface”, Version 2.6.} diff --git a/libgomp/openacc.f90 b/libgomp/openacc.f90 index e2639bf622e..db39421bf07 100644 --- a/libgomp/openacc.f90 +++ b/libgomp/openacc.f90 @@ -792,7 +792,7 @@ module openacc public :: acc_delete_async, acc_update_device_async, acc_update_self_async public :: acc_copyout_finalize, acc_delete_finalize - integer, parameter :: openacc_version = 201306 + integer, parameter :: openacc_version = 201711 interface acc_get_num_devices procedure :: acc_get_num_devices_h diff --git a/libgomp/openacc_lib.h b/libgomp/openacc_lib.h index 717f9b4ef08..92e1dd967af 100644 --- a/libgomp/openacc_lib.h +++ b/libgomp/openacc_lib.h @@ -52,7 +52,7 @@ integer (acc_handle_kind), parameter :: acc_async_noval = -1 integer (acc_handle_kind), parameter :: acc_async_sync = -2 - integer, parameter :: openacc_version = 201306 + integer, parameter :: openacc_version = 201711 interface acc_get_num_devices function acc_get_num_devices_h (d) diff --git a/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-1.f b/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-1.f index 537212eb655..36e9844bb15 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-1.f +++ b/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-1.f @@ -4,6 +4,6 @@ implicit none include "openacc_lib.h" - if (openacc_version .ne. 201306) STOP 1 + if (openacc_version .ne. 201711) STOP 1 end program main diff --git a/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-2.f90 index 54f301be79b..e815bc1b827 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/openacc_version-2.f90 @@ -4,6 +4,6 @@ program main use openacc implicit none - if (openacc_version .ne. 201306) STOP 1 + if (openacc_version .ne. 201711) STOP 1 end program main -- 2.30.2