| |
------------------------------------------------------------------
MPI_GATHER(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::Gather(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_GATHERV(sendbuf, sendcount, sendtype, recvbuf,
recvcounts, displs, recvtype, root, comm)
------------------------------------------------------------------
| IN | sendbuf |
Стартовый адрес буфера передачи (по выбору) | ||||
| IN | sendcount |
Количество элементов в буфере передачи (целое) | ||||
| IN | sendtype |
Тип данных элементов буфера передачи (указатель) | ||||
| OUT | recvbuf |
Адрес буфера приема (по выбору, имеет значение только для корня) | ||||
| IN | recvcounts |
Целочисленный массив (длины, равной длине группы), содержащий количество элементов, принимаемых от каждого процесса (имеет значение только для корня) | ||||
| IN | displs |
Целочисленный массив (длины, равной длине группы). Элемент i указывает относительное смещение в recvbuf, с которого будут помещаться приходящие от процесса i данные (имеет значение только для корня) | ||||
| IN | recvtype |
Тип данных элементов буфера приема (указатель, имеет значение только для корня) | ||||
| IN | root |
Ранг принимающего процесса (целое) | ||||
| IN | comm |
Коммуникатор (указатель) |
void MPI::Comm::Gatherv(const void* sendbuf, int sendcount,
const MPI::Datatype& sendtype,
void* recvbuf, const int recvcounts[],
const int displs[], 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 Добавить, Поддержать, Вебмастеру |