next up previous contents
Next: Типы данных для взаимодействия Up: Ввод/вывод. Previous: Разделенные коллективные подпрограммы доступа   Contents

Возможность взаимодействия с файлом

Для большинства базовых уровней возможность взаимодействия с файлом - это возможность читать информацию, предварительно записанную в файл, причем не только биты данных, но и фактическую информацию, которую эти биты представляют. MPI гарантирует полноту возможностей взаимодействия в пределах одной среды MPI и поддерживает расширенные возможности взаимодействия вне этой среды через внешнее представление данных (раздел 7.5.2) также как и функции преобразования данных (раздел 7.5.3).

Возможность взаимодействия в пределах одной среды MPI (которую можно было бы назвать ``операбельностью'') гарантирует, что данные файла, записанные одним процессом MPI могут читаться любым другим процессом MPI, с учетом ограничений для последовательностей (см. раздел 7.6.1), т.е. при условии, что есть возможность запустить два процесса одновременно, и сделать это так, чтобы они существовали в одном MPI_COMM_WORLD. Кроме того, оба процесса должны ``видеть'' одни и те же значения данных для каждого уже записанного байта по любому абсолютному смещению в файле.

Эта возможность взаимодействия с файлом в одной среде подразумевает, что данные файла доступны независимо от числа процессов.

Существуют три аспекта возможности взаимодействия с файлом:

Первые два аспекта возможности взаимодействия с файлом не входят в область рассмотрения данного стандарта, поскольку оба в большой степени машинно-зависимы. Однако требуется, чтобы передача битов в файл и из файла в среде MPI (например, во время записи файла на ленту) поддерживалась всеми реализациями MPI. В частности, реализация должна определять, как известные операции, подобные POSIX cp, rm, и mv могут быть применены для файла. Кроме того, ожидается, что предоставляемые средства поддерживают соответствие между абсолютными смещениями байта (например, после возможного преобразования файловой структуры, биты данных в байте по смещению 102 в среде MPI расположены в байте по смещению 102 и вне среды MPI). Как пример, простая автономная утилита преобразования, которая пересылает и преобразовывает файлы между исходной файловой системой и средой MPI, является приемлемой, если она поддерживает режим работы со смещением, упомянутый выше. В высококачественной реализации MPI, пользователи смогут управлять файлами MPI, используя такие же инструментальные средства управления файлами, как предлагает исходная файловая система или подобные им.

Оставшийся аспект возможности взаимодействия с файлом - преобразование между различными машинными представлениями - поддерживается во время ввода информации, указанной в etype и filetype. Это средство позволяет информации в файлах быть разделяемой любыми двумя приложениями, независимо от того, используют ли они MPI, и независимо от архитектуры машины, на которой они выполняются.

MPI поддерживает много представлений данных: native, internal и external32. Реализации могут поддерживать дополнительные представления данных. MPI также поддерживает определяемые пользователем представления данных (см. раздел 7.5.3). Исходное и внутреннее представления данных зависят от реализации в то время, как представление external32 является общим для всех реализаций MPI и облегчает возможность взаимодействия с файлом. Представление данных указывается в аргументе datarep для MPI_FILE_SET_VIEW.

Совет пользователям: MPI не гарантирует сохранение информации о том, какое представление данных использовалось во время записи в файл. Поэтому, для правильности извлечения данных из файла, приложение MPI должно быть ответственно за указание того же представления данных, что использовалось при создании файла.[]

native: Данные в этом представлении сохраняются в файле точно в таком же виде, как они находятся в памяти. Преимущество этого представления данных состоит в том, что точность данных и эффективность ввода-вывода не теряются при преобразованиях типов в чистой гомогенной среде. Недостатком является потеря ``прозрачности'' возможности взаимодействия в гетерогенной среде MPI.

Совет пользователям: Это представление данных должно использоваться только в гомогенной среде MPI, или в тех случаях, когда приложение MPI способно выполнить преобразование типа данных самостоятельно. []

Совет разработчикам: Когда осуществляются операции чтения и записи на вершине потока сообщений MPI, данные сообщений должны вводиться в виде MPI_BYTE, чтобы гарантировать, что подпрограммы обработки сообщений не сделают никаких преобразований над данными.[]

internal: Это представление данных может использоваться для операций ввода-вывода в гомогенной или гетерогенной среде; реализация будет выполнять преобразование типов в случае необходимости. Реализация вольна сохранять данные в любом формате по выбору с тем ограничением, что она будет поддерживать постоянные экстенты для всех предопределенных типов данных в любом файле. Среда, в которой полученный в результате файл может многократно использоваться, определяется реализацией и должна быть документирована ей.

Объяснение: Это представление данных позволяет реализации выполнять ввод-вывод эффективно в гетерогенной среде, хотя и с наложенными реализацией ограничениями на повторное использование файла.[]

Совет разработчикам: С тех пор, как external32 стал ``супернабором'' функциональных возможностей, предоставляемых internal, реализация может выбрать internal с тем же успехом, что и external32.[]

external32: Для этого представления данных принимается, что операции чтения и записи преобразовывают все данные из и в представление external32, определенное в секции 7.5.2. Правила преобразования данных для коммуникации также применимы и к этим преобразованиям (см. раздел 3.3.2, страницы 25-27 документа MPI-1). Данные на носителе - всегда в этом каноническом представлении, а данные в памяти - всегда в исходном представлении локального процесса.

Это представление данных имеет несколько преимуществ. Во-первых, все процессы, читающие файл в гетерогенной среде MPI автоматически преобразуют данные к их соответствующим исходным представлениям. Во- вторых, файл может экспортироваться из данной среды MPI и импортироваться в любую другую среду MPI с гарантией того, что другая среда будет иметь возможность читать все данные в файле.

Совет разработчикам: Когда осуществляются операции чтения и записи на вершине потока сообщений MPI, данные сообщения должны быть преобразованы в представление или из представления external32 клиентом, и посланы в виде типа MPI_BYTE. Это позволит избежать возможного двойного преобразования типа данных и связанной с этим дальнейшей потери точности и производительности.[]



Subsections

Alex Otwagin 2002-12-10