ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
90
+ MPI_COMM_WORLD, status, ierror)
c Печатаем номер своего процесса
print *,'MyNumber: ',myrank
if (myrank .eq. size-1) then
call MPI_SEND(myrank, 1, MPI_INTEGER,0,0,
+ MPI_COMM_WORLD, ierror)
else
call MPI_SEND(myrank, 1, MPI_INTEGER,myrank+1,0,
+ MPI_COMM_WORLD, ierror)
endif
endif
call MPI_FINALIZE(ierror)
stop
end
Обмен между первым и нулевым процессами информацией.
Работа при любом количестве процессов.
С помощью блокирующих операций обмена.
Реализация “С”
#include <stdio.h>
#include "mpi.h"
int main(int argc, char *argv[])
{
int myrank;//номер процесса
int size;//объем коммуникатора
char c;//Буковка для блокирующего обмена
int TAG = 0;
MPI_Status status;
/**
* Начало и завершение:
* MPI_Init, MPI_Finalize
* Определение количества задач в приложении и своего по-
рядкового
* номера:
* MPI_Comm_size, MPI_Comm_rank
*/
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if(size<2)
{
printf("Error less than two process.\n");
MPI_Finalize();
exit(1);
}
if(myrank==0)
{
c='a';
printf("I'm %i block send %c\n",myrank,c);
1...,82,83,84,85,86,87,88,89,90,91 93,94,95,96,97,98,99,100,101,102,...180