Browse Source

mpi/tests/insert_task_compute.c: add STARPU_DATA_MODE_ARRAY to testcase

Nathalie Furmento 10 years ago
parent
commit
61a254e7f2
1 changed files with 95 additions and 35 deletions
  1. 95 35
      mpi/tests/insert_task_compute.c

+ 95 - 35
mpi/tests/insert_task_compute.c

@@ -37,6 +37,7 @@ int test(int rank, int node, int *before, int *after, int task_insert, int data_
 {
 {
 	int ok, ret, i, x[2];
 	int ok, ret, i, x[2];
 	starpu_data_handle_t data_handles[2];
 	starpu_data_handle_t data_handles[2];
+	struct starpu_data_descr descrs[2];
 
 
 	ret = starpu_init(NULL);
 	ret = starpu_init(NULL);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
@@ -57,45 +58,104 @@ int test(int rank, int node, int *before, int *after, int task_insert, int data_
 			FPRINTF_MPI("before computation x[%d] = %d\n", i, x[i]);
 			FPRINTF_MPI("before computation x[%d] = %d\n", i, x[i]);
 		starpu_variable_data_register(&data_handles[i], STARPU_MAIN_RAM, (uintptr_t)&x[i], sizeof(int));
 		starpu_variable_data_register(&data_handles[i], STARPU_MAIN_RAM, (uintptr_t)&x[i], sizeof(int));
 		starpu_mpi_data_register(data_handles[i], i, i);
 		starpu_mpi_data_register(data_handles[i], i, i);
+		descrs[i].handle = data_handles[i];
 	}
 	}
+	descrs[0].mode = STARPU_RW;
+	descrs[1].mode = STARPU_R;
 
 
-	if (task_insert)
+	switch(task_insert)
 	{
 	{
-		if (data_array)
-			ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet,
-						     STARPU_DATA_ARRAY, data_handles, 2,
-						     STARPU_EXECUTE_ON_NODE, node, 0);
-		else
-			ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet,
-						     STARPU_RW, data_handles[0], STARPU_R, data_handles[1],
-						     STARPU_EXECUTE_ON_NODE, node, 0);
-		STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_task_insert");
-	}
-	else
-	{
-		struct starpu_task *task = NULL;
-		if (data_array)
-			task = starpu_mpi_task_build(MPI_COMM_WORLD, &mycodelet,
-						     STARPU_DATA_ARRAY, data_handles, 2,
-						     STARPU_EXECUTE_ON_NODE, node, 0);
-		else
-			task = starpu_mpi_task_build(MPI_COMM_WORLD, &mycodelet,
-						     STARPU_RW, data_handles[0], STARPU_R, data_handles[1],
-						     STARPU_EXECUTE_ON_NODE, node, 0);
-		if (task)
+		case 0:
 		{
 		{
-			ret = starpu_task_submit(task);
-			if (ret == -ENODEV) goto enodev;
-			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+			struct starpu_task *task = NULL;
+			switch(data_array)
+			{
+				case 0:
+				{
+					task = starpu_mpi_task_build(MPI_COMM_WORLD, &mycodelet,
+								     STARPU_RW, data_handles[0], STARPU_R, data_handles[1],
+								     STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+				case 1:
+				{
+					task = starpu_mpi_task_build(MPI_COMM_WORLD, &mycodelet,
+								     STARPU_DATA_ARRAY, data_handles, 2,
+								     STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+				case 2:
+				{
+					task = starpu_mpi_task_build(MPI_COMM_WORLD, &mycodelet,
+								     STARPU_DATA_MODE_ARRAY, descrs, 2,
+								     STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+			}
+
+			if (task)
+			{
+				ret = starpu_task_submit(task);
+				if (ret == -ENODEV) goto enodev;
+				STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+			}
+
+			switch(data_array)
+			{
+				case 0:
+				{
+					starpu_mpi_task_post_build(MPI_COMM_WORLD, &mycodelet,
+								   STARPU_RW, data_handles[0], STARPU_R, data_handles[1],
+								   STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+				case 1:
+				{
+					starpu_mpi_task_post_build(MPI_COMM_WORLD, &mycodelet,
+								   STARPU_DATA_ARRAY, data_handles, 2,
+								   STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+				case 2:
+				{
+					starpu_mpi_task_post_build(MPI_COMM_WORLD, &mycodelet,
+								   STARPU_DATA_MODE_ARRAY, descrs, 2,
+								   STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+			}
+
+			break;
+		}
+		case 1:
+		{
+			switch(data_array)
+			{
+				case 0:
+				{
+					ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet,
+								     STARPU_RW, data_handles[0], STARPU_R, data_handles[1],
+								     STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+				case 1:
+				{
+					ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet,
+								     STARPU_DATA_ARRAY, data_handles, 2,
+								     STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+				case 2:
+				{
+					ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet,
+								     STARPU_DATA_MODE_ARRAY, descrs, 2,
+								     STARPU_EXECUTE_ON_NODE, node, 0);
+					break;
+				}
+			}
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_task_insert");
+			break;
 		}
 		}
-		if (data_array)
-			starpu_mpi_task_post_build(MPI_COMM_WORLD, &mycodelet,
-						   STARPU_DATA_ARRAY, descrs, 2,
-						   STARPU_EXECUTE_ON_NODE, node, 0);
-		else
-			starpu_mpi_task_post_build(MPI_COMM_WORLD, &mycodelet,
-						   STARPU_RW, data_handles[0], STARPU_R, data_handles[1],
-						   STARPU_EXECUTE_ON_NODE, node, 0);
 	}
 	}
 
 
 	starpu_task_wait_for_all();
 	starpu_task_wait_for_all();
@@ -139,7 +199,7 @@ int main(int argc, char **argv)
 	{
 	{
 		for(insert_task=0 ; insert_task<=1 ; insert_task++)
 		for(insert_task=0 ; insert_task<=1 ; insert_task++)
 		{
 		{
-			for(data_array=0 ; data_array<=1 ; data_array++)
+			for(data_array=0 ; data_array<=2 ; data_array++)
 			{
 			{
 				ret = test(rank, node, before, after_node[node], insert_task, data_array);
 				ret = test(rank, node, before, after_node[node], insert_task, data_array);
 				if (ret == -ENODEV || ret) goto end;
 				if (ret == -ENODEV || ret) goto end;