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

UptoLike

20) CALL MPI_FINALIZE(ierr)
21) END
Листинг 3. Пример программы на языке Фортран, использующей
процедуру MPI_BCAST стандарта MPI (заметим, что символ $ символ
продолжения строки программы).
В соответсвии с принятой MPI в концепцией, процессы в MPI,
вообще говоря, равноправны (нет заранее выделенного процесса):
программист вправе рассматривать любой из них основным. В про-
грамме bcast.f процесс с рангом rank=0 назовем корневым (ибо
он в определенном отношении отличается от остальных: именно в
нем будет получен окончательный результат). Корневой процесс за-
полняет целочисленный массив imsg ненулевыми значениями, в то
время как остальные процессы заполняют его нулями. Процедура
MPI_BCAST вызывается в строках 17, 18; при этом она рассылает
четыре числа из корневого процесса в другие процессы коммуни-
катора MPI_COMM_WORLD. Заметим, что роль идентификатора imsg в
корневом процессе и в некорневых различна: в корневом процессе
он используется как обозначение посылающего буфера, а в некор-
невых процессах как обозначение получающего буфера.
Результат работы только что приведенной программы будет
следующим.
0: Before: 1 2 3 4
1: Before: 0 0 0 0
2: Before: 0 0 0 0
0: after: 1 2 3 4
1: after: 1 2 3 4
2: after: 1 2 3 4
Листинг 4. Распечатка результатов работы параллельной програм-
мы, представленной на Листинге 3.
§ 4. О программировании вычислений на параллельной
системе. Процедура MPI_REDUCE
Для проведения вычислений с использованием MPI предназна-
чена процедура MPI_REDUCE. Иллюстрацией ее применения для вы-
числения суммы элементов массива a(i) служит нижеследующая
программа:
153