7.2.13 _gfortran_caf_sendget — Пересылка данных между удалёнными образами
- Описание:
-
Вызывается для пересылки скаляра, секции массива или всего массива из удалённого образа, идентифицированного src_image_index, в удалённый образ, идентифицированный dst_image_index.
- Синтаксис:
-
void _gfortran_caf_sendget (caf_token_t dst_token, size_t dst_offset, int dst_image_index, gfc_descriptor_t *dest, caf_vector_t *dst_vector, caf_token_t src_token, size_t src_offset, int src_image_index, gfc_descriptor_t *src, caf_vector_t *src_vector, int dst_kind, int src_kind, bool may_require_tmp, int *stat) - Аргументы:
-
dst_token intent(in) Непрозрачный указатель, идентифицирующий целевой комассив. dst_offset intent(in) Смещение в байтах фактических данных относительно базового адреса целевого комассива. dst_image_index intent(in) Идентификатор целевого удалённого образа; должно быть положительное число. dest intent(in) Описатель массива для целевого удалённого образа для границ и размера. Доступ к base_addrнедопустим.dst_vector intent(int) Если не NULL, содержит векторный индекс целевого массива; значения относятся к тройке измерений аргумента dest. src_token intent(in) Непрозрачный указатель, идентифицирующий исходный комассив. src_offset intent(in) Смещение в байтах фактических данных относительно базового адреса исходного комассива. src_image_index intent(in) Идентификатор исходного удалённого образа; должно быть положительное число. src intent(in) Описатель локального массива, который нужно передать удалённому образу. src_vector 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, содержит результат операции (ноль в случае успеха, ненулевое значение в случае ошибки). Если NULL и произошла ошибка, выводится сообщение об ошибке и программа завершается. - ПРИМЕЧАНИЯ
-
Разрешается использовать один и тот же индекс образа для src_image_index и dst_image_index; в этом случае память для отправки и получения может частично перекрываться. Реализация должна обрабатывать этот случай, например, используя
memmove, который обрабатывает (частично) перекрывающуюся память. Если may_require_tmp истинно, библиотека может дополнительно создать временную переменную, если дополнительные проверки не покажут, что это не требуется (например, потому что возможен обратный обход или оба массива являются смежными и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_005fsendget.html