ВУЗ:
Рубрика:
73
pi=3.14159265358979d0
call MPI_INIT(err)
comm=MPI_COMM_WORLD
call MPI_COMM_SIZE(comm,size,err)
call MPI_COMM_RANK(comm,rank,err)
C Количество реализаций значений последовательности
C псевдослучайных точек
n=200000000
ttime=MPI_WTIME()
C Генерация «независимой» последовательности случайных
C величин
CALL RANDOM_SEED()
in=0
s=0
do i=rank,n,size
CALL RANDOM_NUMBER(x)
x=x*pi
CALL RANDOM_NUMBER(y)
C Определение количества точек, попавших в область
C интегрирования
if (y<=dsin(x)) then
in=in+1
s=s+f(x,y)
endif
enddo
call MPI_REDUCE(in, in_total, 1, MPI_DOUBLE_PRECISION,
& MPI_SUM, 0,comm, err)
C Определяем общую сумму
call MPI_REDUCE(s, s_total, 1, MPI_double_precision,
& MPI_SUM, 0,comm, err)
C Вычисление объема V
v=pi*in_total/n
ttime=MPI_WTIME()-ttime
if(rank==0) then
int=v*s_total/in_total
write(*,*) 'Количество процессов size = ',size
write(6,*)' int = ',int,' time = ',ttime
endif
call MPI_FINALIZE(err)
Страницы
- « первая
- ‹ предыдущая
- …
- 71
- 72
- 73
- 74
- 75
- …
- следующая ›
- последняя »
