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

UptoLike

185
PROGRAM Example1
c Решение двумерного уравнения теплопроводности в
c единичном квадрате с использованием явной разностной
c схемы. 1d-декомпозиция
Implicit none
Include 'mpif.h'
c Параметры:
c Nx,Ny - количество точек области в каждом направлении,
c m - количество точек на процессор
c T,Tnew - численное решение задачи
Integer i, j, Ny, Nx, m
Integer comm, ierr, size, rank, left, right, tag, status(100)
Parameter (Nx=720, Ny=Nx)
Double precision ap, ae, aw, an, as, hx, hy, Lx, Ly, Tpas(Nx,Ny),
1 T(0:Nx+1,0:Ny+1), Tnew(0:Nx+1,0:Ny+1), alfa,
2 tau, time, timefin, timeStart, timeStop,
3 timeStart1, timeStop1
Parameter (timefin=1.0d3, Lx=1.0d0, Ly=1.0d0,
1 hx=Lx/(Nx+1), hy=Ly/(Ny+1), alfa=1.0d-5)
c Инициализация, определение числа выделенных процессоров
c (size) и номера текущего процесса (rank)
Call MPI_INIT(ierr)
Call MPI_comm_size(mpi_comm_world, size, ierr)
Call MPI_comm_rank(mpi_comm_world, rank, ierr)
comm = mpi_comm_world
c Определение номеров процессоров (соседей) сверху и снизу.
c Если таковые отсутствуют, то им присваивается значение
c MPI_PROC_NULL (для них коммуникационные операции
c игнорируются)
If (rank.eq.0) then
Left=MPI_PROC_NULL
Else
Left=rank-1
End if
If (rank.eq.size-1) then
right=MPI_PROC_NULL
Else
right=rank+1
End if