- •Int mpi_Init( int* argc, char*** argv)
- •Int mpi_Finalize( void )
- •Int mpi_Comm_size( mpi_Comm comm, int* size)
- •Int mpi_Comm_rank( mpi_Comm comm, int* rank)
- •Int mpi_Send(void* buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm)
- •Int mpi_Recv(void* buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Status *status)
- •Int mpi_Get_count( mpi_Status *status, mpi_Datatype datatype, int *count)
- •Int mpi_Probe( int source, int msgtag, mpi_Comm comm, mpi_Status *status)
- •Int mpi_Isend(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Irecv(void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Wait( mpi_Request *request, mpi_Status *status)
- •Int mpi_Waitall( int count, mpi_Request *requests, mpi_Status *statuses)
- •Int mpi_Waitany( int count, mpi_Request *requests, int *index, mpi_Status *status)
- •Int mpi_Waitsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Int mpi_Test( mpi_Request *request, int *flag, mpi_Status *status)
- •Int mpi_Testall( int count, mpi_Request *requests, int *flag, mpi_Status *statuses)
- •Int mpi_Testany(int count, mpi_Request *requests, int *index, int *flag, mpi_Status *status)
- •Int mpi_Testsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Int mpi_Iprobe( int source, int msgtag, mpi_Comm comm, int *flag, mpi_Status *status)
- •Int mpi_Send_init( void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Recv_init( void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Sendrecv( void *sbuf, int scount, mpi_Datatype stype, int dest, int stag, void *rbuf, int rcount, mpi_Datatype rtype, int source, mpi_Datatype rtag, mpi_Comm comm, mpi_Status *status)
- •Int mpi_Bcast(void *buf, int count, mpi_Datatype datatype, int source, mpi_Comm comm)
- •Int mpi_Gather( void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int dest, mpi_Comm comm)
- •Int mpi_Allreduce( void *sbuf, void *rbuf, int count, mpi_Datatype datatype, mpi_Op op, mpi_Comm comm)
- •Int mpi_Reduce( void *sbuf, void *rbuf, int count, mpi_Datatype datatype, mpi_Op op, int root, mpi_Comm comm)
- •Int mpi_Barrier( mpi_Comm comm)
- •Int mpi_Comm_split( mpi_Comm comm, int color, int key, mpi_Comm *newcomm)
- •Int mpi_Comm_free( mpi_Comm comm)
- •Лекция 7. Система параллельного программирования Linda
Int mpi_Test( mpi_Request *request, int *flag, mpi_Status *status)
request - идентификатор асинхронного приема или передачи
OUT flag - признак завершенности операции обмена
OUT status - параметры сообщения
Проверка завершенности асинхронных процедур MPI_Isend или MPI_Irecv, ассоциированных с идентификатором request. В параметре flag возвращает значение 1, если соответствующая операция завершена, и значение 0 в противном случае. Если завершена процедура приема, то атрибуты и длину полученного сообщения можно определить обычным образом с помощью параметра status.
Int mpi_Testall( int count, mpi_Request *requests, int *flag, mpi_Status *statuses)
count - число идентификаторов
requests - массив идентификаторов асинхронного приема или передачи
OUT flag - признак завершенности операций обмена
OUT statuses - параметры сообщений
В параметре flag возвращает значение 1, если все операции, ассоциированные с указанными идентификаторами, завершены (с указанием параметров сообщений в массиве statuses). В противном случае возвращается 0, а элементы массива statuses неопределены.
Int mpi_Testany(int count, mpi_Request *requests, int *index, int *flag, mpi_Status *status)
count - число идентификаторов
requests - массив идентификаторов асинхронного приема или передачи
OUT index - номер завершенной операции обмена
OUT flag - признак завершенности операции обмена
OUT status - параметры сообщения
Если к моменту вызова подпрограммы хотя бы одна из операций обмена завершилась, то в параметре flag возвращается значение 1, index содержит номер соответствующего элемента в массиве requests, а status - параметры сообщения.
Int mpi_Testsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
incount - число идентификаторов
requests - массив идентификаторов асинхронного приема или передачи
OUT outcount - число идентификаторов завершившихся операций обмена
OUT indexes - массив номеров завершившихся операции обмена
OUT statuses - параметры завершившихся операций
Данная подпрограмма работает так же, как и MPI_Waitsome, за исключением того, что возврат происходит немедленно. Если ни одна из указанных операций не завершилась, то значение outcount будет равно нулю.
Int mpi_Iprobe( int source, int msgtag, mpi_Comm comm, int *flag, mpi_Status *status)
source - номер процесса-отправителя или MPI_ANY_SOURCE
msgtag - идентификатор ожидаемого сообщения или MPI_ANY_TAG
comm - идентификатор группы
OUT flag - признак завершенности операции обмена
OUT status - параметры обнаруженного сообщения
Получение информации о поступлении и структуре ожидаемого сообщения без блокировки. В параметре flag возвращает значение 1, если сообщение с подходящими атрибутами уже может быть принято (в этом случае ее действие полностью аналогично MPI_Probe), и значение 0, если сообщения с указанными атрибутами еще нет.
Объединение запросов на взаимодействие
Процедуры данной группы позволяют снизить накладные расходы, возникающие в рамках одного процессора при обработке приема/передачи и перемещении необходимой информации между процессом и сетевым контроллером. Несколько запросов на прием и/или передачу могут объединяться вместе для того, чтобы далее их можно было бы запустить одной командой. Способ приема сообщения никак не зависит от способа его посылки: сообщение, отправленное с помощью объединения запросов либо обычным способом, может быть принято как обычным способом, так и с помощью объединения запросов.
