ВУЗ:
Рубрика:
66
C «0»-процесс получает результат суммирования частичных
C сумм
Call MPI_REDUCE(Sum, GSum, 1,
$ MPI_DOUBLE_PRECISION, MPI_SUM,
$ 0, MPI_COMM_WORLD, Ierr)
If (Rank.eq.0) Then
time2 = MPI_WTime()
GSum = GSum/(N*Size)
Write (6,*) 'Result=',GSum,' Error=',1-GSum,
$ ' Time=',time2 - time1
End If
Call MPI_FINALIZE(Ierr)
Stop
End
Если имеется необходимость получить результат глобальной ре-
дукции всеми процессами (например, в том случае, если это значе-
ние предполагается применить в дальнейших расчетах), следует
использовать функцию MPI_ALLREDUCE:
Call MPI_ALLREDUCE(Sum, GSum, 1,
$ MPI_DOUBLE_PRECISION, MPI_SUM,
$ MPI_COMM_WORLD, Ierr)
Как можно заметить, при обращении к функции коллективной
редукции опущен идентификатор номера процесса-получателя.
В программе вычисления определенного интеграла Example3e
используется функция MPI_GATHER, которая производит сборку
значений переменной Sum, посылаемых всеми процессами в массив
Buffer «0»-процесса. После получения данных «0»-процесс произ-
водит суммирование компонент массива и рассылает результат всем
остальным процессам при помощи функции рассылки MPI_BCAST.
Program Example3e
Implicit None
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »
