#include #include #include #include using namespace std; int main(int argc, char *argv[]) { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); int roz = 0; double* a_pom = nullptr; double* b_pom = nullptr; double* a = nullptr; double* b = nullptr; double* c = nullptr; if (rank == 0) { roz = 4; a = new double[roz]; b = new double[roz]; c = new double[roz]; srand(time(NULL)); for (int i = 0; i < roz; i++) { a[i] = ((double)rand() / RAND_MAX) * 10 + 10; b[i] = ((double)rand() / RAND_MAX) * 100 + 100; } } MPI_Bcast(&roz, 1, MPI_INT, 0, MPI_COMM_WORLD); a_pom = new double[roz]; b_pom = new double[roz]; MPI_Scatter(a, roz, MPI_DOUBLE, a_pom, roz, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Scatter(b, roz, MPI_DOUBLE, b_pom, roz, MPI_DOUBLE, 0, MPI_COMM_WORLD); double* c_pom = new double[roz]; for (int i = 0; i < roz; i++) { c_pom[i] = a_pom[i] + b_pom[i]; } MPI_Gather(c_pom, roz, MPI_DOUBLE, c, roz, MPI_DOUBLE, 0, MPI_COMM_WORLD); if (rank == 0) { for (int i = 0; i < roz; i++) { cout << a[i] << ' ' << b[i] << ' ' << c[i] << endl; } } delete[] a; delete[] b; delete[] c; delete[] a_pom; delete[] b_pom; delete[] c_pom; MPI_Finalize(); return 0; }