Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<mpi.h>
  3. #include<time.h>
  4.  
  5. int main(){
  6. int path[6][6] = { {0,2,5,9999,9999,9999},
  7. {9999,0,7,1,9999,8},
  8. {9999,9999,0,4,9999,9999},
  9. {9999,9999,9999,0,3,9999},
  10. {9999,9999,2,9999,0,3},
  11. {9999,5,9999,2,4,0} };
  12. double start,end;
  13. start = clock();
  14. MPI_Init(NULL,NULL);
  15. int size;
  16. int rank;
  17. MPI_Comm_rank(MPI_COMM_WORLD,&rank);
  18. MPI_Comm_size(MPI_COMM_WORLD,&size);
  19. for(int k=0;k<6;k++){
  20. if(rank!=0){
  21. MPI_Recv(path,36,MPI_INT,rank-1,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
  22. }
  23. for(int i=0;i<6;i++){
  24. for(int j=0;j<6;j++){
  25. int temPath = path[i][k] + path[k][j];
  26. path[i][j] = (path[i][j]<temPath) ? path[i][j] : temPath;
  27. }
  28. }
  29. MPI_Send(path,36,MPI_INT,(rank+1)%size,0,MPI_COMM_WORLD);
  30. if(rank==0){
  31. MPI_Recv(path,36,MPI_INT,size-1,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
  32. }
  33. }
  34. if(rank==0){
  35. end = clock();
  36. for(int i=0;i<6;i++){
  37. for(int j=0;j<6;j++){
  38. printf("%6d\n",path[i][j]);
  39. }
  40. printf("%.61f ms",((double) (end-start)/CLOCKS_PER_SEC));
  41. }
  42. MPI_Finalize();
  43. }
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement