next up previous contents
Next: Определяемые пользователем представления данных Up: Возможность взаимодействия с файлом Previous: Типы данных для взаимодействия   Contents

Внешнее представление данных: external32

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

Все значения с плавающей точкой находятся в формате IEEE big-endian [13] соответствующей длины. Значения с плавающей точкой представлены одним из трех форматов IEEE. Эти форматы IEEE - ``одиночный'', ``двойной'' и ``двойной расширенный'' - требуют 4, 8 и 16 байтов памяти соответственно. Для ``двойного расширенного'' формата IEEE, MPI задает ширину формата в 16 байтов, с 15 битами порядка, отклонением +10383, 112 битами мантиссы и кодировкой, аналогичной ``двойному'' формату. Все интегральные значения представляются согласно двум дополнениям big-endian формата. big-endian означает, что наиболее существенный байт располагается по самому низкому адресу. Для LOGICAL в ФОРТРАНe и bool в С++ ноль подразумевает ложь, а отличное от нуля значение - истину. COMPLEX и DOUBLE COMPLEX в ФОРТРАНe представлены парой форматов значений с плавающей точкой для реальных и мнимых компонентов. Символы - в формате ISO 8859-1 [14]. ``Широкие'' символы (типа MPI_WCHAR) - в формате Unicode [26].

Все числа со знаками (например, MPI_INT, MPI_REAL) имеют знаковый разряд в наиболее существенном бите. MPI_COMPLEX и MPI_DOUBLE_COMPLEX имеют знаковый разряд реальных и мнимых частей в наиболее существенном бите каждой части. Размер каждого типа данных MPI показан в таблице 7.2.

Согласно спецификациям IEEE [13], ``NaN'' (не число) системно- зависим. Оно не должно интерпретироваться в пределах MPI как что- либо, отличное от ``NaN''.

Совет разработчикам: Обработка ``NaN'' MPI использует подход, подобный используемому в XDR (см. ftp://ds.internic.net/rfc/rfcl832.txt).[]

Все данные выравниваются по байтам, независимо от типа. Все элементы данных последовательно сохраняются в файле.

Совет разработчикам: Все LOGICAL и bool байты должны быть проверены для определения их значения.[]

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

Размер предопределенных типов данных, возвращаемых MPI_TYPE_CREATE_F90_REAL,
MPI_TYPE_CREATE_F90_COMPLEX и MPI_TYPE_CREATE_F90_INTEGER определен в разделе 8.2.5.

Совет разработчикам: При преобразовании целого числа большей длины к целому числу меньшей длины только менее существенные байты заменяются. Должна быть проявлена осторожность - для сохранения значения знакового разряда. Это предотвращает ошибки преобразования, если диапазон данных находится в пределах диапазона целых чисел меньшей длины.



Alex Otwagin 2002-12-10