Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. 2.)Napišite program u kojem će se omogućiti učitavanje cjelobrojnog vektora proizvoljne veličine i jednog decimalnog broja,
  2. nakon toga paralelnog pomnožiti taj vektor s decimalnim brojem i naposljetku ispisati rezultantni vektor i prosječnu vrijednost njegovih elemenata.
  3.  
  4.  
  5.  
  6. #include <iostream>
  7. #include <cstdlib>
  8. #include<ctime>
  9. #include <mpi.h>
  10.  
  11.  
  12.  
  13. using namespace std;
  14.  
  15. int main()
  16. {
  17. int brojElemenata = 12;
  18. float arr[brojElemenata];
  19. int rank;
  20. int i;
  21. float sum[3];
  22. float globalSum;
  23.  
  24. srand(time(NULL));
  25.  
  26. MPI::Init();
  27. rank = MPI::COMM_WORLD.Get_rank();
  28. if (rank ==0)
  29. {
  30. for (i = 0; i < brojElemenata; i++)
  31. {
  32. arr[i] = (float)(rand() % 100 + 1);
  33. cout << arr[i] << "\t";
  34. }
  35. cout << endl;
  36. }
  37.  
  38. MPI::COMM_WORLD.Scatter(arr, 3, MPI::FLOAT, arr, 3, MPI::FLOAT, 0);
  39. for (i = 0; i < 3; i++)
  40. {
  41. arr[i] *= 5.50;
  42. }
  43.  
  44. MPI::COMM_WORLD.Gather(arr, 3, MPI::FLOAT, arr, 3, MPI::FLOAT, 0);
  45. MPI::COMM_WORLD.Reduce(&arr, &sum, 3, MPI::FLOAT, MPI::SUM, 0);
  46.  
  47. if (rank == 0)
  48. {
  49. globalSum = sum[0];
  50. for( i = 1; i < 3; i++)
  51. {
  52. globalSum += sum[i];
  53. }
  54. cout << "\nRezultantni vektor: " << endl;
  55. for (i = 0; i < brojElemenata; i++)
  56. {
  57. cout << arr[i] << "\t";
  58. }
  59. cout << endl;
  60. cout << "Prosjecna vrijednost: " << globalSum / brojElemenata << endl;
  61. }
  62. MPI::Finalize();
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement