| |
------------------------------------------------------------------
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 | Коммуникатор (указатель) |
void MPI::Comm::Scatter(const void* sendbuf, int sendcount,
const MPI::Datatype& sendtype,
void* recvbuf, int recvcount,
const MPI::Datatype& recvtype,
int root) const = 0
Опция in-place для интракоммуникаторов указывается передачей
MPI_IN_PLACE в качестве значения sendbuf для корня. В этом
случае sendcount и sendtype игнорируются, и корень не
''посылает'' данные сам себе. Предполагается, что вектор рассылки по
прежнему содержит
сегментов, где
- размер группы; корневой
сегмент, который корень должен ''посылать'' себе, не перемещается.
Если comm - интеркоммуникатор, то вызов затрагивает все процессы в
интеркоммуникаторе, но с одной группой (группа A), определяющей
корневой процесс. Всем процессам в другой группе (группе B) будут
переданы одинаковые значения в аргументе root, который является
номером корня в группе A. Корень получит значение MPI_ROOT
в root. Все другие процессы из группы A получат значение
MPI_PROC_NULL в root. Данные рассылаются от корня всем
процессам в группе B. Аргументы буферов передачи процессов из
группы B должны быть совместимы с аргументами буфера приема корня.
------------------------------------------------------------------
MPI_SCATTERV(sendbuf, sendcounts, displs, sendtype,
recvbuf, recvcount, recvtype, root, comm)
------------------------------------------------------------------
| IN | sendbuf | Стартовый адрес буфера передачи (по выбору, имеет значение только для корня) | ||||
| IN | sendcounts | Целочисленный массив (длины, равной длине группы), указывающий количество элементов для передачи каждому процессу | ||||
| IN | displs | Целочисленный массив (длины, равной длине группы).
Элемент |
||||
| IN | sendtype | Тип данных элементов буфера передачи (указатель) | ||||
| OUT | recvbuf | Адрес буфера приема (по выбору) | ||||
| IN | recvcount | Количество элементов в буфере приема (целое) | ||||
| IN | recvtype | Тип данных элементов буфера приема (указатель) | ||||
| IN | root | Ранг передающего процесса (целое) | ||||
| IN | comm | Коммуникатор (указатель) |
void MPI::Comm::Scatterv(const void* sendbuf,
const int sendcounts[],
const int displs[],
const MPI::Datatype& sendtype,
void* recvbuf, int recvcount,
const MPI::Datatype& recvtype,
int root) const = 0
Опция in-place для интракоммуникаторов указывается передачей
MPI_IN_PLACE в качестве значения sendbuf для корня. В этом
случае sendcount и sendtype игнорируются, и корень не
''посылает'' данные сам себе. Предполагается, что вектор рассылки по
прежнему содержит
сегментов, где
- размер группы; корневой
сегмент, который корень должен ''посылать'' себе, не перемещается.
Если comm - интеркоммуникатор, то вызов затрагивает все процессы в
интеркоммуникаторе, но с одной группой (группа A), определяющей
корневой процесс. Всем процессам в другой группе (группе B) будут
переданы одинаковые значения в аргументе root, который является
номером корня в группе A. Корень получит значение MPI_ROOT
в root. Все другие процессы из группы A получат значение
MPI_PROC_NULL в root. Данные рассылаются от корня всем
процессам в группе B. Аргументы буферов передачи процессов из
группы B должны быть совместимы с аргументами буфера приема корня.
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |