Browse Source

Make sure to unpartition data before unregistering it

Samuel Thibault 13 years ago
parent
commit
f3a42aaefa
3 changed files with 12 additions and 2 deletions
  1. 8 0
      examples/cg/cg.c
  2. 3 1
      examples/mult/xgemm.c
  3. 1 1
      src/datawizard/interfaces/data_interface.c

+ 8 - 0
examples/cg/cg.c

@@ -150,6 +150,14 @@ static void register_data(void)
 
 static void unregister_data(void)
 {
+	starpu_data_unpartition(A_handle, 0);
+	starpu_data_unpartition(b_handle, 0);
+	starpu_data_unpartition(x_handle, 0);
+
+	starpu_data_unpartition(r_handle, 0);
+	starpu_data_unpartition(d_handle, 0);
+	starpu_data_unpartition(q_handle, 0);
+
 	starpu_data_unregister(A_handle);
 	starpu_data_unregister(b_handle);
 	starpu_data_unregister(x_handle);

+ 3 - 1
examples/mult/xgemm.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009, 2010, 2011  Université de Bordeaux 1
+ * Copyright (C) 2009-2012  Université de Bordeaux 1
  * Copyright (C) 2010  Mehdi Juhoor <mjuhoor@gmail.com>
  * Copyright (C) 2010, 2011, 2012  Centre National de la Recherche Scientifique
  *
@@ -319,6 +319,8 @@ int main(int argc, char **argv)
 	FPRINTF(stderr, "GFlop/s: %.2f\n", flops/timing/1000.0);
 
 	starpu_data_unpartition(C_handle, 0);
+	starpu_data_unpartition(B_handle, 0);
+	starpu_data_unpartition(A_handle, 0);
 
 	starpu_data_unregister(A_handle);
 	starpu_data_unregister(B_handle);

+ 1 - 1
src/datawizard/interfaces/data_interface.c

@@ -427,7 +427,7 @@ static void _starpu_data_unregister_fetch_data_callback(void *_arg)
 static void _starpu_data_unregister(starpu_data_handle_t handle, unsigned coherent)
 {
 	STARPU_ASSERT(handle);
-
+	STARPU_ASSERT_MSG(handle->nchildren == 0, "data needs to be unpartitioned before unregistration");
 
 	if (coherent)
 	{