[OpenACC] bump version for 2.6 plus libgomp.texi update

2020-02-03  Julian Brown  <julian@codesourcery.com>
            Tobias Burnus  <tobias@codesourcery.com>

	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.
This commit is contained in:
Tobias Burnus 2020-02-03 10:10:37 +01:00
parent 7c8e1f920a
commit e464fc9035
18 changed files with 244 additions and 95 deletions

View File

@ -1,3 +1,8 @@
2020-02-03 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tobias@codesourcery.com>
* doc/invoke.texi: Update mention of OpenACC version to 2.6.
2020-02-03 Jakub Jelinek <jakub@redhat.com> 2020-02-03 Jakub Jelinek <jakub@redhat.com>
PR target/93533 PR target/93533

View File

@ -1,3 +1,8 @@
2020-02-03 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tobias@codesourcery.com>
* c-cppbuiltin.c (c_cpp_builtins): Update _OPENACC define to 201711.
2020-01-29 Jason Merrill <jason@redhat.com> 2020-01-29 Jason Merrill <jason@redhat.com>
PR c++/89357 PR c++/89357

View File

@ -1435,7 +1435,7 @@ c_cpp_builtins (cpp_reader *pfile)
cpp_define (pfile, "__SSP__=1"); cpp_define (pfile, "__SSP__=1");
if (flag_openacc) if (flag_openacc)
cpp_define (pfile, "_OPENACC=201306"); cpp_define (pfile, "_OPENACC=201711");
if (flag_openmp) if (flag_openmp)
cpp_define (pfile, "_OPENMP=201511"); cpp_define (pfile, "_OPENMP=201511");

View File

@ -2248,7 +2248,7 @@ freestanding and hosted environments.
Enable handling of OpenACC directives @code{#pragma acc} in C/C++ and Enable handling of OpenACC directives @code{#pragma acc} in C/C++ and
@code{!$acc} in Fortran. When @option{-fopenacc} is specified, the @code{!$acc} in Fortran. When @option{-fopenacc} is specified, the
compiler generates accelerated code according to the OpenACC Application 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 implies @option{-pthread}, and thus is only supported on targets that
have support for @option{-pthread}. have support for @option{-pthread}.

View File

@ -1,3 +1,11 @@
2020-02-03 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tobias@codesourcery.com>
* 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 <tobias@codesourcery.com> 2020-02-03 Tobias Burnus <tobias@codesourcery.com>
PR fortran/93541 PR fortran/93541

View File

@ -166,7 +166,7 @@ cpp_define_builtins (cpp_reader *pfile)
cpp_define (pfile, "_LANGUAGE_FORTRAN=1"); cpp_define (pfile, "_LANGUAGE_FORTRAN=1");
if (flag_openacc) if (flag_openacc)
cpp_define (pfile, "_OPENACC=201306"); cpp_define (pfile, "_OPENACC=201711");
if (flag_openmp) if (flag_openmp)
cpp_define (pfile, "_OPENMP=201511"); cpp_define (pfile, "_OPENMP=201511");

View File

@ -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 Fortran 2003 and Fortran 2008 features, including TR 15581. However, it is
still under development and has a few remaining rough edges. still under development and has a few remaining rough edges.
There also is initial support for OpenACC. 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 At present, the GNU Fortran compiler passes the
@uref{http://www.fortran-2000.com/ArnaudRecipes/fcvs21_f95.html, @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 Additionally, the GNU Fortran compilers supports the OpenMP specification
(version 4.0 and most of the features of the 4.5 version, (version 4.0 and most of the features of the 4.5 version,
@url{http://openmp.org/@/wp/@/openmp-specifications/}). @url{http://openmp.org/@/wp/@/openmp-specifications/}).
There also is initial support for the OpenACC specification (targeting There also is support for the OpenACC specification (targeting
version 2.0, @uref{http://www.openacc.org/}). version 2.6, @uref{http://www.openacc.org/}). See
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. @uref{https://gcc.gnu.org/wiki/OpenACC} for more information.
@node Varying Length Character Strings @node Varying Length Character Strings
@ -2245,7 +2240,7 @@ influence run-time behavior.
GNU Fortran strives to be compatible to the GNU Fortran strives to be compatible to the
@uref{http://www.openacc.org/, OpenACC Application Programming @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 To enable the processing of the OpenACC directive @code{!$acc} in
free-form source code; the @code{c$acc}, @code{*$acc} and @code{!$acc} 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 form of a Fortran 90 module named @code{openacc} and in a form of a
Fortran @code{include} file named @file{openacc_lib.h}. 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 @node Argument list functions
@subsection Argument list functions @code{%VAL}, @code{%REF} and @code{%LOC} @subsection Argument list functions @code{%VAL}, @code{%REF} and @code{%LOC}
@cindex argument list functions @cindex argument list functions

View File

@ -15371,7 +15371,7 @@ kind @code{omp_pause_resource_kind}:
@section OpenACC Module @code{OPENACC} @section OpenACC Module @code{OPENACC}
@table @asis @table @asis
@item @emph{Standard}: @item @emph{Standard}:
OpenACC Application Programming Interface v2.0 OpenACC Application Programming Interface v2.6
@end table @end table
@ -15385,9 +15385,9 @@ are listed below.
For details refer to the actual For details refer to the actual
@uref{http://www.openacc.org/, @uref{http://www.openacc.org/,
OpenACC Application Programming Interface v2.0}. OpenACC Application Programming Interface v2.6}.
@code{OPENACC} provides the scalar default-integer @code{OPENACC} provides the scalar default-integer
named constant @code{openacc_version} with a value of the form named constant @code{openacc_version} with a value of the form
@var{yyyymm}, where @code{yyyy} is the year and @var{mm} the month @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}.

View File

@ -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 @code{!$} sentinels in fixed form, and when linking arranges for the
OpenACC runtime library to be linked in. 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 @item -fopenmp
@opindex @code{fopenmp} @opindex @code{fopenmp}
@cindex OpenMP @cindex OpenMP

View File

@ -1,3 +1,10 @@
2020-02-03 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tobias@codesourcery.com>
* 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 <tobias@codesourcery.com> 2020-02-03 Tobias Burnus <tobias@codesourcery.com>
PR fortran/93427 PR fortran/93427

View File

@ -6,6 +6,6 @@
# error _OPENACC not defined # error _OPENACC not defined
#endif #endif
#if _OPENACC != 201306 #if _OPENACC != 201711
# error _OPENACC defined to wrong value # error _OPENACC defined to wrong value
#endif #endif

View File

@ -6,6 +6,6 @@
# error _OPENACC not defined # error _OPENACC not defined
#endif #endif
#if _OPENACC != 201306 #if _OPENACC != 201711
# error _OPENACC defined to wrong value # error _OPENACC defined to wrong value
#endif #endif

View File

@ -1,3 +1,15 @@
2020-02-03 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tobias@codesourcery.com>
* 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 <kcy@codesourcery.com> 2020-01-31 Kwok Cheung Yeung <kcy@codesourcery.com>
* plugin/plugin-gcn.c (struct hsa_kernel_description): Add sgpr_count * plugin/plugin-gcn.c (struct hsa_kernel_description): Add sgpr_count

View File

@ -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 A complete description of all OpenACC directives accepted may be found in
the @uref{https://www.openacc.org, OpenACC} Application Programming 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 Note that this is an experimental feature and subject to
change in future versions of GCC. See change in future versions of GCC. See
@ -1836,7 +1836,7 @@ change in future versions of GCC. See
@chapter OpenACC Runtime Library Routines @chapter OpenACC Runtime Library Routines
The runtime routines described here are defined by section 3 of the OpenACC 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. They have C linkage, and do not throw exceptions.
Generally, they are available only for the host, with the exception of 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 @code{acc_on_device}, which is available for both the host and the
@ -1892,6 +1892,8 @@ acceleration device.
present on device. present on device.
* acc_memcpy_to_device:: Copy host memory to device memory. * acc_memcpy_to_device:: Copy host memory to device memory.
* acc_memcpy_from_device:: Copy device memory to host 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. API routines for target platforms.
@ -1929,7 +1931,7 @@ for the device type specified in @var{devicetype}.
@end multitable @end multitable
@item @emph{Reference}: @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. 3.2.1.
@end table @end table
@ -1954,7 +1956,7 @@ in @var{devicetype}, to use when executing a parallel or kernels region.
@end multitable @end multitable
@item @emph{Reference}: @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. 3.2.2.
@end table @end table
@ -1979,7 +1981,7 @@ parallel or kernels region.
@end multitable @end multitable
@item @emph{Reference}: @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. 3.2.3.
@end table @end table
@ -2006,7 +2008,7 @@ type @var{devicetype}.
@end multitable @end multitable
@item @emph{Reference}: @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. 3.2.4.
@end table @end table
@ -2033,7 +2035,7 @@ region.
@end multitable @end multitable
@item @emph{Reference}: @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. 3.2.5.
@end table @end table
@ -2100,8 +2102,8 @@ a zero and Fortran returns a @code{false}.
@end multitable @end multitable
@item @emph{Reference}: @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.6. 3.2.9.
@end table @end table
@ -2128,8 +2130,8 @@ Fortran returns a @code{false}.
@end multitable @end multitable
@item @emph{Reference}: @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.7. 3.2.10.
@end table @end table
@ -2156,8 +2158,8 @@ specified in @var{arg}.
@end multitable @end multitable
@item @emph{Reference}: @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.8. 3.2.11.
@end table @end table
@ -2181,8 +2183,8 @@ This function waits for the completion of all asynchronous operations.
@end multitable @end multitable
@item @emph{Reference}: @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.10. 3.2.13.
@end table @end table
@ -2207,8 +2209,8 @@ any queue.
@end multitable @end multitable
@item @emph{Reference}: @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.11. 3.2.14.
@end table @end table
@ -2232,8 +2234,8 @@ asynchronous operations enqueued on queue @var{arg}.
@end multitable @end multitable
@item @emph{Reference}: @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.9. 3.2.12.
@end table @end table
@ -2257,8 +2259,8 @@ This function initializes the runtime for the device type specified in
@end multitable @end multitable
@item @emph{Reference}: @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.12. 3.2.7.
@end table @end table
@ -2282,8 +2284,8 @@ This function shuts down the runtime for the device type specified in
@end multitable @end multitable
@item @emph{Reference}: @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.13. 3.2.8.
@end table @end table
@ -2313,8 +2315,8 @@ return @code{false}.
@item @emph{Reference}: @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.14. 3.2.17.
@end table @end table
@ -2332,8 +2334,8 @@ the device address of the allocated memory.
@end multitable @end multitable
@item @emph{Reference}: @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.15. 3.2.18.
@end table @end table
@ -2350,8 +2352,8 @@ Free previously allocated device memory at the device address @code{a}.
@end multitable @end multitable
@item @emph{Reference}: @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.16. 3.2.19.
@end table @end table
@ -2371,6 +2373,7 @@ variable or array element and @var{len} specifies the length in bytes.
@item @emph{C/C++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @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(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 @end multitable
@item @emph{Fortran}: @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 @emph{Interface}: @tab @code{subroutine acc_copyin(a, len)}
@item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{type, dimension(:[,:]...) :: a}
@item @tab @code{integer len} @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 @end multitable
@item @emph{Reference}: @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.17. 3.2.20.
@end table @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 a contiguous array section. The second form @var{a} specifies a variable or
array element and @var{len} specifies the length in bytes. 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++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @multitable @columnfractions .20 .80
@item @emph{Prototype}: @tab @code{void *acc_present_or_copyin(h_void *a, size_t len);} @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 @end multitable
@item @emph{Reference}: @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.18. 3.2.20.
@end table @end table
@ -2444,6 +2457,7 @@ array element and @var{len} specifies the length in bytes.
@item @emph{C/C++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @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(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 @end multitable
@item @emph{Fortran}: @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 @emph{Interface}: @tab @code{subroutine acc_create(a, len)}
@item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{type, dimension(:[,:]...) :: a}
@item @tab @code{integer len} @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 @end multitable
@item @emph{Reference}: @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.19. 3.2.21.
@end table @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 a contiguous array section. The second form @var{a} specifies a variable or
array element and @var{len} specifies the length in bytes. 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++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @multitable @columnfractions .20 .80
@ -2497,8 +2520,8 @@ array element and @var{len} specifies the length in bytes.
@end multitable @end multitable
@item @emph{Reference}: @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.20. 3.2.21.
@end table @end table
@ -2517,6 +2540,9 @@ array element and @var{len} specifies the length in bytes.
@item @emph{C/C++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @multitable @columnfractions .20 .80
@item @emph{Prototype}: @tab @code{acc_copyout(h_void *a, size_t len);} @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 @end multitable
@item @emph{Fortran}: @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 @emph{Interface}: @tab @code{subroutine acc_copyout(a, len)}
@item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{type, dimension(:[,:]...) :: a}
@item @tab @code{integer len} @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 @end multitable
@item @emph{Reference}: @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.21. 3.2.22.
@end table @end table
@ -2549,6 +2594,9 @@ array element and @var{len} specifies the length in bytes.
@item @emph{C/C++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @multitable @columnfractions .20 .80
@item @emph{Prototype}: @tab @code{acc_delete(h_void *a, size_t len);} @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 @end multitable
@item @emph{Fortran}: @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 @emph{Interface}: @tab @code{subroutine acc_delete(a, len)}
@item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{type, dimension(:[,:]...) :: a}
@item @tab @code{integer len} @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 @end multitable
@item @emph{Reference}: @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.22. 3.2.23.
@end table @end table
@ -2582,6 +2649,7 @@ array element and @var{len} specifies the length in bytes.
@item @emph{C/C++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @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);}
@item @emph{Prototype}: @tab @code{acc_update_device(h_void *a, size_t len, async);}
@end multitable @end multitable
@item @emph{Fortran}: @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 @emph{Interface}: @tab @code{subroutine acc_update_device(a, len)}
@item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{type, dimension(:[,:]...) :: a}
@item @tab @code{integer len} @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 @end multitable
@item @emph{Reference}: @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.23. 3.2.24.
@end table @end table
@ -2615,6 +2690,7 @@ array element and @var{len} specifies the length in bytes.
@item @emph{C/C++}: @item @emph{C/C++}:
@multitable @columnfractions .20 .80 @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(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 @end multitable
@item @emph{Fortran}: @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 @emph{Interface}: @tab @code{subroutine acc_update_self(a, len)}
@item @tab @code{type, dimension(:[,:]...) :: a} @item @tab @code{type, dimension(:[,:]...) :: a}
@item @tab @code{integer len} @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 @end multitable
@item @emph{Reference}: @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.24. 3.2.25.
@end table @end table
@ -2647,8 +2730,8 @@ specified with the host address @var{h} and a length of @var{len}.
@end multitable @end multitable
@item @emph{Reference}: @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.25. 3.2.26.
@end table @end table
@ -2666,8 +2749,8 @@ specified by @var{h}.
@end multitable @end multitable
@item @emph{Reference}: @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.26. 3.2.27.
@end table @end table
@ -2685,8 +2768,8 @@ host address specified by @var{h}.
@end multitable @end multitable
@item @emph{Reference}: @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.27. 3.2.28.
@end table @end table
@ -2704,8 +2787,8 @@ device address specified by @var{d}.
@end multitable @end multitable
@item @emph{Reference}: @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.28. 3.2.29.
@end table @end table
@ -2743,8 +2826,8 @@ a @code{false} is return to indicate the mapped memory is not present.
@end multitable @end multitable
@item @emph{Reference}: @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.29. 3.2.30.
@end table @end table
@ -2763,8 +2846,8 @@ device memory specified by the device address @var{dest} for a length of
@end multitable @end multitable
@item @emph{Reference}: @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.30. 3.2.31.
@end table @end table
@ -2783,8 +2866,50 @@ device memory specified by the device address @var{dest} for a length of
@end multitable @end multitable
@item @emph{Reference}: @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.31. 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 @end table
@ -2802,7 +2927,7 @@ as used by the CUDA Runtime or Driver API's.
@end multitable @end multitable
@item @emph{Reference}: @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. A.2.1.1.
@end table @end table
@ -2821,7 +2946,7 @@ as used by the CUDA Runtime or Driver API's.
@end multitable @end multitable
@item @emph{Reference}: @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. A.2.1.2.
@end table @end table
@ -2840,7 +2965,7 @@ This handle is the same as used by the CUDA Runtime or Driver API's.
@end multitable @end multitable
@item @emph{Reference}: @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. A.2.1.3.
@end table @end table
@ -2864,7 +2989,7 @@ The return value is not specified.
@end multitable @end multitable
@item @emph{Reference}: @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. A.2.1.4.
@end table @end table
@ -2980,7 +3105,7 @@ The variable @env{GCC_ACC_NOTIFY} is used for diagnostic purposes.
@section @code{ACC_DEVICE_TYPE} @section @code{ACC_DEVICE_TYPE}
@table @asis @table @asis
@item @emph{Reference}: @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. 4.1.
@end table @end table
@ -2990,7 +3115,7 @@ The variable @env{GCC_ACC_NOTIFY} is used for diagnostic purposes.
@section @code{ACC_DEVICE_NUM} @section @code{ACC_DEVICE_NUM}
@table @asis @table @asis
@item @emph{Reference}: @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. 4.2.
@end table @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 @code{acc_set_device_num()}@footnote{More complete information
about @env{ACC_DEVICE_TYPE} and @env{ACC_DEVICE_NUM} can be found in 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} 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.}

View File

@ -792,7 +792,7 @@ module openacc
public :: acc_delete_async, acc_update_device_async, acc_update_self_async public :: acc_delete_async, acc_update_device_async, acc_update_self_async
public :: acc_copyout_finalize, acc_delete_finalize public :: acc_copyout_finalize, acc_delete_finalize
integer, parameter :: openacc_version = 201306 integer, parameter :: openacc_version = 201711
interface acc_get_num_devices interface acc_get_num_devices
procedure :: acc_get_num_devices_h procedure :: acc_get_num_devices_h

View File

@ -52,7 +52,7 @@
integer (acc_handle_kind), parameter :: acc_async_noval = -1 integer (acc_handle_kind), parameter :: acc_async_noval = -1
integer (acc_handle_kind), parameter :: acc_async_sync = -2 integer (acc_handle_kind), parameter :: acc_async_sync = -2
integer, parameter :: openacc_version = 201306 integer, parameter :: openacc_version = 201711
interface acc_get_num_devices interface acc_get_num_devices
function acc_get_num_devices_h (d) function acc_get_num_devices_h (d)

View File

@ -4,6 +4,6 @@
implicit none implicit none
include "openacc_lib.h" include "openacc_lib.h"
if (openacc_version .ne. 201306) STOP 1 if (openacc_version .ne. 201711) STOP 1
end program main end program main

View File

@ -4,6 +4,6 @@ program main
use openacc use openacc
implicit none implicit none
if (openacc_version .ne. 201306) STOP 1 if (openacc_version .ne. 201711) STOP 1
end program main end program main