Spec-Zone.ru › GNU Fortran 8

9.66 CO_REDUCE — Сведение значений на текущем наборе изображений

Описание:

CO_REDUCE определяет поэлементное сведение значения A по всем изображениям текущей команды. Чистая функция, переданная как OPERATOR, используется для попарного сведения значений A, передавая либо значение A различных изображений, либо результирующие значения такого сведения в качестве аргументов. Если A является массивом, вычитание выполняется поэлементно. Если RESULT_IMAGE присутствует, результирующие значения возвращаются в A только на указанном изображении, а значение A на других изображениях становится неопределённым. Если RESULT_IMAGE отсутствует, значение возвращается на всех изображениях. Если выполнение прошло успешно, и STAT присутствует, ему присваивается значение ноль. Если выполнение завершилось ошибкой, STAT получает ненулевое значение, а ERRMSG, если присутствует, получает значение, описывающее произошедшую ошибку.

Стандарт:

Техническое описание (TS) 18508 или более поздняя версия

Класс:

Подпрограмма коллектива

Синтаксис:

CALL CO_REDUCE(A, OPERATOR, [, RESULT_IMAGE, STAT, ERRMSG])

Аргументы:
A является INTENT(INOUT) аргументом и должен быть неполиморфным. Если он является распределимым, он должен быть распределён; если он является указателем, он должен быть связан. A должен иметь тот же тип и типы параметров на всех изображениях команды; если это массив, он должен иметь ту же форму на всех изображениях.
OPERATOR чистая функция с двумя скалярными нераспределимыми аргументами, которые должны быть неполиморфными и иметь тот же тип и типы параметров, что и A. Функция должна возвращать скаляр без распределения того же типа и типов параметров, что и A. Функция должна быть одинаковой на всех изображениях и относительно аргументов математически коммутативной и ассоциативной. Обратите внимание, что OPERATOR может не быть элементарной функцией, если она не является встроенной функцией.
RESULT_IMAGE (необязательно) скалярное целочисленное выражение; если оно присутствует, оно должно иметь то же самое значение на всех изображениях и ссылаться на изображение текущей команды.
STAT (необязательно) скалярная целочисленная переменная
ERRMSG (необязательно) скалярная символьная переменная
Пример:
program test
  integer :: val
  val = this_image ()
  call co_reduce (val, result_image=1, operator=myprod)
  if (this_image() == 1) then
    write(*,*) "Product value", val  ! prints num_images() factorial
  end if
contains
  pure function myprod(a, b)
    integer, value :: a, b
    integer :: myprod
    myprod = a * b
  end function myprod
end program test
Примечание:

Хотя правила допускают в принципе встроенную функцию, ни одна из встроенных функций в стандарте не удовлетворяет критериям наличия конкретной функции, которая принимает два аргумента одного типа и возвращает этот тип в качестве результата.

См. также:

CO_MIN, CO_MAX, CO_SUM, CO_BROADCAST

Далее: CO_SUM, Предыдущий: CO_MIN, Вверх: Встроенные процедуры [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-8.4.0/gfortran/CO_005fREDUCE.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API