From ada0ee47b632c4414c788e3bf4b6f491c00d2866 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 25 Jul 2024 15:55:53 +0200 Subject: [PATCH] STARPU_MPI_PER_NODE: Check coherency of parameters. Fixes #51 --- mpi/src/starpu_mpi_select_node.c | 4 ++++ mpi/src/starpu_mpi_task_insert.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/mpi/src/starpu_mpi_select_node.c b/mpi/src/starpu_mpi_select_node.c index 1def3ada17..ae35c7956d 100644 --- a/mpi/src/starpu_mpi_select_node.c +++ b/mpi/src/starpu_mpi_select_node.c @@ -90,6 +90,10 @@ int _starpu_mpi_select_node_with_most_data(int me, int nb_nodes, struct starpu_d int rank = starpu_data_get_rank(data); size_t size = data->ops->get_size(data); + if (rank == STARPU_MPI_PER_NODE) + /* Each of them has it */ + continue; + if (mode & STARPU_R) size_on_nodes[rank] += size; diff --git a/mpi/src/starpu_mpi_task_insert.c b/mpi/src/starpu_mpi_task_insert.c index df298eeec5..ba822e707f 100644 --- a/mpi/src/starpu_mpi_task_insert.c +++ b/mpi/src/starpu_mpi_task_insert.c @@ -107,6 +107,10 @@ int _starpu_mpi_find_executee_node(starpu_data_handle_t data, enum starpu_data_a { _STARPU_MPI_DEBUG(100, "Another node %d had already been selected to execute the codelet, can't now set %d\n", *xrank, mpi_rank); *inconsistent_execute = 1; + if (*xrank == STARPU_MPI_PER_NODE) + _STARPU_ERROR("Data %p has rank %d but we had STARPU_MPI_PER_NODE data before that", data, mpi_rank); + else if (mpi_rank == STARPU_MPI_PER_NODE) + _STARPU_ERROR("Data %p has rank STARPU_MPI_PER_NODE but we had non-STARPU_MPI_PER_NODE data before that (rank %d)", data, *xrank); } } _STARPU_MPI_DEBUG(100, "Executing: inconsistent=%d, do_execute=%d, xrank=%d\n", *inconsistent_execute, *do_execute, *xrank);