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

UptoLike

114
integer
$ nprocs, iam, ierr, i, j,
$ m_size, first, last, comm, count1
!
double precision
$ summ, eps, max_err, max_err1,
$ time1, dr, drmax
!
parameter
$ (m_size = 5000, ! размер матрицы
$ eps = 0.000005) ! точность вычисления
!
integer
$ xcount(0:m_size), xnumer(0:m_size),
$ xcount2(0:m_size), xnumer2(0:m_size)
!
double precision
$ a(m_size, m_size+1),
$ x(m_size), xx(m_size)
!
call MPI_INIT (ierr)
call MPI_COMM_SIZE (mpi_comm_world,nprocs,ierr)
call MPI_COMM_RANK (mpi_comm_world,iam,ierr)
comm = mpi_comm_world
! «0»-процесс засекает время и вызывает подпрограмму генерации
! матрицы
if (iam.eq.0) then
time1 = mpi_wtime()
call matgen(a,m_size)
end if
! каждый процесс определяет первую и последнюю строки своей
! полосы для расчета и соответственно первую и последнюю
! координаты вектора x
first = iam*m_size/nprocs+1
last = (iam+1)*m_size/nprocs
! каждый процесc определяет свои массивы размера полоc и их
! положение