ソースを参照

synchronous tasks with a flag destroy set to 1 are automatically destroyed at the end of starpu_task_submit() (these tasks are not automatically destroyed by _starpu_handle_job_termination() as their flag detach is set to 0)

Nathalie Furmento 13 年 前
コミット
e60efe5d0e

+ 0 - 3
examples/basic_examples/hello_world.c

@@ -115,9 +115,6 @@ int main(int argc, char **argv)
 	if (ret == -ENODEV) goto enodev;
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
-	/* destroy the task */
-	starpu_task_destroy(task);
-
 	/* terminate StarPU: statistics and other debug outputs are not
 	 * guaranteed to be generated unless this function is called. Once it
 	 * is called, it is not possible to submit tasks anymore, and the user

+ 0 - 2
examples/basic_examples/vector_scal.c

@@ -156,8 +156,6 @@ int main(int argc, char **argv)
  	 * monitoring it */
 	starpu_data_unregister(vector_handle);
 
-	starpu_task_destroy(task);
-
 #ifdef STARPU_USE_OPENCL
         starpu_opencl_unload_opencl(&opencl_program);
 #endif

+ 0 - 1
examples/filters/fblock.c

@@ -155,7 +155,6 @@ int main(int argc, char **argv)
                         FPRINTF(stderr, "Error when submitting task\n");
                         exit(ret);
                 }
-		starpu_task_destroy(task);
         }
 
         /* Unpartition the data, unregister it from StarPU and shutdown */

+ 0 - 2
examples/filters/fmatrix.c

@@ -98,8 +98,6 @@ int main(int argc, char **argv)
 		ret = starpu_task_submit(task);
 		if (ret == -ENODEV) goto enodev;
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
-
-		starpu_task_destroy(task);
 	}
 
         /* Unpartition the data, unregister it from StarPU and shutdown */

+ 1 - 3
examples/filters/fvector.c

@@ -58,7 +58,7 @@ int main(int argc, char **argv)
 
 	ret = starpu_init(NULL);
 	if (ret == -ENODEV)
-		exit(77);	
+		exit(77);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
 
 	/* Declare data to StarPU */
@@ -88,8 +88,6 @@ int main(int argc, char **argv)
 		ret = starpu_task_submit(task);
 		if (ret == -ENODEV) goto enodev;
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
-
-		starpu_task_destroy(task);
 	}
 
 	starpu_data_unpartition(handle, 0);

+ 4 - 0
src/core/task.c

@@ -419,7 +419,11 @@ int starpu_task_submit(struct starpu_task *task)
 	ret = _starpu_submit_job(j);
 
 	if (is_sync)
+	{
 		_starpu_wait_job(j);
+		if (task->destroy)
+		     _starpu_task_destroy(task);
+	}
 
         _STARPU_LOG_OUT();
 	return ret;

+ 1 - 2
src/datawizard/user_interactions.c

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  * Copyright (C) 2009-2012  Université de Bordeaux 1
- * Copyright (C) 2010, 2011  Centre National de la Recherche Scientifique
+ * Copyright (C) 2010, 2011, 2012  Centre National de la Recherche Scientifique
  *
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -260,7 +260,6 @@ int starpu_data_acquire(starpu_data_handle_t handle, enum starpu_access_mode mod
 		wrapper.pre_sync_task->synchronous = 1;
 		int ret = starpu_task_submit(wrapper.pre_sync_task);
 		STARPU_ASSERT(!ret);
-		starpu_task_destroy(wrapper.pre_sync_task);
 	}
 	else
 	{

+ 0 - 1
tests/datawizard/acquire_release.c

@@ -59,7 +59,6 @@ int increment_token()
 	task->cl = &increment_cl;
 	task->handles[0] = token_handle;
 	ret = starpu_task_submit(task);
-	starpu_task_destroy(task);
 	return ret;
 }
 

+ 0 - 2
tests/datawizard/sync_and_notify_data.c

@@ -149,7 +149,6 @@ int main(int argc, char **argv)
 			ret = starpu_task_submit(task);
 			if (ret == -ENODEV) goto enodev;
 			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
-			starpu_task_destroy(task);
 		}
 
 		/* synchronize v in RAM */
@@ -192,7 +191,6 @@ int main(int argc, char **argv)
 			ret = starpu_task_submit(task);
 			if (ret == -ENODEV) goto enodev;
 			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
-			starpu_task_destroy(task);
 		}
 
 	}

+ 0 - 1
tests/main/declare_deps_after_submission_synchronous.c

@@ -81,7 +81,6 @@ int main(int argc, char **argv)
 		if (ret == -ENODEV) goto enodev;
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
-		starpu_task_destroy(taskB);
 		starpu_task_destroy(taskA);
 	}