Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <mpi.h>
- #define INIT_RANK int rank = 0; \
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- #define INIT_SIZE int size = 0; \
- MPI_Comm_size(MPI_COMM_WORLD, &size);
- int main(int argc, char **argv)
- {
- MPI_Init(&argc, &argv);
- INIT_RANK
- INIT_SIZE
- MPI_Status status;
- MPI_Request requestS, requestR;
- int data[4], data2[4];
- if (rank == 0)
- {
- for (int i = 0; i < 4; ++i)
- data[i] = i + 1;
- MPI_Isend(&data, 4, MPI_INT, 1, 47, MPI_COMM_WORLD, &requestS);
- MPI_Irecv(&data2, 4, MPI_INT, 1, 42, MPI_COMM_WORLD, &requestR);
- MPI_Wait(&requestR, &status);
- }
- else if (rank == 1)
- {
- for (int i = 0; i < 4; ++i)
- data2[i] = i + 100;
- MPI_Isend(&data2, 4, MPI_INT, 0, 42, MPI_COMM_WORLD, &requestS);
- MPI_Irecv(&data, 4, MPI_INT, 0, 47, MPI_COMM_WORLD, &requestR);
- MPI_Wait(&requestR, &status);
- }
- printf("I thread #%i\n", rank);
- for (int i = 0; i < 4; ++i)
- {
- printf("Data[%i] = %i\n", i, data[i]);
- }
- printf("\n");
- for (int i = 0; i < 4; ++i)
- {
- printf("Data2[%i] = %i\n", i, data2[i]);
- }
- printf("\n");
- MPI_Finalize();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement