ВУЗ:
Рубрика:
65
стью данного типа операций является то, что они имеют достаточно
простой и понятный синтаксис.
В приведенной ниже программе вычисления определенного ин-
теграла используется глобальная операция редукции с сохранением
результата в адресном пространстве «0»-процесса. Значения пере-
менных Sum пересылаются на «0»-процесс и складываются с сохра-
нением значения результата в переменной GSum. Весь этот процесс
выполняется вызовом всего одного оператора Call MPI_REDUCE.
Program Example3d
Implicit None
Include 'mpif.h'
Integer Size, Rank, Ierr, I, N
Double Precision Sum, GSum, A, B, time1, time2, Al, Bl, X, F
C Пределы интегрирования
Parameter (A=0.d0, B=1.d0)
C Подынтегральная функция
F(x)=DLog(1/x)
Call MPI_INIT(Ierr)
Call MPI_COMM_SIZE(MPI_COMM_WORLD, Size, Ierr)
Call MPI_COMM_RANK(MPI_COMM_WORLD, Rank, Ierr)
C «0»-процесс засекает время
If (Rank.eq.0) time1 = MPI_WTime()
C Каждый процесс определяет свои пределы интегрирования
C и число интервалов разбиения
Al = A+(B-A)*Rank/Size
Bl = Al+(B-A)/Size
N = 1000000
C Каждый процесс определяет свою частичную сумму
Sum = 0
Do I = 1,N
X = Al+(Bl-Al)*(I-0.5d0)/N
Sum = Sum + F(X)
End Do
Страницы
- « первая
- ‹ предыдущая
- …
- 63
- 64
- 65
- 66
- 67
- …
- следующая ›
- последняя »
