Bläddra i källkod

mpi/tests/datatypes.c: acquire/release data and add rank testing

Nathalie Furmento 9 år sedan
förälder
incheckning
fa6b836b03
1 ändrade filer med 11 tillägg och 3 borttagningar
  1. 11 3
      mpi/tests/datatypes.c

+ 11 - 3
mpi/tests/datatypes.c

@@ -90,6 +90,7 @@ void check_matrix(starpu_data_handle_t handle_s, starpu_data_handle_t handle_r,
 	int x, y;
 
 	for(y=0 ; y<ny ; y++)
+	{
 		for(x=0 ; x<nx ; x++)
 		{
 			int index=(y*ldy)+x;
@@ -103,6 +104,7 @@ void check_matrix(starpu_data_handle_t handle_s, starpu_data_handle_t handle_r,
 				FPRINTF_MPI(stderr, "Error with matrix[%d,%d --> %d] value: %c != %c\n", x, y, index, matrix_s[index], matrix_r[index]);
 			}
 		}
+	}
 }
 
 void check_block(starpu_data_handle_t handle_s, starpu_data_handle_t handle_r, int *error)
@@ -114,6 +116,9 @@ void check_block(starpu_data_handle_t handle_s, starpu_data_handle_t handle_r, i
 	STARPU_ASSERT(starpu_block_get_local_ldy(handle_s) == starpu_block_get_local_ldy(handle_r));
 	STARPU_ASSERT(starpu_block_get_local_ldz(handle_s) == starpu_block_get_local_ldz(handle_r));
 
+	starpu_data_acquire(handle_s, STARPU_R);
+	starpu_data_acquire(handle_r, STARPU_R);
+
 	float *block_s = (float *)starpu_block_get_local_ptr(handle_s);
 	float *block_r = (float *)starpu_block_get_local_ptr(handle_r);
 
@@ -127,6 +132,7 @@ void check_block(starpu_data_handle_t handle_s, starpu_data_handle_t handle_r, i
 	int x, y, z;
 
 	for(z=0 ; z<nz ; z++)
+	{
 		for(y=0 ; y<ny ; y++)
 			for(x=0 ; x<nx ; x++)
 			{
@@ -141,6 +147,10 @@ void check_block(starpu_data_handle_t handle_s, starpu_data_handle_t handle_r, i
 					FPRINTF_MPI(stderr, "Error with block[%d,%d,%d --> %d] value: %f != %f\n", x, y, z, index, block_s[index], block_r[index]);
 				}
 			}
+	}
+
+	starpu_data_release(handle_s);
+	starpu_data_release(handle_r);
 }
 
 void send_recv_and_check(int rank, int node, starpu_data_handle_t handle_s, int tag_s, starpu_data_handle_t handle_r, int tag_r, int *error, check_func func)
@@ -157,7 +167,7 @@ void send_recv_and_check(int rank, int node, starpu_data_handle_t handle_s, int
 
 		func(handle_s, handle_r, error);
 	}
-	else
+	else if (rank == 1)
 	{
 		ret = starpu_mpi_recv(handle_s, node, tag_s, MPI_COMM_WORLD, &status);
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_recv");
@@ -234,7 +244,6 @@ int main(int argc, char **argv)
 		starpu_data_unregister(variable_handle);
 	}
 
-
 	if (rank == 0)
 	{
 		int vector[4] = {1, 2, 3, 4};
@@ -289,7 +298,6 @@ int main(int argc, char **argv)
 		starpu_data_unregister(matrix_handle);
 	}
 
-
 	if (rank == 0)
 	{
 		float *block, n=1.0;