Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <mpi.h>
  3.  
  4. #define INIT_RANK int rank = 0; \
  5. MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  6.  
  7. #define INIT_SIZE int size = 0; \
  8. MPI_Comm_size(MPI_COMM_WORLD, &size);
  9.  
  10. int main(int argc, char **argv)
  11. {
  12. MPI_Init(&argc, &argv);
  13. INIT_RANK
  14. INIT_SIZE
  15.  
  16. MPI_Status status;
  17. MPI_Request requestS, requestR;
  18.  
  19. int data[4], data2[4];
  20.  
  21. if (rank == 0)
  22. {
  23. for (int i = 0; i < 4; ++i)
  24. data[i] = i + 1;
  25. MPI_Isend(&data, 4, MPI_INT, 1, 47, MPI_COMM_WORLD, &requestS);
  26. MPI_Irecv(&data2, 4, MPI_INT, 1, 42, MPI_COMM_WORLD, &requestR);
  27.  
  28. MPI_Wait(&requestR, &status);
  29. }
  30. else if (rank == 1)
  31. {
  32. for (int i = 0; i < 4; ++i)
  33. data2[i] = i + 100;
  34. MPI_Isend(&data2, 4, MPI_INT, 0, 42, MPI_COMM_WORLD, &requestS);
  35. MPI_Irecv(&data, 4, MPI_INT, 0, 47, MPI_COMM_WORLD, &requestR);
  36.  
  37. MPI_Wait(&requestR, &status);
  38. }
  39.  
  40. printf("I thread #%i\n", rank);
  41. for (int i = 0; i < 4; ++i)
  42. {
  43. printf("Data[%i] = %i\n", i, data[i]);
  44. }
  45.  
  46. printf("\n");
  47.  
  48. for (int i = 0; i < 4; ++i)
  49. {
  50. printf("Data2[%i] = %i\n", i, data2[i]);
  51. }
  52.  
  53. printf("\n");
  54.  
  55. MPI_Finalize();
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement