libgomp.texi: Minor update to omp_get_num_devices/omp_get_initial_device
Checks
Commit Message
OpenMP 6 changed that omp_get_initial_device may not only return the
dynamic value of omp_get_num_devices() but also the constant value
omp_get_num_devices (== -1).
For now, GCC returns omp_get_num_devices() but we may want to change
this in the future as '-1' can be solved at compile time; in particular,
omp_get_device_num is also permitted to return -1 (= the value returned
by omp_get_initial_device), which might be more useful.
(I wouldn't be surprised if code will break if we start to return -1.)
Additionally, I tweaked the wording for omp_get_num_devices to be
a bit clearer and updatedomp_get_default_device as it is no longer the same as omp_get_num_devices.
Comments/suggestions before I commit it?
Tobias
Comments
Now committed as r15-6659-gd3ccd89fa0d34d – with an additional typo fix:
stipe → stripe (OpenMP 6.0 loop transformation directive).
Tobias
libgomp.texi: Minor update to omp_get_num_devices/omp_get_initial_device
libgomp/ChangeLog:
* libgomp.texi (omp_get_default_device): Update the wording as the
value returned by omp_get_initial_device is now ambiguous.
(omp_get_num_devices): Minor wording tweak.
(omp_get_initial_device): Note that the function may also
return omp_initial_device since OpenMP 6.
@@ -1758,14 +1758,13 @@ The effect of running this routine in a @code{target} region is unspecified.
@table @asis
@item @emph{Description}:
Get the value of the @emph{default-device-var} ICV, which is used
for target regions without a device clause. The value is either a
nonnegative device number, @code{omp_initial_device} or
-@code{omp_invalid_device}. Note that for the host, the ICV can have two values
-and, hence, this routine might return either the value of the named constant
-@code{omp_initial_device} or the value returned by the
-@code{omp_get_initial_device} routine.
+@code{omp_invalid_device}. Note that for the host, the ICV can have two values:
+either the value of the named constant @code{omp_initial_device} or the value
+returned by the @code{omp_get_num_devices} routine.
The effect of running this routine in a @code{target} region is unspecified.
@item @emph{C/C++}:
@multitable @columnfractions .20 .80
@@ -1789,11 +1788,11 @@ The effect of running this routine in a @code{target} region is unspecified.
@node omp_get_num_devices
@subsection @code{omp_get_num_devices} -- Number of target devices
@table @asis
@item @emph{Description}:
-Returns the number of target devices.
+Returns the number of available non-host devices.
The effect of running this routine in a @code{target} region is unspecified.
@item @emph{C/C++}:
@multitable @columnfractions .20 .80
@@ -1936,11 +1935,12 @@ run-time function is desired.
@subsection @code{omp_get_initial_device} -- Return device number of initial device
@table @asis
@item @emph{Description}:
This function returns a device number that represents the host device.
Since OpenMP 5.1, this is equal to the value returned by the
-@code{omp_get_num_devices} function.
+@code{omp_get_num_devices} function; since OpenMP 6.0 it may also return
+the value of @code{omp_initial_device}.
The effect of running this routine in a @code{target} region is unspecified.
@item @emph{C/C++}
@multitable @columnfractions .20 .80