superjorj

L9 alpd

Dec 9th, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. /*
  2. * main.c
  3. *
  4. * Created on: Dec 9, 2015
  5. * Author: student
  6. */
  7.  
  8. #include "mpi.h"
  9. #include <stdio.h>
  10. #include <string.h>
  11.  
  12. int main(int argc, char *argv[])
  13. {
  14. int my_rank;
  15. int count;
  16. MPI_Status status;
  17. MPI_Comm cart;
  18. int n =4;
  19. int dim[2] = {n,n};
  20. int perioade[2] = {1,1};
  21. int coord[2];
  22. int sus,jos,stanga,dreapta;
  23. int m1, m2,m3;
  24. int a[4][4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
  25. int b[4][4] ={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};
  26. int c[4][4];
  27. int k;
  28. MPI_Init(&argc, &argv);
  29. MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
  30. MPI_Comm_size(MPI_COMM_WORLD, &count);
  31. MPI_Cart_create(MPI_COMM_WORLD, 2, dim, perioade, 0, &cart);
  32. MPI_Cart_coords(cart, my_rank, 2, coord);
  33. MPI_Cart_shift(cart, 0, 1, &sus, &jos);
  34. MPI_Cart_shift(cart, 1, 1, &stanga, &dreapta);
  35.  
  36. m1= a[coord[0]][coord[1]];
  37. m2= b[coord[0]][coord[1]];
  38.  
  39. for(k=1;k<=coord[0];k++)
  40. {
  41. MPI_Send(&m1, 1, MPI_INT, stanga, 99, cart);
  42. MPI_Recv(&m1, 1, MPI_INT, dreapta, 99, cart, &status);
  43. }
  44. for(k=1;k<=coord[1];k++)
  45. {
  46. MPI_Send(&m2, 1, MPI_INT, sus, 99, cart);
  47. MPI_Recv(&m2, 1, MPI_INT, jos, 99, cart, &status);
  48. }
  49.  
  50. m3=0;
  51. for(k=0;k<n - 1 ; k++){
  52. m3+= (m1*m2);
  53. MPI_Send(&m1, 1, MPI_INT, stanga, 99, cart);
  54. MPI_Recv(&m1, 1, MPI_INT, dreapta, 99, cart, &status);
  55. MPI_Send(&m2, 1, MPI_INT, sus, 99, cart);
  56. MPI_Recv(&m2, 1, MPI_INT, jos, 99, cart, &status);
  57. }
  58.  
  59. c[coord[0]][coord[1]] = m3 + (m1*m2);
  60. printf("c[%d][%d] = %d\n",coord[0],coord[1],c[coord[0]][coord[1]] );
  61. MPI_Comm_free(&cart);
  62.  
  63. MPI_Finalize();
  64.  
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment