#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
int main(int argc, char ** argv){
int rank, size;
int *result;
int el_a, el_b, el_result;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
result
=calloc(size
, sizeof(int)); int *vector_a, *vector_b;
vector_a
= calloc(size
, sizeof(int)); vector_b
= calloc(size
, sizeof(int)); if(rank==0){
printf("Podaj parametry pierwszego wektora: \n"); for(int i=0; i<size; i++){
scanf("%d", &vector_a
[i
]); }
printf("Podaj parametry drugiego wektora: \n"); for(int i=0; i<size; i++){
scanf("%d", &vector_b
[i
]); }
}
MPI_Barrier(MPI_COMM_WORLD);
MPI_Scatter(vector_a, 1, MPI_INT, &el_a, 1, MPI_INT, 0, MPI_COMM_WORLD);
MPI_Scatter(vector_b, 1, MPI_INT, &el_b, 1, MPI_INT, 0, MPI_COMM_WORLD);
el_result=el_a*el_b;
MPI_Gather(&el_result, 1, MPI_INT, result, 1, MPI_INT, 0, MPI_COMM_WORLD);
if(rank==0){
printf("Wektor wynkowy to:\n["); for(int i=0; i<size; i++){
if(i!=size-1){
}
}
}
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1waS5oPgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKiBhcmd2KXsKIGludCByYW5rLCBzaXplOwogaW50ICpyZXN1bHQ7CiBpbnQgZWxfYSwgZWxfYiwgZWxfcmVzdWx0OwogTVBJX0luaXQoJmFyZ2MsICZhcmd2KTsKIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZyYW5rKTsKIE1QSV9Db21tX3NpemUoTVBJX0NPTU1fV09STEQsICZzaXplKTsKIHJlc3VsdD1jYWxsb2Moc2l6ZSwgc2l6ZW9mKGludCkpOwogaW50ICp2ZWN0b3JfYSwgKnZlY3Rvcl9iOwogdmVjdG9yX2EgPSBjYWxsb2Moc2l6ZSwgc2l6ZW9mKGludCkpOwogdmVjdG9yX2IgPSBjYWxsb2Moc2l6ZSwgc2l6ZW9mKGludCkpOwogaWYocmFuaz09MCl7CiBwcmludGYoIlBvZGFqIHBhcmFtZXRyeSBwaWVyd3N6ZWdvIHdla3RvcmE6IFxuIik7CiBmb3IoaW50IGk9MDsgaTxzaXplOyBpKyspewogc2NhbmYoIiVkIiwgJnZlY3Rvcl9hW2ldKTsKIH0KIHByaW50ZigiUG9kYWogcGFyYW1ldHJ5IGRydWdpZWdvIHdla3RvcmE6IFxuIik7CiBmb3IoaW50IGk9MDsgaTxzaXplOyBpKyspewogc2NhbmYoIiVkIiwgJnZlY3Rvcl9iW2ldKTsKIH0KIH0KIE1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKIE1QSV9TY2F0dGVyKHZlY3Rvcl9hLCAxLCBNUElfSU5ULCAmZWxfYSwgMSwgTVBJX0lOVCwgMCwgTVBJX0NPTU1fV09STEQpOwogTVBJX1NjYXR0ZXIodmVjdG9yX2IsIDEsIE1QSV9JTlQsICZlbF9iLCAxLCBNUElfSU5ULCAwLCBNUElfQ09NTV9XT1JMRCk7CiBlbF9yZXN1bHQ9ZWxfYSplbF9iOwogTVBJX0dhdGhlcigmZWxfcmVzdWx0LCAxLCBNUElfSU5ULCByZXN1bHQsIDEsIE1QSV9JTlQsIDAsIE1QSV9DT01NX1dPUkxEKTsKIGlmKHJhbms9PTApewogcHJpbnRmKCJXZWt0b3Igd3lua293eSB0bzpcblsiKTsKIGZvcihpbnQgaT0wOyBpPHNpemU7IGkrKyl7CiBwcmludGYoIiAlZCIsIHJlc3VsdFtpXSk7CiBpZihpIT1zaXplLTEpewogcHJpbnRmKCIsICIpOwogfQogfQogcHJpbnRmKCIgXVxuIik7CiB9CiBNUElfRmluYWxpemUoKTsKIHJldHVybiAwOwp9