- •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_Bcast(void *buf, int count, mpi_Datatype datatype, int source, mpi_Comm comm)
OUT buf - адрес начала буфера посылки сообщения
count - число передаваемых элементов в сообщении
datatype - тип передаваемых элементов
source - номер рассылающего процесса
comm - идентификатор группы
Рассылка сообщения от процесса source всем процессам, включая рассылающий процесс. При возврате из процедуры содержимое буфера buf процессаsource будет скопировано в локальный буфер процесса. Значения параметров count, datatype и source должны быть одинаковыми у всех процессов.
Int mpi_Gather( void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int dest, mpi_Comm comm)
sbuf - адрес начала буфера посылки
scount - число элементов в посылаемом сообщении
stype - тип элементов отсылаемого сообщения
OUT rbuf - адрес начала буфера сборки данных
rcount - число элементов в принимаемом сообщении
rtype - тип элементов принимаемого сообщения
dest - номер процесса, на котором происходит сборка данных
comm - идентификатор группы
OUT ierror - код ошибки
Сборка данных со всех процессов в буфере rbuf процесса dest. Каждый процесс, включая dest, посылает содержимое своего буфера sbuf процессу dest. Собирающий процесс сохраняет данные в буфере rbuf, располагая их в порядке возрастания номеров процессов. Параметр rbuf имеет значение только на собирающем процессе и на остальных игнорируется, значения параметров count, datatype и dest должны быть одинаковыми у всех процессов.
Int mpi_Allreduce( void *sbuf, void *rbuf, int count, mpi_Datatype datatype, mpi_Op op, mpi_Comm comm)
sbuf - адрес начала буфера для аргументов
OUT rbuf - адрес начала буфера для результата
count - число аргументов у каждого процесса
datatype - тип аргументов
op - идентификатор глобальной операции
comm - идентификатор группы
Выполнение count глобальных операций op с возвратом count результатов во всех процессах в буфере rbuf. Операция выполняется независимо над соответствующими аргументами всех процессов. Значения параметров count и datatype у всех процессов должны быть одинаковыми. Из соображений эффективности реализации предполагается, что операция op обладает свойствами ассоциативности и коммутативности.
Int mpi_Reduce( void *sbuf, void *rbuf, int count, mpi_Datatype datatype, mpi_Op op, int root, mpi_Comm comm)
sbuf - адрес начала буфера для аргументов
OUT rbuf - адрес начала буфера для результата
count - число аргументов у каждого процесса
datatype - тип аргументов
op - идентификатор глобальной операции
root - процесс-получатель результата
comm - идентификатор группы
Функция аналогична предыдущей, но результат будет записан в буфер rbuf только у процесса root.
Синхронизация процессов
Int mpi_Barrier( mpi_Comm comm)
comm - идентификатор группы
Блокирует работу процессов, вызвавших данную процедуру, до тех пор, пока все оставшиеся процессы группы comm также не выполнят эту процедуру.
Работа с группами процессов
