fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <mpi.h>
  4.  
  5. int main()
  6. {
  7. int rank, comm_sz;
  8. double vetor1[N], vetor2[N];
  9.  
  10. MPI_Init(NULL, NULL);
  11. MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  12. MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
  13.  
  14. // Tamanho do vetor e escalar
  15. int N = 100000;
  16. double a = 2.0;
  17.  
  18. //variaveis importantes
  19. int partition = (N/comm_sz)
  20. double results_local[partition], final_result;
  21.  
  22.  
  23. if (rank == 0)
  24. {
  25. // Inicializa vetores
  26. for (int i = 0; i < N; i++)
  27. {
  28. vetor1[i] = 1.0;
  29. vetor2[i] = 1.0;
  30. }
  31. }
  32.  
  33. //Transmitindo variaveis
  34. MPI_Bcast(vetor1, N, MPI_DOUBLE, 0, MPI_COMM_WORLD);
  35. MPI_Bcast(vetor2, N, MPI_DOUBLE, 0, MPI_COMM_WORLD);
  36. MPI_Bcast(&a, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
  37.  
  38.  
  39.  
  40. for (int i = rank*partition; i < (rank + 1)*partition; i++)
  41. {
  42. results_local[i] = vetor1[i] * vetor2[i];
  43. }
  44.  
  45.  
  46. // apliocando mpi reduce
  47. MPI_Reduce(results_local, final_result, N, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
  48.  
  49.  
  50.  
  51. if (rank == 0)
  52. {
  53. final_result *= a
  54. printf("Número de processadores utilizados: %d\n", comm_sz);
  55. printf("Resultado final: %.2f", final_result)
  56. }
  57.  
  58. MPI_Finalize();
  59. return 0;
  60. }
  61.  
Success #stdin #stdout #stderr 0.27s 40892KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: unexpected symbol in "int main"
Execution halted