119
MPI_SCATTER (sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype,
root, comm)
IN sendbuf
начальный адрес буфера рассылки (альтернатива, использу-
ется только корневым процессом)
IN sendcount
количество элементов, посылаемых каждому процессу (це-
лое, используется только корневым процессом)
IN sendtype
тип данных элементов в буфере посылки (дескриптор, ис-
пользуется только корневым процессом)
OUT recvbuf адрес буфера процесса-получателя (альтернатива)
IN recvcount количество элементов в буфере корневого процесса (целое)
IN recvtype тип данных элементов приемного буфера (дескриптор)
IN root номер процесса-получателя (целое)
IN comm коммуникатор (дескриптор)
int MPI_Scatter (void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf,
int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)
MPI_SCATTER (SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF,
RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT,
COMM, IERROR
void MPI::Intracomm::Scatter(const void* sendbuf, int sendcount, const Datatype&
sendtype, void* recvbuf, int recvcount, const Datatype& recvtype, int root) const
Буфер отправки игнорируется всеми некорневыми процессами.
Сигнатура типа, связанная с
sendcount, sendtype, должна быть оди-
наковой
для корневого процесса и всех других процессов. Это требу-
ет, чтобы количество посланных и полученных данных совпадало по-
парно для корневого и каждого другого процессов. Корневой процесс
использует все аргументы функции, а другие процессы используют
только аргументы
recvbuf, recvcount, recvtype, root, comm. Аргумен-
ты
root и comm должны быть одинаковыми во всех процессах. Опи-
санные в функции
MPI_SCATTER количества и типы данных не
должны являться причиной того, чтобы любая ячейка корневого про-
цесса записывалfсь бы более одного раза. Такой вызов является не-
верным.
Операция MPI_SCATERV обратна операции MPI_GATHERV.
Аргумент
sendbuf игнорируется во всех некорневых процессах. Сиг-
натура типа, связанная с
sendcount [i], sendtype в главном процессе,
должна быть той же, что и сигнатура, связанная с
recvcount, recvtype
в процессе i. Это требует, чтобы количество посланных и полученных
данных совпадало попарно для корневого и каждого другого процес