| |
Подпрограммы доступа к данным пытаются переместить (прочитать или записать) count элементов данных типа datatype между буфером пользователя buf и файлом. Тип данных, передаваемый в подпрограмму, должен быть согласован. Расположение данных в памяти, соответствующих buf, count, datatype, интерпретируется таким же образом, как и в функциях связи MPI-1; см. раздел 3.12.5 в [6]. Доступ к данным файла осуществляется в тех его частях, которые определены его текущим видом (раздел File Views ).
Сигнатура типа datatype должна совпадать с типовой сигнатурой некоторого количества копий е-типа текущего вида. Как и при приеме, ошибочно определять тип данных для чтения, который содержит перекрывающиеся регионы (области памяти, в которые будут сохранены данные больше, чем один раз).
Неблокирующие подпрограммы доступа к данным указывают, что MPI может начать доступ к данным и ассоциировать дескриптор запроса и сам запрос с операцией ввода-вывода. Неблокирующие операции завершаются посредством MPI_TEST, MPI_WAIT или любых их вариантов.
Операции доступа к данным, когда завершаются, возвращают количество данных, к которым был осуществлен доступ, в качестве состояния.
Совет пользователям: Для того чтобы предупредить проблемы, связанные с копированием аргументов и регистровой оптимизацей, выполняемых компиляторами Фортрана, обратите внимание на советы в подразделах ``Проблемы из-за копирования данных'' и ``Проблема регистровой оптимизации'' в разделе A Problem with Register Optimization . []
Для блокирующих подпрограмм состояние возвращается напрямую. Для неблокирующих и разделенных коллективных подпрограмм состояние возвращается, когда операция завершается. Количество элементов типа datatype и заранее определенных элементов может быть выделено из status при помощи использования MPI_GET_COUNT и MPI_GET_ELEMENTS соответственно. Интерпретация поля MPI_ERROR такая же, как и для других операций, обычно не определена, но имеет значение, если подпрограмма MPI возвратила MPI_ERR_IN_STATUS. Пользователь может передать (в Си и ФОРТРАН) MPI_STATUS_IGNORE в аргументе status, если возврат этого аргумента не нужен. В С++ аргумент status не обязателен. В status может передаваться MPI_TEST_CANCELLED, чтобы определить, что операция была отменена. Все остальные поля в status не определены. При чтении программа может обнаружить конец файла, обращая внимание на то, что количество прочитанных данных меньше запрошенного количества. Запись после конца файла увеличивает размер файла. Количество записанных данных будет равно запрошенному количеству, если только не возникнет ошибка (или чтение достигнет конца файла).
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |