Посылает сообщение от процесса с рангом "root" (обычно, это процесс с рангом 0) всем другим процессам в группе.
Формат вызова: MPI_Bcast (&buffer, count, datatype, root, comm)
MPI_Gather
Собирает сообщения от каждого из процессов в группе в приемный буфер процесса с рангом 'root".
Формат вызова: MPI_Gather (&sendbuf, sendcount, sendtype, &recvbuf, recvcount, recvtype, root, comm)
Cледует заметить, что:
• sendtype и recvtype, в общем случае, могут различаться, а потому будут задавать разную интерпретацию данных на приемной и передающей стороне;
•процесс root также отправляет данные, но в свой же приемный буфер.
MPI_Scatter
Эта функция является обратной к функции MPI_Gather: отдельные части передающего буфера процесса с рангом 'root' распределяются по приемным буферам всех других процессов в группе.
Формат вызова: MPI_Scatter (&sendbuf, sendcount, sendtype, &recvbuf, recvcount, recvtype, root, comm)
MPI_Allgather
Эта функция аналогична функции MPI_Gather, за исключением того, что прием данных осуществляет не один процесс, а все процессы: каждый процесс имеет специфическое содержимое в передающем буфере, но все процессы получают в итоге одинаковое содержимое в приемном буфере.
|
|
Формат вызова: MPI_Allgather (&sendbuf, sendcount, sendtype, &recvbuf, recvcount, recvtype, comm)
MPI_Alltoall
Каждый процесс отдельные части своего передающего буфера рассылает всем остальным процессам; каждый процесс получает эти части от всех остальных и размещает их по порядку рангов процессов, от которых они получены. Формат вызова: MPI_Alltoall (&sendbuf, sendcount, sendtype, &recvbuf, recvcount, recvtype, comm)
4. Перечислите и опишите коллективные операции.