Ex. 1 master_worker solution
This commit is contained in:
parent
77d9142b6f
commit
558df9220c
32
Exercises/ex_2/ring.c
Normal file
32
Exercises/ex_2/ring.c
Normal file
@ -0,0 +1,32 @@
|
||||
#include <stdio.h>
|
||||
#include <mpi.h>
|
||||
|
||||
int main(int argc, char *argv[]) // ring
|
||||
{
|
||||
int size, rank;
|
||||
int partner_left, partner_right;
|
||||
int sum, sbuf, rbuf;
|
||||
|
||||
MPI_Init(&argc, &argv);
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &size);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||||
|
||||
partner_left = (rank - 1 + size) % size;
|
||||
partner_right = (rank + 1) % size;
|
||||
|
||||
sum = 0;
|
||||
sbuf = rank;
|
||||
|
||||
do {
|
||||
MPI_Sendrecv(&sbuf, 1, MPI_INT, partner_right, 0,
|
||||
&rbuf, 1, MPI_INT, partner_left, 0,
|
||||
MPI_COMM_WORLD, MPI_STATUS_IGNORE);
|
||||
sum += rbuf;
|
||||
sbuf = rbuf;
|
||||
} while (rbuf != rank);
|
||||
|
||||
printf("%d %d\n", rank, sum);
|
||||
|
||||
MPI_Finalize();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user