ВУЗ:
Рубрика:
116
end do
! вычисление значения максимальной ошибки для всей системы
call MPI_ALLREDUCE (max_err, max_err1, 1,
$ mpi_double_precision, mpi_max, comm, ierr)
! рассылка и получение новых значений вектора x
call MPI_ALLTOALLV
$ (xx(1), xcount2, xnumer2, mpi_double_precision,
$ x(1), xcount, xnumer, mpi_double_precision, comm, ierr)
! вычисление значения максимальной невязки drmax всеми
! процессами в своей полосе
dr=0d0
do i=first, last
summ=a(i,m_size+1)
do j=1, m_size
summ=summ-a(i,j)*x(j)
end do
dr=dmax1(dabs(summ),dr)
end do
! вычисление значения максимальной невязки для всей системы
call MPI_ALLREDUCE (dr, drmax, 1,
$ mpi_double_precision, mpi_max, comm, ierr)
! счетчик итераций
count1=count1+1
! ограничение на количество итераций
if (count1.gt.300) goto 11
end do
! «0»-процесс производит выдачу результатов в файл res.dat
if (iam.eq.0) then
time1=MPI_WTIME()-time1
open (16, file='res.dat')
write (16,*) 'Vector x ', 'Absolute error '
do i=1,m_size
summ=0.0
do j=1,m_size
summ=summ+x(j)*a(i,j)
Страницы
- « первая
- ‹ предыдущая
- …
- 114
- 115
- 116
- 117
- 118
- …
- следующая ›
- последняя »
