瀏覽代碼

mpi/tests: do not skip if more than 2 processes are available, just ignore them

Nathalie Furmento 12 年之前
父節點
當前提交
48607a53d2
共有 4 個文件被更改,包括 7 次插入20 次删除
  1. 1 6
      mpi/tests/insert_task.c
  2. 1 6
      mpi/tests/insert_task_block.c
  3. 2 0
      mpi/tests/insert_task_cache.c
  4. 3 8
      mpi/tests/insert_task_owner.c

+ 1 - 6
mpi/tests/insert_task.c

@@ -87,17 +87,12 @@ int main(int argc, char **argv)
                                 //FPRINTF(stderr, "[%d] Owning data[%d][%d]\n", rank, x, y);
                                 starpu_variable_data_register(&data_handles[x][y], 0, (uintptr_t)&(matrix[x][y]), sizeof(unsigned));
                         }
-                        else if (rank == mpi_rank+1 || rank == mpi_rank-1)
+                        else
 			{
                                 /* I don't own that index, but will need it for my computations */
                                 //FPRINTF(stderr, "[%d] Neighbour of data[%d][%d]\n", rank, x, y);
                                 starpu_variable_data_register(&data_handles[x][y], -1, (uintptr_t)NULL, sizeof(unsigned));
                         }
-                        else
-			{
-                                /* I know it's useless to allocate anything for this */
-                                data_handles[x][y] = NULL;
-                        }
                         if (data_handles[x][y])
 			{
                                 starpu_data_set_rank(data_handles[x][y], mpi_rank);

+ 1 - 6
mpi/tests/insert_task_block.c

@@ -105,18 +105,13 @@ int main(int argc, char **argv)
                                 starpu_matrix_data_register(&data_handles[x][y], 0, (uintptr_t)&(matrix[((SIZE/BLOCKS)*x) + ((SIZE/BLOCKS)*y) * SIZE]),
                                                             SIZE, SIZE/BLOCKS, SIZE/BLOCKS, sizeof(unsigned));
                         }
-                        else if (rank == mpi_rank+1 || rank == mpi_rank-1)
+                        else
 			{
                                 /* I don't own that index, but will need it for my computations */
                                 //FPRINTF(stderr, "[%d] Neighbour of data[%d][%d]\n", rank, x, y);
                                 starpu_matrix_data_register(&data_handles[x][y], -1, (uintptr_t)&(matrix[((SIZE/BLOCKS)*x) + ((SIZE/BLOCKS)*y) * SIZE]),
                                                             SIZE, SIZE/BLOCKS, SIZE/BLOCKS, sizeof(unsigned));
                         }
-                        else
-			{
-                                /* I know it's useless to allocate anything for this */
-                                data_handles[x][y] = NULL;
-                        }
                         if (data_handles[x][y])
 			{
                                 starpu_data_set_rank(data_handles[x][y], mpi_rank);

+ 2 - 0
mpi/tests/insert_task_cache.c

@@ -134,6 +134,8 @@ int main(int argc, char **argv)
 		result = (comm_amount_with_cache[dst] == comm_amount_without_cache[dst] * 5);
 		fprintf(stderr, "Communication cache mechanism is %sworking\n", result?"":"NOT ");
 	}
+	else
+		result = 1;
 
 	MPI_Finalize();
 	return !result;

+ 3 - 8
mpi/tests/insert_task_owner.c

@@ -84,14 +84,6 @@ int main(int argc, char **argv)
 	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 	MPI_Comm_size(MPI_COMM_WORLD, &size);
 
-        if (size != 2)
-	{
-		if (rank == 0) FPRINTF(stderr, "We need exactly 2 processes.\n");
-                starpu_mpi_shutdown();
-                starpu_shutdown();
-                return STARPU_TEST_SKIPPED;
-        }
-
         if (rank == 0)
 	{
                 starpu_variable_data_register(&data_handlesx0, 0, (uintptr_t)&x0, sizeof(x0));
@@ -111,6 +103,8 @@ int main(int argc, char **argv)
 		starpu_data_set_tag(data_handlesx0, 0);
         }
 
+	if (rank != 0 && rank != 1) goto end;
+
 	node = starpu_data_get_rank(data_handlesx1);
         err = starpu_mpi_insert_task(MPI_COMM_WORLD, &mycodelet_r_w,
 				     STARPU_VALUE, &node, sizeof(node),
@@ -172,6 +166,7 @@ int main(int argc, char **argv)
 				     0);
         assert(err == 0);
 
+end:
 	fprintf(stderr, "Waiting ...\n");
         starpu_task_wait_for_all();
 	starpu_mpi_shutdown();