ВУЗ:
Рубрика:
63
кой на процессы и большими объемами пересылаемых данных, этот
прием может оказаться весьма полезным.
Ниже представлена программа вычисления определенного инте-
грала с использованием функций неблокирующих коммуникацион-
ных операций MPI_ISEND и MPI_IRECV, а также функции ожида-
ния завершения неблокирующих операций MPI_WAIT_ALL.
Program Example3c
Implicit None
Include 'mpif.h'
Integer Size, Rank, Ierr, I, N, Status(MPI_STATUS_SIZE),
$ LStatus(0:20), MyRequest, Request(0:20)
Double Precision Sum, GSum, A, B, time1, time2, Al,
$ Bl, X, F, ASum(0:20)
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
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »
