INOUT | fh | дескриптор файла (дескриптор) |
IN | disp | смещение (целое) |
IN | etype | элементарный тип данных (дескриптор) |
IN | filetype | тип файла (дескриптор) |
IN | datarep | представление данных (строка) |
IN | info | информационный объект (дескриптор) |
int MPI_File_set_view(MPI_File fh, MPI_Offset disp,
MPI_Datatype etype, MPI_Datatype filetype,
char *datarep, MPI_Info info)
MPI_FILE_SET_VIEW(FH, DISP, ETYPE, FILETYPE,
DATAREP, INFO, IERROR)
INTEGER FH, ETYPE, FILETYPE, INFO, IERROR
CHARACTER*(*) DATAREP
INTEGER(KIND=MPI_OFFSET_KIND) DISP
void MPI::File::Set_view(MPI::Offset disp,
const MPI::Datatype& etype, const MPI::Datatype& filetype,
const char* datarep, const MPI::Info& info)
Подпрограмма MPI_FILE_SET_VIEW изменяет вид данных файла
для процесса. Начало вида устанавливается в disp; тип данных
устанавливается в etype; распределение данных по процессам в
filetype; и представление данных устанавливается в datarep. Кроме
того, MPI_FILE_SET_VIEW сбрасывает все индивидуальные и
общие файловые указатели в 0. MPI_FILE_SET_VIEW -
коллективная; значения datarep и размеры е-типов в представлении
данных должны совпадать во всех процессах в группе; значения
disp, filetype и info могут быть различны. Типы данных,
передаваемые в etype и filetype, должны согласовываться.
Е-тип всегда определяет расположение данных в файле. Если etype - это портируемый тип данных (см. раздел Semantic Terms), размер е-типа вычисляется масштабированием какого-либо смещения в типе данных до соответствия представлению данных в файле. Если etype не является портируемым типом данных, то при вычислении размера е-типа масштабирование не производится. Пользователь должен быть осторожен при использовании непортируемых е-типов в гетерогенных средах; подробнее см. в разделе Datatypes for File Interoperability. Если при открытии файла был определен тип доступа MPI_MODE_SEQUENTIAL, специальное смещение MPI_DISPLACEMENT_CURRENT должно передаваться в качестве disp. Это установит смещение в текущую позицию общего файлового указателя.
Объяснение:
Для некоторых последовательных файлов, например, соответствующих магнитным кассетам или потоковым сетевым соединениям, смещение может быть незначительно. MPI_DISPLACEMENT_CURRENT позволяет менять вид таких файлов. []
Совет разработчикам:
Ожидается, что вызов MPI_FILE_SET_VIEW будет следовать сразу за MPI_FILE_OPEN во многих случаях. Высококачественная реализация обеспечит эффективность такого поведения. []
Аргумент смещения disp определяет позицию (абсолютное смещения в байтах от начала файла), с которой начинается вид.
Совет пользователям:
disp может быть использован, для того чтобы пропустить заголовки или когда файл включает последовательность сегментов данных, к которым следует осуществлять доступ по различным шаблонам (см. рисунок 15). Отдельные виды, каждый из которых использует свои собственные смещение и тип файла, могут быть использованы для доступа к каждому сегменту.[]
Е-тип (элементарный тип данных) - это единица доступа к данным и позиционирования. Это может быть любой определенный в MPI или производный тип данных. Производные е-типы могут быть созданы при помощи любой из подпрограмм создания типов данных MPI, обеспечивающих, чтобы получающиеся типовые смещения были неотрицательны и монотонно неубывали. Доступ к данным идет в единицах е-типов, считывая или записывая целый блок данных какого-либо из е-типов. Смещения выражаются как количества е-типов; указатели на файл указывают на начала е-типов.
Совет пользователям: Чтобы обеспечить взаимодействие в гетерогенной среде, должны применяться дополнительные ограничения для конструирования е-типов (см. разд. File Interoperability ). []
Тип файла - это или простой е-тип или производный тип данных MPI, построенный из нескольких экземпляров одного и того же е- типа. Кроме того, размер любой ``дыры'' в файловом типе должен быть кратен размеру е-типа. Не требуется, чтобы эти смещения были различны, но они не могут быть отрицательны и должны монотонно неубывать.
Если файл открыт для записи, ни е-тип, ни файловый тип не должны иметь перекрывающиеся области. Это ограничение эквивалентно ограничению ``тип данных, используемых для получения информации не может определять перекрывающиеся области'' для коммуникации. Заметим, что несмотря на это файловые типы из разных процессов могут перекрываться.
Если в файловом типе есть ``дыры``, то тогда данные в этих ``дырах`` недоступны для вызывающего процесса. Однако аргументы disp, etype и filetype могут быть изменены посредством последующих вызовов MPI_FILE_SET_VIEW, для того чтобы получить доступ к различным частям файла.
Ошибочно использовать абсолютные адреса при создании е-типа и файлового типа.
Аргумент info используется для обеспечения информации относительно шаблонов доступа к файлу и специфики файловой системы для прямой оптимизации (см. раздел File Info ). Константа MPI_INFO_NULL соответствует нулевому info, и может быть использована в тех случаях, когда дополнительная информация не нужна.
Аргумент datarep - это строка, которая определяет представление
данных в файле. Смотри дальнейшие детали и обсуждение
допустимых значений в разделе File Interoperability.
Пользователь должен обеспечить, чтобы все ожидающие обработки
неблокирующие запросы и коллективные операции над fh,
производимые процессом, были выполнены до вызова
MPI_FILE_SET_VIEW - в противном случае вызов
MPI_FILE_SET_VIEW - ошибочен.
IN | fh | дескриптор файла (дескриптор) |
OUT | disp | смещение (целое) |
OUT | etype | элементарный тип данных (дескриптор) |
OUT | filetype | тип файла (дескриптор) |
OUT | datarep | представление данных (строка) |
int MPI_File_get_view(MPI_File fh, MPI_Offset *disp,
MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep)
MPI_FILE_GET_VIEW(FH, DISP, ETYPE, FILETYPE, DATAREP, IERROR)
INTEGER FH, ETYPE, FILETYPE, IERROR
CHARACTER*(*) DATAREP,
INTEGER(KIND=MPI_OFFSET_KIND) DISP
void MPI::File::Get_view(MPI::Offset& disp, MPI::Datatype& etype,
MPI::Datatype& filetype, char* datarep) const
MPI_FILE_GET_VIEW возвращает вид файла в процессе. Текущее
значение смещения возвращается в disp. etype и filetype - это
новые типы данных с картами типов равными картам типов текущих е-типа
и файлового типа соответственно. Представление данных
возвращается в datarep. Пользователь должен обеспечить, чтобы
строка datarep была достаточно велика, чтобы содержать
возвращаемую строку представления данных. Длина строки
представления данных ограничена значением
MPI_MAX_DATAREP_STRING.
Кроме того, если портируемый тип данных был использован для
установки текущего вида, то соответствующий тип данных,
возвращаемый MPI_FILE_GET_VIEW, тоже портируемый. Если etype
или filetype - это производный тип данных, то ответственность за
освобождение их памяти лежит на пользователе.