Параллельная обработка данных


Технологии параллельного программирования - часть 10


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

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

int MPI_Comm_split( MPI_Comm comm, int color, int key, MPI_Comm *newcomm)

  • comm - идентификатор группы
  • color - признак разделения на группы
  • key - параметр, определяющий нумерацию в новых группах
  • OUT newcomm - идентификатор новой группы




Начало  Назад  Вперед



Книжный магазин