Алгоритмы параллельных вычислений и программирование. Бурова И.Г - 151 стр.

UptoLike

§ 3. О реализации разветвлений
на параллельной системе
В соответствии с концепцией, принятой в MPI, каждый про-
цессор обрабатывает одну и ту же программу, но поскольку его
деятельность может быть поставлена в зависимости от его номера,
то возможно делать поведение различных процессов различным и
наблюдать за их работой. Например, если после трансляции про-
граммы envelope(см. Листинг 1) получился загрузочный модуль
a.out, то после запуска последнего получим на (общем) принтере
распечатку:
0: nprocs = 3 myrank = 0
1: nprocs = 3 myrank = 1
2: nprocs = 3 myrank = 2
Листинг 2. Распечатка результатов работы параллельной програм-
мы, представленной на Листинге 1. Рассмотрим теперь несколько бо-
лее сложную программу:
1) PROGRAMM bcast
2) INCLUDE ’mpif.h’
3) INTEGER imsg(4)
4) CALL MPI_INIT(ierr)
5) CALL MPI_COMM_SIZE(MPI_COMM_WORLD,nprocs,ierr)
6) CALL MPI_COMM_RANK(MPI_COMM_WORLD,myrank,ierr)
7) IF (myrank=0) THEN
8) DO i=1,4
9) imsg(i)=i
10) END DO
11) ELSE
12) DO i=1,4
13) imsg(i)=0
14) END DO
15) ENDIF
16) PRINT *,’Before:’,imsg
17) CALL MPI_BCAST(imsg,4,MPI_GATHER,
18) $0,MPI_COMM_WORLD,ierr)
19) PRINT *,’after:’,imsg
152