Составители:
Рубрика:
50
MPI_GATHER(SENDBUF, SENDCOUNT, SENDTYPE, RCVBUF, RCVCOUNT, RCVTYPE,
ROOT, COMM, IERR)
Каждый
процесс
в
коммуникаторе
comm
пересылает
содержимое
буфера
передачи
sendbuf
процессу
с
рангом
root
.
Процесс
root
"
склеивает
"
полученные
данные
в
буфере
приема
(
рис
. 19).
Порядок
склейки
определяется
рангами
процессов
,
то
есть
в
результирующем
наборе
после
данных
от
процесса
0
следуют
данные
от
процесса
1,
затем
данные
от
процесса
2
и
т
.
д
.
Аргументы
rcvbuf
,
rcvcount
и
rcvtype
играют
роль
только
на
стороне
главного
процесса
.
Аргумент
rcvcount
указывает
количество
элементов
данных
,
полученных
от
каждого
процесса
(
но
не
суммарное
их
количество
).
При
вызове
подпрограмм
MPI_Scatter
и
MPI_Gather
из
разных
процессов
следует
использовать
общий
главный
процесс
.
Рис. 19.
Сбор
данных
при
выполнении
операции
Gather
Векторная
подпрограмма
распределения
данных
int MPI_Scatterv(void *sendbuf, int *sendcounts, int *displs,
MPI_Datatype sendtype, void *rcvbuf, int rcvcount, MPI_Datatype
rcvtype, int root, MPI_Comm comm)
MPI_SCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RCVBUF, RCVCOUNT,
RCVTYPE, ROOT, COMM, IERR)
Входные
параметры
:
•
sendbuf
адрес
буфера
передачи
;
•
sendcounts
целочисленный
одномерный
массив
,
содержащий
количество
элементов
,
передаваемых
каждому
процессу
(
индекс
равен
рангу
адресата
).
Его
длина
равна
количеству
процессов
в
коммуникаторе
;
•
displs
целочисленный
массив
,
длина
которого
равна
количеству
процессов
в
коммуникаторе
.
Элемент
с
индексом
i
задает
смещение
относительно
начала
буфера
передачи
.
Ранг
адресата
равен
значению
индекса
i
;
•
sendtype
тип
данных
в
буфере
передачи
;
•
rcvcount
количество
элементов
в
буфере
приема
;
•
rcvtype
тип
данных
в
буфере
приема
;
•
root
ранг
передающего
процесса
;
•
comm
коммуникатор
.
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »
