185
Мысалы, 2-ші процестен барлық қалған процестерге 100 бүтінсанды
элементтен тұратын buf қосымша массивін жіберу үшін, барлық
процестерде келесі шақыру кездесуі керек:
call MPI_BCAST(buf, 100, MPI_INTEGER,
&
2, MPI_COMM_WORLD, ierr)
MPI_GATHER(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE,
ROOT, COMM,
IERR)
SBUF(*), RBUF(*)
INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, ROOT, COMM, IERR
сомм коммуникаторының барлық процестерінен, SBUF массивтеріндегі
STYPE
типті SCOUNT элементтерді
ROOT
процесінің RBUF буферінде жинау.
Әрбір процесс,
ROOT
процесін қоса алғанда, ӛз SBUF буферіндегі деректерді
ROOT
процесіне жібереді. Жинақтаушы процесс, деректерді процесс нӛмірінің
ӛсу реті бойынша орналастыра отырып RBUF буферінде сақтайды.
ROOT
процесінде барлық параметрлердің мәндері маңызды орын алады, ал
қалған барлық процестерде - тек SBUF, SCOUNT, STYPE,
ROOT
және comm
параметрлерінің ғана мәндері. Барлық процестерде
ROOT
және comm
параметрлерінің мәндері бірдей болуы керек.
ROOT
процесінің RCOUNT
параметрі, барлық процестен қабылданған қосынды элементтер емес, ал
әрбір процестен қабылданатын RTYPE типті элементтер санын белгілейді.
Келесі схема MPI_GATHER процедурасының іс-әрекетін кӛрсетеді.
Мысалы, 2-ші процесс барлық қалған процестерден әрқайсысы 10
бүтінсанды элементтен тұратын buf қосымша массивтерін rbuf
массивіне
жинау үшін, барлық процестерде келесі шақыру кездесуі керек:
Достарыңызбен бөлісу: