浏览代码

mpi/tests/insert_task_owner2.c: check computation is correct

Nathalie Furmento 9 年之前
父节点
当前提交
c128de48fb
共有 1 个文件被更改,包括 18 次插入11 次删除
  1. 18 11
      mpi/tests/insert_task_owner2.c

+ 18 - 11
mpi/tests/insert_task_owner2.c

@@ -26,15 +26,10 @@ void func_cpu(void *descr[], STARPU_ATTRIBUTE_UNUSED void *_args)
 	int *x2 = (int *)STARPU_VARIABLE_GET_PTR(descr[2]);
 	int *y = (int *)STARPU_VARIABLE_GET_PTR(descr[3]);
 
-	//FPRINTF(stderr, "-------> CODELET VALUES: %d %d %d %d\n", *x0, *x1, *x2, *y);
-	//*x2 = 45;
-	//*y = 144;
-
-	FPRINTF(stderr, "-------> CODELET VALUES: %d %d (x2) %d\n", *x0, *x1, *y);
+	FPRINTF(stderr, "-------> CODELET VALUES: %d %d nan %d\n", *x0, *x1, *y);
+	*x2 = *y;
 	*y = (*x0 + *x1) * 100;
 	*x1 = 12;
-	*x2 = 24;
-	*x0 = 36;
 	FPRINTF(stderr, "-------> CODELET VALUES: %d %d %d %d\n", *x0, *x1, *x2, *y);
 }
 
@@ -61,7 +56,8 @@ int main(int argc, char **argv)
 {
 	int rank, size, err;
 	int x[3], y=0;
-	int i, ret;
+	int oldx[3];
+	int i, ret=0;
 	starpu_data_handle_t data_handles[4];
 
 	ret = starpu_init(NULL);
@@ -85,6 +81,7 @@ int main(int argc, char **argv)
 		for(i=0 ; i<3 ; i++)
 		{
 			x[i] = 10*(i+1);
+			oldx[i] = 10*(i+1);
 			starpu_variable_data_register(&data_handles[i], STARPU_MAIN_RAM, (uintptr_t)&x[i], sizeof(x[i]));
 		}
 		y = -1;
@@ -100,14 +97,14 @@ int main(int argc, char **argv)
 		y=200;
 		starpu_variable_data_register(&data_handles[3], STARPU_MAIN_RAM, (uintptr_t)&y, sizeof(int));
 	}
-	FPRINTF(stderr, "[%d][init] VALUES: %d %d %d %d\n", rank, x[0], x[1], x[2], y);
-
 	for(i=0 ; i<3 ; i++)
 	{
 		starpu_mpi_data_register(data_handles[i], i, 0);
 	}
 	starpu_mpi_data_register(data_handles[3], 3, 1);
 
+	FPRINTF(stderr, "[%d][init] VALUES: %d %d %d %d\n", rank, x[0], x[1], x[2], y);
+
 	err = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet,
 				     STARPU_R, data_handles[0], STARPU_RW, data_handles[1],
 				     STARPU_W, data_handles[2],
@@ -131,6 +128,16 @@ int main(int argc, char **argv)
 	if (rank == 0)
 	{
 		FPRINTF(stderr, "[%d][local ptr] VALUES: %d %d %d %d\n", rank, values[0], values[1], values[2], values[3]);
+		if (values[0] != oldx[0] || values[1] != 12 || values[2] != 200 || values[3] != ((oldx[0] + oldx[1]) * 100))
+		{
+			FPRINTF(stderr, "[%d][error] values[0] %d != x[0] %d && values[1] %d != 12 && values[2] %d != 200 && values[3] %d != ((x[0] %d + x[1] %d) * 100)\n",
+				rank, values[0], oldx[0], values[1], values[2], values[3], oldx[0], oldx[1]);
+			ret = 1;
+		}
+		else
+		{
+			FPRINTF(stderr, "[%d] correct computation\n", rank);
+		}
 	}
         FPRINTF(stderr, "[%d][end] VALUES: %d %d %d %d\n", rank, x[0], x[1], x[2], y);
 
@@ -138,6 +145,6 @@ int main(int argc, char **argv)
 	starpu_mpi_shutdown();
 	starpu_shutdown();
 
-	return 0;
+	return (rank == 0) ? ret : 0;
 }