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

UptoLike

56
отобразить информацию на терминальном экране лишь при полном
окончании выполнения программы на «0»-процессе. Если же что-
нибудь необходимо отобразить еще в ходе выполнения программы,
то следует переслать эту информацию «0»-процессу и поручить ему
вывести ее на экран (использование такого принципа можно найти в
следующем примере).
3.6.2 Коммуникационные операции между двумя процессами
Program Example2
Implicit None
Include 'mpif.h'
Integer Rank, Size, Ierr, I, IRank, Status(MPI_STATUS_SIZE)
Call MPI_INIT(Ierr)
Call MPI_COMM_SIZE(MPI_COMM_WORLD, Size, Ierr)
Call MPI_COMM_RANK(MPI_COMM_WORLD, Rank, Ierr)
If (Rank.eq.0) Then
C Эти операторы выполняет «0»-процесс (он принимает)...
Do I = 1,Size-1
Call MPI_RECV(IRank, 1, MPI_INTEGER, I, 0,
$ MPI_COMM_WORLD,Status, Ierr)
Write(6,*) 'Process',IRank,' of',Size,' is ready to work.'
End Do
Write(6,*) 'Process',Rank,' have finished receiving now.'
Else
C ... а все остальные процессы отправляют
Call MPI_SEND(Rank, 1, MPI_INTEGER, 0, 0,
$ MPI_COMM_WORLD,Ierr)
End If
Call MPI_FINALIZE(Ierr)
Stop
End
Данный пример реализует простейшие коммуникационные опе-
рации типа «точка-точка» блокирующие функции передачи и