Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воеводин Вл11.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
258 Кб
Скачать
☆

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 также не выполнят эту процедуру.

Работа с группами процессов