Высокопроизводительные вычисления на кластерах. Беликов Д.А - 77 стр.

UptoLike

77
C Результаты суммирования частичных сумм посылаются на
C «0» - процесс
if(size==1) then
gsum=s
else
call mpi_reduce(S, Gsum, 1, mpi_double_precision,
$ mpi_sum, 0, mpi_comm_world, ierr)
end if
time=mpi_wtime()-time
if(rank.eq.0) then
write(6,*) 'Количество ПЭ size = ',size
write(6,*)' integral =',gsum
write(6,*)'time = ',time
end if
Call MPI_FINALIZE(Ierr)
Stop
End
Double precision function f(x, y)
C Подынтегральная функция
Implicit none
Double precision x,y
f=3*y*y*dsin(x)**2
return
end
Subroutine integral(c, d, x, eps, s)
C Вычисление с точностью eps однократного интеграла по y
C методом трапеций
Implicit none
Double precision c, d, s, sum1, sum2, h, f, x, eps
Integer i, N
Sum1=(f(x,c)+f(x,d))*0.5*(d-c)
Sum2=0.5*Sum1+0.5*(d-c)*f(x,0.5*(c+d))