Размер файла может увеличиться после записи в файл после текущего конца файла. Размер также может измениться при вызове процедур изменения размера MPI, таких, как MPI_FILE_SET_SIZE. Вызов процедуры изменения размера не обязательно изменяет размер файла. Например, вызов MPI_FILE_PREALLOCATE с размером, меньшим, чем текущий размер, не изменяет размер.
Рассмотрим множество байтов, которые были записаны в файл со времени самого последнего вызова процедуры изменения размера, или со времени MPI_FILE_OPEN, если такая процедура не была вызвана. Пусть старшим байтом будет байт в этом множестве с наибольшим смещением. Размер файла больше, чем
Вызовы MPI_FILE_SET_SIZE и MPI_FILE_PREALLOCATE при применении семантики непротиворечивости рассматриваются как запись в файл (что может вызвать конфликт с операциями, которые обращаются к байтам по смещениям между старым и новым размером файла), а MPI_FILE_GET_SIZE рассматривается как чтение файла (которое перекрывается со всеми оппытками доступа к файлу).
Совет пользователям: Любая последовательность операций, содержащая коллективные процедуры MPI_FILE_SET_SIZE и MPI_FILE_PREALLOCATE является последовательностью записи. Поэтому последовательная непротиворечивость в неатомарном режиме не может гарантироваться, пока не удовлетворяются условия раздела 7.6.1.[]
Семантика обновления указателя файла (то есть, указатели файла обновляются по количеству попыток доступа) гарантируется только, если изменения размера файла последовательно непротиворечивы.
Совет пользователям: Рассмотрим следующий пример. Даны две операции, выполняемые отдельным процессом в файле, содержащем 100 байт: MPI_FILE_READ 10 байт и MPI_FILE_SET_SIZE в 0 байт. Если пользователь не обеспечивает последовательную непротиворечивость между двумя этими операциями, указатель файла будет обновлен по запрошенному количеству (10 байт), даже если количество доступных равно нулю.[]