You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
892 B
C
31 lines
892 B
C
9 months ago
|
#include <stdio.h>
|
||
|
#include <mpi.h>
|
||
|
|
||
|
int main(int argc, char **argv) {
|
||
|
int a, b;
|
||
|
int size, rank;
|
||
|
int tag = 0;
|
||
|
MPI_Status status;
|
||
|
MPI_Request send_request, recv_request;
|
||
|
MPI_Init(&argc, &argv);
|
||
|
MPI_Comm_size(MPI_COMM_WORLD, &size);
|
||
|
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||
|
if (rank == 0) {
|
||
|
a = 314159;
|
||
|
MPI_Isend(&a, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &send_request);
|
||
|
MPI_Irecv (&b, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &recv_request);
|
||
|
MPI_Wait(&send_request, &status);
|
||
|
MPI_Wait(&recv_request, &status);
|
||
|
printf ("Process %d received value %d\n", rank, b);
|
||
|
} else {
|
||
|
a = 667;
|
||
|
MPI_Isend (&a, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &send_request);
|
||
|
MPI_Irecv (&b, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &recv_request);
|
||
|
MPI_Wait(&send_request, &status);
|
||
|
MPI_Wait(&recv_request, &status);
|
||
|
printf ("Process %d received value %d\n", rank, b);
|
||
|
}
|
||
|
MPI_Finalize();
|
||
|
return 0;
|
||
|
}
|