The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Рассылка Up: Операции, которые пересылают данные Previous: Широковещательная передача   Contents

Сбор


------------------------------------------------------------------
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 должны быть совместимы с аргументами буфера приема корня.


next up previous contents
Next: Рассылка Up: Операции, которые пересылают данные Previous: Широковещательная передача   Contents
Alex Otwagin 2002-12-10

ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Оформить подписку на год


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList