The GNU Fortran Compiler: _gfortran_caf_co_reduce

Previous: _gfortran_caf_co_sum, Up: Function ABI Documentation [Contents][Index]

#### 8.2.28 `_gfortran_caf_co_reduce` — Generic collective reduction

Description:

  Calculates the for the each array element of the variable a the reduction value for that element in the current team; if result_image has the value 0, the result shall be stored on all images, otherwise, only on the specified image. The opr is a pure function doing a mathematically commutative and associative operation.

  The opr_flags denote the following; the values are bitwise ored. `GFC_CAF_BYREF` (1) if the result should be returned by value; `GFC_CAF_HIDDENLEN` (2) whether the result and argument string lengths shall be specified as hidden argument; `GFC_CAF_ARG_VALUE` (4) whether the arguments shall be passed by value, `GFC_CAF_ARG_DESC` (8) whether the arguments shall be passed by descriptor.

Syntax:

  `void _gfortran_caf_co_reduce (gfc_descriptor_t *a, void * (*opr) (void *, void *), int opr_flags, int result_image, int *stat, char *errmsg, int a_len, int errmsg_len)`

Arguments:

  opr | Function pointer to the reduction function.
  opr_flags | Flags regarding the reduction function
  a | intent(inout) And array descriptor with the data to be breoadcasted (on source_image) or to be received (other images).
  result_image | The ID of the image to which the reduced value should be copied to; if zero, it has to be copied to all images.
  stat | intent(out) Stores the status STAT= and may be NULL.
  errmsg | intent(out) When an error occurs, this will be set to an error message; may be NULL
  a_len | The string length of argument a.
  errmsg_len | the buffer size of errmsg.

NOTES

  If result_image is nonzero, the value on all images except of the specified one become undefined; hence, the library may make use of this. For character arguments, the result is passed as first argument, followed by the result string length, next come the two string arguments, followed by the two hidden arguments. With C binding, there are no hidden arguments and by-reference passing and either only a single character is passed or an array descriptor.

Previous: _gfortran_caf_co_sum, Up: Function ABI Documentation [Contents][Index]