next up previous contents
Next: Атрибуты сообщения Up: Операции блокирующей передачи и Previous: Блокирующая передача   Contents

Данные в сообщении

Буфер посылки описан в операции MPI_SEND, в которой указано количество последовательно размещенных элементов, тип элементов указан в поле datatype, начиная с элемента по адресу buf. Длина сообщения задается числом элементов, а не числом байтов. Число данных count в сообщении может быть равно нулю, это означает, что область данных в сообщении пуста. Базисные типы данных в сообщении соответствуют базисным типам данных используемого языка программирования. Список соответствия этих типов данных для языка ФОРТРАН и MPI представлен ниже.


MPI datatype Fortran datatype
   
MPI_INTEGER INTEGER
MPI_REAL REAL
MPI_DOUBLE_PRECISION DOUBLE PRECISION
MPI_COMPLEX COMPLEX
MPI_LOGICAL LOGICAL
MPI_CHARACTER CHARACTER(1)
MPI_BYTE  
MPI_PACKED  

Список соответствия типов данных для языка Си и MPI дан ниже.

MPI datatype C datatype
   
MPI_CHAR signed char
MPI_SHORT signed short int
MPI_INT signed int
MPI_LONG signed long int
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short int
MPI_UNSIGNED unsigned int
MPI_UNSIGNED_LONG unsigned long int
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
MPI_BYTE  
MPI_PACKED  

Типы MPI_BYTE и MPI_PACKED не имеют соответствия в языках Си или ФОРТРАН. Значением типа MPI_BYTE является байт (8 двоичных цифр). Байт не интерпретируется и отличен от символа. Различные машины могут иметь различное представление для символов или могут использовать для представления символов более одного байта. С другой стороны, байт имеет то же самое двоичное значение на всех машинах. Использование типа MPI_PACKED объясняется в разделе 3.13.

MPI требует поддержки для указанных выше типов данных, соответствующих базовым типам языков ФОРТРАН77 и ANSI Си. В MPI необходимо ввести дополнительные типы данных, если базовый язык имеет следующие типы данных:

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


next up previous contents
Next: Атрибуты сообщения Up: Операции блокирующей передачи и Previous: Блокирующая передача   Contents
Alex Otwagin 2002-12-10