7.2.14 _gfortran_caf_send_by_ref — Отправка данных с локального изображения на удалённое изображение с расширенными параметрами ссылок
- Описание:
-
Вызывается для отправки скаляра, раздела массива или всего массива с локального на удалённое изображение, идентифицированное по image_index.
- Синтаксис:
-
void _gfortran_caf_send_by_ref (caf_token_t token, int image_index, gfc_descriptor_t *src, caf_reference_t *refs, int dst_kind, int src_kind, bool may_require_tmp, bool dst_reallocatable, int *stat, int dst_type) - Аргументы:
-
token intent(in) Непрозрачный указатель, идентифицирующий комассив. image_index intent(in) Идентификатор удалённого изображения; должно быть положительным числом. src intent(in) Описание массива локального массива, который должен быть передан на удалённое изображение refs intent(in) Ссылки на удалённый массив для хранения данных, заданных src. Гарантируется, что будет хотя бы один элемент. dst_kind intent(in) Тип назначения. src_kind intent(in) Тип источника. may_require_tmp intent(in) Переменная равна falseкогда известно во время компиляции, что dest и src либо не могут перекрываться, либо перекрываются (полностью или частично) таким образом, что проход по src и dest в порядке элементов (с учётом шага) не приведёт к ошибочным результатам. В противном случае значение равноtrue.dst_reallocatable intent(in) Устанавливается, когда назначение является аллокабельным или указателем и ссылки позволят перераспределение, т. е. ссылка является полным массивом или ссылкой на компонент. stat intent(out) Если не NULL, то результат операции: ноль при успехе и ненулевое значение при ошибке. ЕслиNULL, а произошла ошибка, то будет выведено сообщение об ошибке и программа завершится.dst_type intent(in) Тип назначения. Если назначение не массив, то точный тип, например, компонента в производном типе, не известен, но предоставлен здесь. - ПРИМЕЧАНИЯ
-
Разрешается, чтобы 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-14.2.0/gfortran/_005fgfortran_005fcaf_005fsend_005fby_005fref.html