7.2.11 _gfortran_caf_send — Пересылка данных с локального изображения на удалённое изображение
- Описание:
-
Вызывается для отправки скаляра, секции массива или всего массива с локального на удалённое изображение, идентифицированное индексом изображения.
- Синтаксис:
-
void _gfortran_caf_send (caf_token_t token, size_t offset, int image_index, gfc_descriptor_t *dest, caf_vector_t *dst_vector, gfc_descriptor_t *src, int dst_kind, int src_kind, bool may_require_tmp, int *stat) - Аргументы:
-
token intent(in) Непрозрачный указатель, идентифицирующий комассив. offset intent(in) Сдвиг в байтах фактических данных по отношению к базовому адресу комассива. image_index intent(in) Идентификатор удалённого изображения; должно быть положительное число. dest intent(in) Описатель массива для удалённого изображения, определяющий границы и размер. Доступ к base_addrнедоступен.dst_vector intent(in) Если не NULL, содержит векторный индекс целевого массива; значения относительны к тройке измерений аргумента dest. src intent(in) Описатель локального массива, подлежащего передаче на удалённое изображение. dst_kind intent(in) Тип назначения src_kind intent(in) Тип источника may_require_tmp intent(in) Переменная равна false, когда в момент компиляции известно, что массивы dest и src либо не перекрываются, либо перекрываются (полностью или частично) таким образом, что обход src и dest в порядке элементов (учитывая шаг) не приведёт к неправильным результатам. В противном случае значение равноtrue.stat intent(out) при не нулевом значении содержит результат операции, т.е. ноль при успехе и ненулевое значение при ошибке. При NULL и возникновении ошибки выводится сообщение об ошибке и программа завершается. - ПРИМЕЧАНИЯ
-
Разрешается задавать image_index равным текущему изображению; память для отправки и получения может (частично) перекрываться в этом случае. Реализация должна обработать этот случай, например, используя
memmove, который обрабатывает (частичное) перекрытие памяти. Если may_require_tmp равно true, библиотека может дополнительно создать временную переменную, если дополнительные проверки не покажут необходимости в этом (например, потому что обратный обход возможен или потому что оба массива являются непрерывными иmemmoveобрабатывает проблемы перекрытия).Обратите внимание, что разрешается присваивание скаляра массиву. Кроме того, библиотека должна обрабатывать преобразование числовых типов и для строк, заполнение и разные типы символов.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/_005fgfortran_005fcaf_005fsend.html