Browse Source

mpi: fix memory accesses

Nathalie Furmento 9 years ago
parent
commit
7a292673f7

+ 2 - 0
mpi/examples/user_datatype/user_datatype.c

@@ -68,6 +68,7 @@ int main(int argc, char **argv)
 		MPI_Datatype mpi_datatype;
 		_starpu_my_interface_datatype_allocate(&mpi_datatype);
 		MPI_Send(&my0, 1, mpi_datatype, 1, 42, MPI_COMM_WORLD);
+		starpu_my_interface_datatype_free(&mpi_datatype);
 	}
 	else if (rank == 1)
 	{
@@ -76,6 +77,7 @@ int main(int argc, char **argv)
 		_starpu_my_interface_datatype_allocate(&mpi_datatype);
 		MPI_Recv(&my0, 1, mpi_datatype, 0, 42, MPI_COMM_WORLD, &status);
 		FPRINTF(stderr, "Received value: '%c' %d\n", my0.c, my0.d);
+		starpu_my_interface_datatype_free(&mpi_datatype);
 	}
 
 	if (rank == 0)

+ 6 - 2
mpi/tests/cache_disable.c

@@ -46,7 +46,7 @@ int main(int argc, char **argv)
 {
 	int rank, n;
 	int ret;
-	unsigned val = 12;
+	unsigned *val;
 	starpu_data_handle_t data;
 	void *ptr = NULL;
 	int cache;
@@ -60,8 +60,11 @@ int main(int argc, char **argv)
 	cache = starpu_mpi_cache_is_enabled();
 	if (cache == 0) goto skip;
 
+	val = malloc(sizeof(*val));
+	*val = 12;
+
 	if (rank == 0)
-		starpu_variable_data_register(&data, STARPU_MAIN_RAM, (uintptr_t)&val, sizeof(unsigned));
+		starpu_variable_data_register(&data, STARPU_MAIN_RAM, (uintptr_t)val, sizeof(unsigned));
 	else
 		starpu_variable_data_register(&data, -1, (uintptr_t)NULL, sizeof(unsigned));
 	starpu_mpi_data_register(data, 42, 0);
@@ -98,6 +101,7 @@ int main(int argc, char **argv)
 	starpu_task_wait_for_all();
 
 	starpu_data_unregister(data);
+	free(val);
 
 skip:
 	starpu_mpi_shutdown();

+ 3 - 3
mpi/tests/insert_task_recv_cache.c

@@ -74,11 +74,11 @@ void test_cache(int rank, char *enabled, size_t *comm_amount)
 	ret = starpu_mpi_init(NULL, NULL, 0);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_init");
 
-	v = malloc(2 * sizeof(unsigned *));
+	v = calloc(2, sizeof(unsigned *));
 	for(i = 0; i < 2; i++)
 	{
 		int j;
-		v[i] = malloc(N * sizeof(unsigned));
+		v[i] = calloc(N, sizeof(unsigned));
 		for(j=0 ; j<N ; j++)
 		{
 			v[i][j] = 12;
@@ -90,7 +90,7 @@ void test_cache(int rank, char *enabled, size_t *comm_amount)
 		int mpi_rank = my_distrib(i);
 		if (mpi_rank == rank)
 		{
-			starpu_vector_data_register(&data_handles[i], STARPU_MAIN_RAM, (uintptr_t)&(v[i]), N, sizeof(unsigned));
+			starpu_vector_data_register(&data_handles[i], STARPU_MAIN_RAM, (uintptr_t)v[i], N, sizeof(unsigned));
 		}
 		else
 		{