call MPI_GATHER(buf, 10, MPI_INTEGER,
&
rbuf, 10, MPI_INTEGER,
&
2, MPI_COMM_WORLD, ierr)
186
MPI_GATHERV(SBUF, SCOUNT, STYPE, RBUF, RCOUNTS,
DISPLS, RTYPE, ROOT, COMM, IERR)
SBUF(*), RBUF(*)
INTEGER SCOUNT, STYPE, RCOUNTS(*), DISPLS(*), RTYPE,
ROOT, COMM, IERR
RBUF массивтерінен түрлі мӛлшердегі деректерді жинау. Қорытынды
RBUF
буферіндегі деректердің орналасу ретін DISPLS массиві береді.
RCOUNTS -
әрбір процестен жіберілетін элементтер санынан тұратын
бүтінсанды массив (индекс жіберетін процесс рангісіне тең, массив ӛлшемі
сомм коммуникаторындағы процестер санына тең).
DISPLS - RBUF
массивінің басталуына қарағандағы ығысудан
(смещение) тұратын бүтін санды массив (индекс - жіберетін процесс рангісіне
тең, массив ӛлшемі - сомм коммуникаторындағы процестер санына тең).
J-1 процесімен жіберілген деректер,
ROOT
процесінде
RBUF
буферінің
J
-ші
блогына орналастырылады.
MPI_SCATTER(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE,
ROOT,
COMM, IERR)
SBUF(*), RBUF(*)
INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, ROOT, COMM, IERR
MPI
_
SCATTER
процедурасының әрекеті
MPI
_
GATHER
процедурасына кері. Ол
ROOT
процесінің
SBUF
массивінен
STYPE
типті
SCOUNT
элементтерден сомм
коммуникаторының барлық процестерінің
RBUF
массивтеріне таратады
(
ROOT
процесін қоса алғанда).
SBUF
массивін, әрқайсысы
STYPE
типті
SCOUNT
элементтен тұратын процестер саны бойынша тең бӛлінген деп санауға
болады, одан кейін I-ші бӛлігі (I - 1)-ші процеске жіберіледі.
ROOT
процесінде барлық параметрлердің мәндері маңызды орын алады,
ал қалған барлық процестерде - тек RBUF,
R
COUNT,
R
TYPE, S
OURCE
және
COMM параметрлерінің ғана мәндері. Барлық процестерде S
OURCE
және COMM
параметрлерінің мәндері бірдей болуы керек.
Келесі схема
MPI
_
SCATTER
процедурасының іс-әрекетін кӛрсетеді.
187
Тӛменде MPI_Bcast, MPI_Gather, MPI_Scatter процедураларын
пайдаланудың Си тіліндегі нұсқалары берілген.
Достарыңызбен бөлісу: |