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