Browse Source

mpi/tests/insert_task_dyn_handles.c: set a data on node 1

Nathalie Furmento 10 years ago
parent
commit
a75bba37af
1 changed files with 15 additions and 4 deletions
  1. 15 4
      mpi/tests/insert_task_dyn_handles.c

+ 15 - 4
mpi/tests/insert_task_dyn_handles.c

@@ -19,16 +19,19 @@
 #include <starpu_config.h>
 #include "helper.h"
 
+#define FFACTOR 42
+
 void func_cpu(void *descr[], void *_args)
 {
 	int num = starpu_task_get_current()->nbuffers;
+	int *factor = (int *)STARPU_VARIABLE_GET_PTR(descr[num-1]);
 	int i;
 
-	for (i = 0; i < num; i++)
+	for (i = 0; i < num-1; i++)
 	{
 		int *x = (int *)STARPU_VARIABLE_GET_PTR(descr[i]);
 
-		*x = *x + 1;
+		*x = *x + 1**factor;
 	}
 }
 
@@ -44,6 +47,7 @@ int main(int argc, char **argv)
         int *x;
         int i, ret, loop;
 	int rank;
+	int factor=0;
 
 #ifdef STARPU_QUICK_CHECK
 	int nloops = 4;
@@ -51,6 +55,7 @@ int main(int argc, char **argv)
 	int nloops = 16;
 #endif
         starpu_data_handle_t *data_handles;
+        starpu_data_handle_t factor_handle;
 	struct starpu_data_descr *descrs;
 
 	MPI_Init(&argc, &argv);
@@ -71,17 +76,22 @@ int main(int argc, char **argv)
 		descrs[i].handle = data_handles[i];
 		descrs[i].mode = STARPU_RW;
 	}
+	if (rank == 1) factor=FFACTOR;
+	starpu_variable_data_register(&factor_handle, STARPU_MAIN_RAM, (uintptr_t)&factor, sizeof(factor));
+	starpu_mpi_data_register(factor_handle, FFACTOR, 1);
 
 	for (loop = 0; loop < nloops; loop++)
 	{
 		ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &codelet,
 					     STARPU_DATA_MODE_ARRAY, descrs, STARPU_NMAXBUFS-1,
+					     STARPU_R, factor_handle,
 					     0);
 		if (ret == -ENODEV) goto enodev;
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_task_insert");
 
 		ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &codelet,
 					     STARPU_DATA_MODE_ARRAY, descrs, STARPU_NMAXBUFS+15,
+					     STARPU_R, factor_handle,
 					     0);
 		if (ret == -ENODEV) goto enodev;
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_task_insert");
@@ -92,6 +102,7 @@ enodev:
 	{
                 starpu_data_unregister(data_handles[i]);
         }
+	starpu_data_unregister(factor_handle);
 
 	free(data_handles);
 	free(descrs);
@@ -108,7 +119,7 @@ enodev:
 	{
 		for(i=0 ; i<STARPU_NMAXBUFS-1 ; i++)
 		{
-			if (x[i] != nloops * 2)
+			if (x[i] != nloops * FFACTOR * 2)
 			{
 				FPRINTF_MPI("[end loop] value[%d] = %d != Expected value %d\n", i, x[i], nloops*2);
 				ret = 1;
@@ -116,7 +127,7 @@ enodev:
 		}
 		for(i=STARPU_NMAXBUFS-1 ; i<STARPU_NMAXBUFS+15 ; i++)
 		{
-			if (x[i] != nloops)
+			if (x[i] != nloops * FFACTOR)
 			{
 				FPRINTF_MPI("[end loop] value[%d] = %d != Expected value %d\n", i, x[i], nloops);
 				ret = 1;