7.2.16 _gfortran_caf_sendget_by_ref — Передача данных между удалёнными изображениями с использованием улучшенных ссылок с обеих сторон
- Описание:
-
Вызывается для передачи скаляра, секции массива или всего массива с удалённого изображения, идентифицированного src_image_index, на удалённое изображение, идентифицированное dst_image_index.
- Синтаксис:
-
void _gfortran_caf_sendget_by_ref (caf_token_t dst_token, int dst_image_index, caf_reference_t *dst_refs, caf_token_t src_token, int src_image_index, caf_reference_t *src_refs, int dst_kind, int src_kind, bool may_require_tmp, int *dst_stat, int *src_stat, int dst_type, int src_type) - Аргументы:
-
dst_token intent(in) Непрозрачный указатель, идентифицирующий целевой комассив. dst_image_index intent(in) ИД целевого удалённого изображения; должно быть положительным числом. dst_refs intent(in) Ссылки на удалённый массив для хранения данных, заданных источником. Гарантируется, что содержит по крайней мере один элемент. src_token intent(in) Непрозрачный указатель, идентифицирующий исходный комассив. src_image_index intent(in) ИД исходного удалённого изображения; должно быть положительным числом. src_refs intent(in) Ссылки для применения к удалённой структуре для получения данных. dst_kind intent(in) Тип результата в целевом аргументе src_kind intent(in) Тип результата в исходном аргументе may_require_tmp intent(in) Переменная имеет значение falseкогда на этапе компиляции известно, что dest и src либо не могут перекрываться, либо перекрываются (полностью или частично) таким образом, что обход src и dest в порядке элементов по элементам (с учётом шага) не приведёт к неправильным результатам. В противном случае значение равноtrue.dst_stat intent(out) Если не NULL, содержит результат операции отправки, т.е. ноль при успехе и ненулевое значение при ошибке. ЕслиNULLи произошла ошибка, то выводится сообщение об ошибке и программа завершается.src_stat intent(out) Если не NULL, содержит результат операции получения, т.е. ноль при успехе и ненулевое значение при ошибке. ЕслиNULLи произошла ошибка, то выводится сообщение об ошибке и программа завершается.dst_type intent(in) Указывает тип целевого объекта. Если цель не является массивом, то точный тип, например, компонента в структуре типа производного типа, неизвестен, но предоставляется здесь. src_type intent(in) Указывает тип источника. Если источник не является массивом, то точный тип, например, компонента в структуре типа производного типа, неизвестен, но предоставляется здесь. - ПРИМЕЧАНИЯ
-
Разрешается использование одного и того же индекса изображения как для 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-14.2.0/gfortran/_005fgfortran_005fcaf_005fsendget_005fby_005fref.html