Browse Source

Make broadcast test send data twice, to check that values don't intermix

Samuel Thibault 7 years ago
parent
commit
942fb34a68
1 changed files with 26 additions and 6 deletions
  1. 26 6
      mpi/tests/broadcast.c

+ 26 - 6
mpi/tests/broadcast.c

@@ -18,11 +18,13 @@
 #include <starpu_mpi.h>
 #include "helper.h"
 
-void wait_CPU(void *descr[], void *_args)
+void wait_CPU(void *descr[], void *args)
 {
-	(void)_args;
 	int *var = (int*) STARPU_VARIABLE_GET_PTR(descr[0]);
-	*var = 42;
+	int val;
+
+	starpu_codelet_unpack_args(args, &val);
+	*var = val;
 	starpu_sleep(1);
 }
 
@@ -57,9 +59,20 @@ int main(int argc, char **argv)
 
 	if (rank == 0)
 	{
-		starpu_task_insert(&cl, STARPU_W, handle, 0);
+		int val, n;
+
+		val = 42;
+		starpu_task_insert(&cl, STARPU_W, handle, STARPU_VALUE, &val, sizeof(val), 0);
+
+		for(n = 1 ; n < size ; n++)
+		{
+			FPRINTF_MPI(stderr, "sending data to %d\n", n);
+			starpu_mpi_isend_detached(handle, n, 0, MPI_COMM_WORLD, NULL, NULL);
+		}
+
+		val = 43;
+		starpu_task_insert(&cl, STARPU_W, handle, STARPU_VALUE, &val, sizeof(val), 0);
 
-		int n;
 		for(n = 1 ; n < size ; n++)
 		{
 			FPRINTF_MPI(stderr, "sending data to %d\n", n);
@@ -69,11 +82,18 @@ int main(int argc, char **argv)
 	else
 	{
 		starpu_mpi_recv(handle, 0, 0, MPI_COMM_WORLD, &status);
+		starpu_data_acquire(handle, STARPU_R);
+		STARPU_ASSERT(var == 42);
+		starpu_data_release(handle);
+
+		starpu_mpi_recv(handle, 0, 0, MPI_COMM_WORLD, &status);
+		starpu_data_acquire(handle, STARPU_R);
+		STARPU_ASSERT(var == 43);
+		starpu_data_release(handle);
 		FPRINTF_MPI(stderr, "received data\n");
 	}
 
 	starpu_data_unregister(handle);
-	STARPU_ASSERT(var == 42);
 
 	starpu_mpi_shutdown();
 	starpu_shutdown();