Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Собирает переменный объем данных от каждого члена группы и отправляет их всем членам группы. Функция MPI_Allgatherv похожа на MPI_Gatherv, за исключением того, что все процессы получают результат, а не только корень. Блок данных, отправляемый из j-гопроцесса, получается каждым процессом и помещается в блок j-гобуфера recvbuf. Эти блоки не обязательно должны иметь одинаковый размер.
Синтаксис
int MPIAPI MPI_Allgatherv(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
_In_ int *recvcounts,
_In_ int *displs,
MPI_Datatype recvtype,
MPI_Comm comm
);
Параметры
sendbuf [in]
Указатель на данные, отправляемые всем процессам в группе. Число и тип данных элементов в буфере указываются в параметрах sendcount и sendtype . Каждый элемент в буфере соответствует процессу в группе.Если параметр comm ссылается на внутриобщий коммуникатор, можно указать параметр на месте, указав MPI_IN_PLACE во всех процессах. Параметры sendcount и sendtype игнорируются. Каждый процесс вводит данные в соответствующий элемент буфера приема. N-йпроцесс отправляет данные n-муэлементу буфера приема.
sendcount
Количество элементов данных, отправляемых этим процессом в буфер, указанный в параметре sendbuf . Если элемент в sendcount равен нулю, часть данных сообщения из этого процесса пуста.sendtype
Тип данных MPI элементов в буфере отправки.recvbuf [out]
Указатель на буфер, содержащий данные, полученные от каждого процесса. Число и тип данных элементов в буфере указываются в параметрах recvcount и recvtype .recvcounts [in]
Количество элементов данных из каждого процесса коммуникатора в буфере получения.displs [in]
Расположение данных из каждого процесса коммуникатора относительно параметра recvbuf .В массивах параметров recvbuf, recvcounts и displsn-йэлемент каждого массива ссылается на данные, полученные из процесса n-гокоммуникатора.
recvtype
Тип данных MPI каждого элемента в буфере.Comm
Дескриптор MPI_Comm .
Возвращаемое значение
Возвращает MPI_SUCCESS об успешном выполнении. В противном случае возвращаемое значение является кодом ошибки.
В Fortran возвращаемое значение хранится в параметре IERROR .
Fortran
MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR
Комментарии
Правила использования для MPI_Allgatherv соответствуют правилам для MPI_Gatherv.
Подпись типа, связанная с параметром sendtype в процессе, должна быть равна сигнатуре типа, связанной с параметром recvtype в любом другом процессе.
Если параметр comm ссылается на внутриобщий коммуникатор, результат вызова MPI_Allgatherv(...)будет таким же, как если бы все выполняемые процессы вызывали MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)для root = 0 , ..., n-1.
Если параметр comm ссылается на интеркоммуникатора, то каждый процесс одной группы, например группы A, вносит количество элементов данных, указанных в параметре sendcount . Эти данные объединяются, а результат сохраняется в каждом процессе в другой группе, группе B. И наоборот, объединение данных процессов в группе B сохраняется в каждом процессе в группе A. Параметры буфера отправки в группе A должны соответствовать параметрам буфера приема в группе B и наоборот.
Требования
Продукт |
Распространяемый пакет HPC 2012 MS-MPI, пакет HPC 2008 R2 распространяемый пакет MS-MPI, пакет HPC 2008 MS-MPI распространяемый пакет или служебные программы клиента ПАКЕТА HPC 2008 |
Заголовок |
Mpi.h; Mpif.h |
Библиотека |
Msmpi.lib |
DLL |
Msmpi.dll |