Added send,receive functions
parent
22cd83bfe6
commit
1cf9ecdc51
@ -1,11 +1,13 @@
|
|||||||
MPICC = mpicc
|
MPICC = mpicc
|
||||||
CFLAGS += -g
|
CFLAGS += -g
|
||||||
all: example example2 easysendrecv
|
all: example example2 easysendrecv nonblockingsendrecv
|
||||||
example: example.c
|
example: example.c
|
||||||
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
example2: example2.c
|
example2: example2.c
|
||||||
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
easysendrecv: easysendrecv.c
|
easysendrecv: easysendrecv.c
|
||||||
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
|
nonblockingsendrecv: nonblockingsendrecv.c
|
||||||
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
clean:
|
clean:
|
||||||
rm -f example example2
|
rm -f example example2
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
#include "mpi.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
int a, b, size, rank, 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;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue