Uses gather

This commit is contained in:
Raffaele Mignone 2021-03-19 18:05:38 +01:00
parent 451d04cccf
commit cc30d00aec
Signed by: norangebit
GPG Key ID: F5255658CB220573

13
main.c
View File

@ -17,6 +17,7 @@ int sum_array(int *, int);
int main() {
int rank, size, private_text_len, text_len, pattern_len;
int *text_piece;
int *match_numbers;
int *displacements;
int remain;
char *pattern, *text;
@ -90,15 +91,12 @@ int main() {
printf("%d -> result number: %d\n", rank, match_number);
if (rank == MASTER) {
int match_numbers[size];
match_numbers[MASTER] = match_number;
for (int i = 0; i < size; ++i) {
if (i == MASTER) continue;
MPI_Recv(match_numbers + i, 1, MPI_INT, i, DEFAULT_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
match_numbers = (int *) malloc(sizeof(int) * size);
}
MPI_Gather(&match_number, 1, MPI_INT, match_numbers, 1, MPI_INT, MASTER, MPI_COMM_WORLD);
if (rank == MASTER) {
match_number = sum_array(match_numbers, size);
matches = (int *) realloc(matches, sizeof(int) * match_number);
@ -113,7 +111,6 @@ int main() {
offset += match_numbers[i];
}
} else {
MPI_Send(&match_number, 1, MPI_INT, MASTER, DEFAULT_TAG, MPI_COMM_WORLD);
MPI_Send(matches, match_number, MPI_INT, MASTER, DEFAULT_TAG, MPI_COMM_WORLD);
}