Для передачи сообщения процесс- отправитель должен выполнить функцию:
int MPI_Send(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm),
где
Для указания типа пересылаемых данных в MPI имеется ряд базовых типов, полный список которых приведен в табл. 5.1.
MPI_BYTE | |
MPI_CHAR | signed char |
MPI_DOUBLE | double |
MPI_FLOAT | float |
MPI_INT | int |
MPI_LONG | long |
MPI_LONG_DOUBLE | long double |
MPI_PACKED | |
MPI_SHORT | short |
MPI_UNSIGNED_CHAR | unsigned char |
MPI_UNSIGNED | unsigned int |
MPI_UNSIGNED_LONG | unsigned long |
MPI_UNSIGNED_SHORT | unsigned short |
Следует отметить:
Сразу же после завершения функции MPI_Send процесс-отправитель может начать повторно использовать буфер памяти, в котором располагалось отправляемое сообщение. Также следует понимать, что в момент завершения функции MPI_Send состояние самого пересылаемого сообщения может быть совершенно различным: сообщение может располагаться в процессе-отправителе, может находиться в состоянии передачи, может храниться в процессе-получателе или же может быть принято процессом-получателем при помощи функции MPI_Recv. Тем самым, завершение функции MPI_Send означает лишь, что операция передачи начала выполняться и пересылка сообщения рано или поздно будет выполнена.
Пример использования функции будет представлен после описания функции MPI_Recv.