ВУЗ:
Рубрика:
91
c Каждый процесс определяет первый и последний столбец
c своих расчетов
BCol = Rank*Nm/Size+1
ECol = (Rank+1)*Nm/Size
c «0»-процесс рассылает всем матрицы А и В
Call MPI_BCAST(A(1,1), Nm*Nm,
$ MPI_DOUBLE_PRECISION, 0,
$ MPI_COMM_WORLD, Ierr)
Call MPI_BCAST(B(1,1), Nm*Nm,
$ MPI_DOUBLE_PRECISION, 0,
$ MPI_COMM_WORLD, Ierr)
c Каждый процесс ведет расчет свой полосы матрицы С
Do J = BCol, ECol
Do K = 1,Nm
Do I = 1,Nm
C(I,J) = C(I,J)+A(I,K)*B(K,J)
End Do
End Do
End Do
c Каждый процесс производит рассылку своей полосы
c остальным процессам
Do K = 0,Size-1
c Nr – ширина полосы К-го процесса
Nr = (K+1)*Nm/Size-K*Nm/Size
Call MPI_BCAST(C(1,K*Nm/Size+1), Nm*Nr,
$ MPI_DOUBLE_PRECISION,K,
$ MPI_COMM_WORLD, Ierr)
End Do
if (Rank.eq.0) write(6,*) "A=",A
if (Rank.eq.0) write(6,*) "B=",B
if (Rank.eq.0) write(6,*) "C=",C
Call MPI_FINALIZE(Ierr)
Stop
End
Страницы
- « первая
- ‹ предыдущая
- …
- 89
- 90
- 91
- 92
- 93
- …
- следующая ›
- последняя »
