Контрольная работа: Паралельні обчислення з використанням MPI

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&size);

MPI_Comm_rank(MPI_COMM_WORLD,&myrank);

if (myrank == 0) // призначимо один процес головним

{

puts("Running procs forwards"); fflush(stdout); // негайний вивід повідомлення

x=1;

while (x < size)

{

MPI_Ssend(&x, 1, MPI_INT, x, TAG_SEND_FWD, MPI_COMM_WORLD);

MPI_Recv (&k, 1, MPI_INT, x, TAG_REPLY, MPI_COMM_WORLD, &status);

printf("Reply from proc %d received %d\n",x,k); fflush(stdout);

x++;

}

puts("Running procs backwards"); fflush(stdout);

x=size-1;

while (x >0)

{

MPI_Send(&x,1, MPI_INT, x, TAG_SEND_BACK, MPI_COMM_WORLD);

x--;

}

else // інші процеси - підлеглі

{

MPI_Recv(&k, 1, MPI_INT, 0, TAG_SEND_FWD, MPI_COMM_WORLD, &status);

printf("Proc %d received %d\n",myrank,k); fflush(stdout);

MPI_Ssend(&k,1, MPI_INT, 0, TAG_REPLY, MPI_COMM_WORLD);

MPI_Recv(&k, 1, MPI_INT, 0, TAG_SEND_BACK, MPI_COMM_WORLD, &status);

printf("Proc %d Received %d\n",myrank,k); fflush(stdout);

}

К-во Просмотров: 408
Бесплатно скачать Контрольная работа: Паралельні обчислення з використанням MPI