浏览代码

examples/: add missing calls to starpu_data_unregister

Nathalie Furmento 13 年之前
父节点
当前提交
61f77c5b09

+ 15 - 0
examples/cg/cg.c

@@ -148,6 +148,20 @@ static void register_data(void)
 	}
 }
 
+static void unregister_data(void)
+{
+	starpu_data_unregister(A_handle);
+	starpu_data_unregister(b_handle);
+	starpu_data_unregister(x_handle);
+
+	starpu_data_unregister(r_handle);
+	starpu_data_unregister(d_handle);
+	starpu_data_unregister(q_handle);
+
+	starpu_data_unregister(dtq_handle);
+	starpu_data_unregister(rtr_handle);
+}
+
 /*
  *	Data partitioning filters
  */
@@ -375,6 +389,7 @@ int main(int argc, char **argv)
 	ret = check();
 
 	starpu_task_wait_for_all();
+	unregister_data();
 	starpu_helper_cublas_shutdown();
 	starpu_shutdown();
 

+ 2 - 0
examples/cholesky/cholesky_implicit.c

@@ -165,6 +165,8 @@ static void cholesky(float *matA, unsigned size, unsigned ld, unsigned nblocks)
 	starpu_data_map_filters(dataA, 2, &f, &f2);
 
 	_cholesky(dataA, nblocks);
+
+	starpu_data_unregister(dataA);
 }
 
 int main(int argc, char **argv)

+ 2 - 0
examples/cholesky/cholesky_tag.c

@@ -272,6 +272,8 @@ static void cholesky(float *matA, unsigned size, unsigned ld, unsigned nblocks)
 
 	_cholesky(dataA, nblocks);
 
+	starpu_data_unregister(dataA);
+
 	starpu_helper_cublas_shutdown();
 
 	starpu_shutdown();

+ 8 - 2
examples/cholesky/cholesky_tile_tag.c

@@ -290,8 +290,6 @@ int main(int argc, char **argv)
 		}
 	}
 
-
-
 	for (y = 0; y < nblocks; y++)
 	for (x = 0; x < nblocks; x++)
 	{
@@ -303,6 +301,14 @@ int main(int argc, char **argv)
 
 	cholesky_no_stride();
 
+	for (y = 0; y < nblocks; y++)
+	for (x = 0; x < nblocks; x++)
+	{
+		if (x <= y) {
+			starpu_data_unregister(A_state[y][x]);
+		}
+	}
+
 	starpu_helper_cublas_shutdown();
 
 	starpu_shutdown();

+ 2 - 0
examples/heat/dw_factolu_tag.c

@@ -297,6 +297,8 @@ void dw_factoLU_tag(float *matA, unsigned size, unsigned ld, unsigned nblocks, u
 	/* gather all the data */
 	starpu_data_unpartition(dataA, 0);
 
+	starpu_data_unregister(dataA);
+
 #ifdef CHECK_RESULTS
 	compare_A_LU(Asaved, matA, size, ld);
 #endif

+ 7 - 0
examples/heat/dw_sparse_cg.c

@@ -387,6 +387,13 @@ void conjugate_gradient(float *nzvalA, float *vecb, float *vecx, uint32_t nnz,
 	sem_destroy(&sem);
 
 	print_results(vecx, nrow);
+
+	starpu_data_unregister(ds_matrixA);
+	starpu_data_unregister(ds_vecx);
+	starpu_data_unregister(ds_vecb);
+	starpu_data_unregister(ds_vecr);
+	starpu_data_unregister(ds_vecd);
+	starpu_data_unregister(ds_vecq);
 }
 
 

+ 1 - 0
examples/lu/xlu.c

@@ -252,4 +252,5 @@ void STARPU_LU(lu_decomposition)(TYPE *matA, unsigned size, unsigned ld, unsigne
 
 	/* gather all the data */
 	starpu_data_unpartition(dataA, 0);
+	starpu_data_unregister(dataA);
 }

+ 1 - 0
examples/lu/xlu_implicit.c

@@ -159,4 +159,5 @@ void STARPU_LU(lu_decomposition)(TYPE *matA, unsigned size, unsigned ld, unsigne
 
 	/* gather all the data */
 	starpu_data_unpartition(dataA, 0);
+	starpu_data_unregister(dataA);
 }

+ 1 - 0
examples/lu/xlu_implicit_pivot.c

@@ -226,6 +226,7 @@ void STARPU_LU(lu_decomposition_pivot)(TYPE *matA, unsigned *ipiv, unsigned size
 
 	/* gather all the data */
 	starpu_data_unpartition(dataA, 0);
+	starpu_data_unregister(dataA);
 }
 
 

+ 3 - 0
examples/mult/xgemm.c

@@ -293,6 +293,9 @@ int main(int argc, char **argv)
 	FPRINTF(stderr, "GFlop/s: %.2f\n", flops/timing/1000.0);
 
 	starpu_data_unpartition(C_handle, 0);
+
+	starpu_data_unregister(A_handle);
+	starpu_data_unregister(B_handle);
 	starpu_data_unregister(C_handle);
 	
 	if (check)

+ 1 - 0
examples/opt/pi/pi.c

@@ -150,6 +150,7 @@ int main(int argc, char **argv)
 	/* Get the cnt_array back in main memory */
 	starpu_data_unpartition(cnt_array_handle, 0);
 	starpu_data_unregister(cnt_array_handle);
+	starpu_data_unregister(sobol_qrng_direction_handle);
 
 	/* Count the total number of entries */
 	unsigned long total_cnt = 0;

+ 1 - 0
examples/opt/pi/pi_redux.c

@@ -339,6 +339,7 @@ int main(int argc, char **argv)
 	}
 
 	starpu_data_unregister(shot_cnt_handle);
+	starpu_data_unregister(xy_scratchpad_handle);
 
 	gettimeofday(&end, NULL);
 	double timing = (double)((end.tv_sec - start.tv_sec)*1000000 + (end.tv_usec - start.tv_usec));

+ 8 - 0
examples/spmv/dw_block_spmv.c

@@ -72,6 +72,13 @@ void create_data(void)
 	starpu_vector_data_register(&vector_out, 0, (uintptr_t)vector_out_ptr, size, sizeof(float));
 }
 
+void unregister_data(void)
+{
+	starpu_data_unregister(sparse_matrix);
+	starpu_data_unregister(vector_in);
+	starpu_data_unregister(vector_out);
+}
+
 void init_problem_callback(void *arg)
 {
 	unsigned *remaining = arg;
@@ -293,6 +300,7 @@ int main(__attribute__ ((unused)) int argc,
 	sem_wait(&sem);
 	sem_destroy(&sem);
 
+	unregister_data();
 	print_results();
 
 	double totalflop = 2.0*c*r*totaltasks;