Browse Source

Make sure that per-node execution only has per-node data

Samuel Thibault 7 years ago
parent
commit
449e099c86
1 changed files with 4 additions and 0 deletions
  1. 4 0
      mpi/src/starpu_mpi_task_insert.c

+ 4 - 0
mpi/src/starpu_mpi_task_insert.c

@@ -96,6 +96,10 @@ int _starpu_mpi_find_executee_node(starpu_data_handle_t data, enum starpu_data_a
 
 
 void _starpu_mpi_exchange_data_before_execution(starpu_data_handle_t data, enum starpu_data_access_mode mode, int me, int xrank, int do_execute, int prio, MPI_Comm comm)
 void _starpu_mpi_exchange_data_before_execution(starpu_data_handle_t data, enum starpu_data_access_mode mode, int me, int xrank, int do_execute, int prio, MPI_Comm comm)
 {
 {
+	if (data && xrank == STARPU_MPI_PER_NODE)
+	{
+		STARPU_ASSERT_MSG(starpu_mpi_data_get_rank(data) == STARPU_MPI_PER_NODE, "If task is replicated, it has to access only per-node data");
+	}
 	if (data && mode & STARPU_R)
 	if (data && mode & STARPU_R)
 	{
 	{
 		int mpi_rank = starpu_mpi_data_get_rank(data);
 		int mpi_rank = starpu_mpi_data_get_rank(data);