diff options
Diffstat (limited to 'gcc/fortran/intrinsic.texi')
-rw-r--r-- | gcc/fortran/intrinsic.texi | 220 |
1 files changed, 205 insertions, 15 deletions
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 926ffe954ed..8402a1fc0bf 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -86,6 +86,9 @@ Some basic guidelines for editing this document: * @code{CHDIR}: CHDIR, Change working directory * @code{CHMOD}: CHMOD, Change access permissions of files * @code{CMPLX}: CMPLX, Complex conversion function +* @code{CO_MAX}: CO_MAX, Maximal value on the current set of images +* @code{CO_MIN}: CO_MIN, Minimal value on the current set of images +* @code{CO_SUM}: CO_SUM, Sum of values on the current set of images * @code{COMMAND_ARGUMENT_COUNT}: COMMAND_ARGUMENT_COUNT, Get number of command line arguments * @code{COMPILER_OPTIONS}: COMPILER_OPTIONS, Options passed to the compiler * @code{COMPILER_VERSION}: COMPILER_VERSION, Compiler version string @@ -2811,6 +2814,168 @@ end program test_cmplx +@node CO_MAX +@section @code{CO_MAX} --- Maximal value on the current set of images +@fnindex CO_MAX +@cindex Collectives, maximal value + +@table @asis +@item @emph{Description}: +@code{CO_MAX} determines element-wise the maximal value of @var{A} on all +images of the current team. If @var{RESULT_IMAGE} is present, the maximum +values are returned on in @var{A} on the specified image only and the value +of @var{A} on the other images become undefined. If @var{RESULT_IMAGE} is +not present, the value is returned on all images. If the execution was +successful and @var{STAT} is present, it is assigned the value zero. If the +execution failed, @var{STAT} gets assigned a nonzero value and, if present, +@var{ERRMSG} gets assigned a value describing the occurred error. + +@item @emph{Standard}: +Technical Specification (TS) 18508 or later + +@item @emph{Class}: +Collective subroutine + +@item @emph{Syntax}: +@code{CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .70 +@item @var{A} @tab shall be an integer, real or character variable, +which has the same type and type parameters on all images of the team. +@item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if +present, it shall have the same the same value on all images and refer to an +image of the current team. +@item @var{STAT} @tab (optional) a scalar integer variable +@item @var{ERRMSG} @tab (optional) a scalar character variable +@end multitable + +@item @emph{Example}: +@smallexample +program test + integer :: val + val = this_image () + call co_max (val, result_image=1) + if (this_image() == 1) then + write(*,*) "Maximal value", val ! prints num_images() + end if +end program test +@end smallexample + +@item @emph{See also}: +@ref{CO_MIN}, @ref{CO_SUM} +@end table + + + +@node CO_MIN +@section @code{CO_MIN} --- Minimal value on the current set of images +@fnindex CO_MIN +@cindex Collectives, minimal value + +@table @asis +@item @emph{Description}: +@code{CO_MIN} determines element-wise the minimal value of @var{A} on all +images of the current team. If @var{RESULT_IMAGE} is present, the minimal +values are returned on in @var{A} on the specified image only and the value +of @var{A} on the other images become undefined. If @var{RESULT_IMAGE} is +not present, the value is returned on all images. If the execution was +successful and @var{STAT} is present, it is assigned the value zero. If the +execution failed, @var{STAT} gets assigned a nonzero value and, if present, +@var{ERRMSG} gets assigned a value describing the occurred error. + +@item @emph{Standard}: +Technical Specification (TS) 18508 or later + +@item @emph{Class}: +Collective subroutine + +@item @emph{Syntax}: +@code{CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .70 +@item @var{A} @tab shall be an integer, real or character variable, +which has the same type and type parameters on all images of the team. +@item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if +present, it shall have the same the same value on all images and refer to an +image of the current team. +@item @var{STAT} @tab (optional) a scalar integer variable +@item @var{ERRMSG} @tab (optional) a scalar character variable +@end multitable + +@item @emph{Example}: +@smallexample +program test + integer :: val + val = this_image () + call co_min (val, result_image=1) + if (this_image() == 1) then + write(*,*) "Minimal value", val ! prints 1 + end if +end program test +@end smallexample + +@item @emph{See also}: +@ref{CO_MAX}, @ref{CO_SUM} +@end table + + + +@node CO_SUM +@section @code{CO_SUM} --- Sum of values on the current set of images +@fnindex CO_SUM +@cindex Collectives, sum of values + +@table @asis +@item @emph{Description}: +@code{CO_SUM} sums up the values of each element of @var{A} on all +images of the current team. If @var{RESULT_IMAGE} is present, the summed-up +values are returned on in @var{A} on the specified image only and the value +of @var{A} on the other images become undefined. If @var{RESULT_IMAGE} is +not present, the value is returned on all images. If the execution was +successful and @var{STAT} is present, it is assigned the value zero. If the +execution failed, @var{STAT} gets assigned a nonzero value and, if present, +@var{ERRMSG} gets assigned a value describing the occurred error. + +@item @emph{Standard}: +Technical Specification (TS) 18508 or later + +@item @emph{Class}: +Collective subroutine + +@item @emph{Syntax}: +@code{CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .70 +@item @var{A} @tab shall be an integer, real or complex variable, +which has the same type and type parameters on all images of the team. +@item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if +present, it shall have the same the same value on all images and refer to an +image of the current team. +@item @var{STAT} @tab (optional) a scalar integer variable +@item @var{ERRMSG} @tab (optional) a scalar character variable +@end multitable + +@item @emph{Example}: +@smallexample +program test + integer :: val + val = this_image () + call co_sum (val, result_image=1) + if (this_image() == 1) then + write(*,*) "The sum is ", val ! prints (n**2 + n)/2, with n = num_images() + end if +end program test +@end smallexample + +@item @emph{See also}: +@ref{CO_MAX}, @ref{CO_MIN} +@end table + + + @node COMMAND_ARGUMENT_COUNT @section @code{COMMAND_ARGUMENT_COUNT} --- Get number of command line arguments @fnindex COMMAND_ARGUMENT_COUNT @@ -3343,10 +3508,8 @@ end program test_cshift @table @asis @item @emph{Description}: @code{CTIME} converts a system time value, such as returned by -@code{TIME8}, to a string. Unless the application has called -@code{setlocale}, the output will be in the default locale, of length -24 and of the form @samp{Sat Aug 19 18:13:14 1995}. In other locales, -a longer string may result. +@code{TIME8}, to a string. The output will be of the form @samp{Sat +Aug 19 18:13:14 1995}. This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit. @@ -9511,18 +9674,32 @@ REAL, POINTER, DIMENSION(:) :: VEC => NULL () Returns the number of images. @item @emph{Standard}: -Fortran 2008 and later +Fortran 2008 and later. With @var{DISTANCE} or @var{FAILED} argument, +Technical Specification (TS) 18508 or later + @item @emph{Class}: Transformational function @item @emph{Syntax}: -@code{RESULT = NUM_IMAGES()} +@code{RESULT = NUM_IMAGES(DISTANCE, FAILED)} -@item @emph{Arguments}: None. +@item @emph{Arguments}: +@multitable @columnfractions .15 .70 +@item @var{DISTANCE} @tab (optional, intent(in)) Nonnegative scalar integer +@item @var{FAILED} @tab (optional, intent(in)) Scalar logical expression +@end multitable @item @emph{Return value}: -Scalar default-kind integer. +Scalar default-kind integer. If @var{DISTANCE} is not present or has value 0, +the number of images in the current team is returned. For values smaller or +equal distance to the initial team, it returns the number of images index +on the ancestor team which has a distance of @var{DISTANCE} from the invoking +team. If @var{DISTANCE} is larger than the distance to the initial team, the +number of images of the initial team is returned. If @var{FAILED} is not present +the total number of images is returned; if it has the value @code{.TRUE.}, +the number of failed images is returned, otherwise, the number of images which +do have not the failed status. @item @emph{Example}: @smallexample @@ -12257,7 +12434,8 @@ end program test_tanh Returns the cosubscript for this image. @item @emph{Standard}: -Fortran 2008 and later +Fortran 2008 and later. With @var{DISTANCE} argument, +Technical Specification (TS) 18508 or later @item @emph{Class}: Transformational function @@ -12265,11 +12443,14 @@ Transformational function @item @emph{Syntax}: @multitable @columnfractions .80 @item @code{RESULT = THIS_IMAGE()} +@item @code{RESULT = THIS_IMAGE(DISTANCE)} @item @code{RESULT = THIS_IMAGE(COARRAY [, DIM])} @end multitable @item @emph{Arguments}: @multitable @columnfractions .15 .70 +@item @var{DISTANCE} @tab (optional, intent(in)) Nonnegative scalar integer +(not permitted together with @var{COARRAY}). @item @var{COARRAY} @tab Coarray of any type (optional; if @var{DIM} present, required). @item @var{DIM} @tab default integer scalar (optional). If present, @@ -12278,12 +12459,17 @@ present, required). @item @emph{Return value}: -Default integer. If @var{COARRAY} is not present, it is scalar and its value -is the index of the invoking image. Otherwise, if @var{DIM} is not present, -a rank-1 array with corank elements is returned, containing the cosubscripts -for @var{COARRAY} specifying the invoking image. If @var{DIM} is present, -a scalar is returned, with the value of the @var{DIM} element of -@code{THIS_IMAGE(COARRAY)}. +Default integer. If @var{COARRAY} is not present, it is scalar; if +@var{DISTANCE} is not present or has value 0, its value is the image index on +the invoking image for the current team, for values smaller or equal +distance to the initial team, it returns the image index on the ancestor team +which has a distance of @var{DISTANCE} from the invoking team. If +@var{DISTANCE} is larger than the distance to the initial team, the image +index of the initial team is returned. Otherwise when the @var{COARRAY} is +present, if @var{DIM} is not present, a rank-1 array with corank elements is +returned, containing the cosubscripts for @var{COARRAY} specifying the invoking +image. If @var{DIM} is present, a scalar is returned, with the value of +the @var{DIM} element of @code{THIS_IMAGE(COARRAY)}. @item @emph{Example}: @smallexample @@ -12296,6 +12482,10 @@ IF (THIS_IMAGE() == 1) THEN WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i] END DO END IF + +! Check whether the current image is the initial image +IF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE()) + error stop "something is rotten here" @end smallexample @item @emph{See also}: |