Skip to content

Commit

Permalink
fix: fix a collective call to MPI_Win_create
Browse files Browse the repository at this point in the history
It looks like all processes need to hold a valid memory reference...
  • Loading branch information
inaki-amatria committed Dec 9, 2024
1 parent b277d16 commit 19a0b3a
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 31 deletions.
20 changes: 5 additions & 15 deletions src/db_construction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,25 +83,15 @@ void DbConstruction::Run(const DbConstructionParameters &parameters) {
}

void DbConstruction::SetupMPI(MPI_Win *win, int **win_data) {
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 0) {
MPI_Alloc_mem(sizeof(int), MPI_INFO_NULL, win_data);
(*win_data)[0] = 0;
} else {
*win_data = NULL;
}
MPI_Win_create(*win_data, rank == 0 ? sizeof(int) : 0, sizeof(int),
MPI_INFO_NULL, MPI_COMM_WORLD, win);
MPI_Alloc_mem(sizeof(int), MPI_INFO_NULL, win_data);
(*win_data)[0] = 0;
MPI_Win_create(*win_data, sizeof(int), sizeof(int), MPI_INFO_NULL,
MPI_COMM_WORLD, win);
}

void DbConstruction::FinalizeMPI(MPI_Win *win, int **win_data) {
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Win_free(win);
if (rank == 0) {
MPI_Free_mem(*win_data);
}
MPI_Free_mem(*win_data);
}

void DbConstruction::BuildPaginatedSuffixHash(
Expand Down
22 changes: 6 additions & 16 deletions src/rna_interaction_search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,26 +92,16 @@ void RnaInteractionSearch::Run(
}

void RnaInteractionSearch::SetupMPI(MPI_Win *win, int **win_data) {
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 0) {
MPI_Alloc_mem(2 * sizeof(int), MPI_INFO_NULL, win_data);
(*win_data)[0] = -1;
(*win_data)[1] = 0;
} else {
*win_data = NULL;
}
MPI_Win_create(*win_data, rank == 0 ? 2 * sizeof(int) : 0, sizeof(int),
MPI_INFO_NULL, MPI_COMM_WORLD, win);
MPI_Alloc_mem(2 * sizeof(int), MPI_INFO_NULL, win_data);
(*win_data)[0] = -1;
(*win_data)[1] = 0;
MPI_Win_create(*win_data, 2 * sizeof(int), sizeof(int), MPI_INFO_NULL,
MPI_COMM_WORLD, win);
}

void RnaInteractionSearch::FinalizeMPI(MPI_Win *win, int **win_data) {
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Win_free(win);
if (rank == 0) {
MPI_Free_mem(*win_data);
}
MPI_Free_mem(*win_data);
}

void RnaInteractionSearch::ReadFastaFile(
Expand Down

0 comments on commit 19a0b3a

Please sign in to comment.