From cc30d00aecf6e634d769d44781e9f456e5af525c Mon Sep 17 00:00:00 2001 From: norangebit Date: Fri, 19 Mar 2021 18:05:38 +0100 Subject: [PATCH] Uses gather --- main.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/main.c b/main.c index 881e1ff..db3f2f6 100644 --- a/main.c +++ b/main.c @@ -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; + match_numbers = (int *) malloc(sizeof(int) * size); + } - 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); - } + 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); }