Parcourir la source

Add starpu_sched_tree_deinitialize function

Since all modular schedulers are actually doing the same.
Samuel Thibault il y a 4 ans
Parent
commit
2030fbd80d

+ 1 - 0
ChangeLog

@@ -81,6 +81,7 @@ Small features:
   * New STARPU_TASK_PROGRESS environment variable to show task progression.
   * Add STARPU_SIMGRID environment variable guard against native builds.
   * Add starpu_cuda_get_nvmldev function.
+  * Add starpu_sched_tree_deinitialize function.
 
 StarPU 1.3.7
 ====================================================================

+ 4 - 0
include/starpu_sched_component.h

@@ -215,6 +215,10 @@ struct starpu_sched_tree *starpu_sched_tree_create(unsigned sched_ctx_id) STARPU
    destroy tree and free all non shared component in it.
 */
 void starpu_sched_tree_destroy(struct starpu_sched_tree *tree);
+/**
+   calls starpu_sched_tree_destroy, ready for use for starpu_sched_policy::deinit_sched field.
+ */
+void starpu_sched_tree_deinitialize(unsigned sched_ctx_id);
 struct starpu_sched_tree *starpu_sched_tree_get(unsigned sched_ctx_id);
 /**
    recursively set all starpu_sched_component::workers, do not take into account shared parts (except workers).

+ 7 - 0
src/sched_policies/component_sched.c

@@ -499,6 +499,13 @@ struct starpu_sched_tree * starpu_sched_tree_get(unsigned sched_ctx_id)
 	return trees[sched_ctx_id];
 }
 
+void starpu_sched_tree_deinitialize(unsigned sched_ctx_id)
+{
+	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
+
+	starpu_sched_tree_destroy(t);
+}
+
 
 /******************************************************************************
  *          Interface Functions for Generic Scheduling Components             *

+ 1 - 8
src/sched_policies/hierarchical_heft.c

@@ -69,13 +69,6 @@ static void initialize_heft_center_policy(unsigned sched_ctx_id)
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
 }
 
-static void deinitialize_heft_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-
-	starpu_sched_tree_destroy(t);
-}
-
 
 
 
@@ -83,7 +76,7 @@ static void deinitialize_heft_center_policy(unsigned sched_ctx_id)
 struct starpu_sched_policy _starpu_sched_tree_heft_hierarchical_policy =
 {
 	.init_sched = initialize_heft_center_policy,
-	.deinit_sched = deinitialize_heft_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_eager.c

@@ -26,16 +26,10 @@ static void initialize_eager_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_eager_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_eager_policy =
 {
 	.init_sched = initialize_eager_center_policy,
-	.deinit_sched = deinitialize_eager_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_eager_prefetching.c

@@ -28,16 +28,10 @@ static void initialize_eager_prefetching_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_eager_prefetching_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_eager_prefetching_policy =
 {
 	.init_sched = initialize_eager_prefetching_center_policy,
-	.deinit_sched = deinitialize_eager_prefetching_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_eager_prio.c

@@ -30,16 +30,10 @@ static void initialize_eager_prio_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_eager_prio_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_eager_prio_policy =
 {
 	.init_sched = initialize_eager_prio_center_policy,
-	.deinit_sched = deinitialize_eager_prio_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_gemm.c

@@ -179,16 +179,10 @@ static void initialize_gemm_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_gemm_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_gemm_policy =
 {
 	.init_sched = initialize_gemm_center_policy,
-	.deinit_sched = deinitialize_gemm_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_heft.c

@@ -61,16 +61,10 @@ static void initialize_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_heft_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_heft_policy =
 {
 	.init_sched = initialize_heft_center_policy,
-	.deinit_sched = deinitialize_heft_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_heft2.c

@@ -61,16 +61,10 @@ static void initialize_heft2_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_heft2_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_heft2_policy =
 {
 	.init_sched = initialize_heft2_center_policy,
-	.deinit_sched = deinitialize_heft2_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_heft_prio.c

@@ -62,16 +62,10 @@ static void initialize_heft_prio_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_heft_prio_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_heft_prio_policy =
 {
 	.init_sched = initialize_heft_prio_policy,
-	.deinit_sched = deinitialize_heft_prio_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_heteroprio.c

@@ -34,16 +34,10 @@ static void initialize_heteroprio_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_heteroprio_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_heteroprio_policy =
 {
 	.init_sched = initialize_heteroprio_center_policy,
-	.deinit_sched = deinitialize_heteroprio_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_heteroprio_heft.c

@@ -45,16 +45,10 @@ static void initialize_heteroprio_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL);
 }
 
-static void deinitialize_heteroprio_heft_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_heteroprio_heft_policy =
 {
 	.init_sched = initialize_heteroprio_heft_center_policy,
-	.deinit_sched = deinitialize_heteroprio_heft_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_parallel_heft.c

@@ -65,16 +65,10 @@ static void initialize_parallel_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_parallel_heft_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_parallel_heft_policy =
 {
 	.init_sched = initialize_parallel_heft_center_policy,
-	.deinit_sched = deinitialize_parallel_heft_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 2 - 14
src/sched_policies/modular_parallel_random.c

@@ -31,16 +31,10 @@ static void initialize_parallel_random_fifo_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_parallel_random_fifo_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_parallel_random_policy =
 {
 	.init_sched = initialize_parallel_random_fifo_center_policy,
-	.deinit_sched = deinitialize_parallel_random_fifo_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,
@@ -66,16 +60,10 @@ static void initialize_parallel_random_prio_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_parallel_random_prio_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_parallel_random_prio_policy =
 {
 	.init_sched = initialize_parallel_random_prio_center_policy,
-	.deinit_sched = deinitialize_parallel_random_prio_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_prio.c

@@ -27,16 +27,10 @@ void starpu_initialize_prio_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_prio_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_prio_policy =
 {
 	.init_sched = starpu_initialize_prio_center_policy,
-	.deinit_sched = deinitialize_prio_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_prio_prefetching.c

@@ -70,16 +70,10 @@ static void initialize_prio_prefetching_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_prio_prefetching_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_prio_prefetching_policy =
 {
 	.init_sched = initialize_prio_prefetching_center_policy,
-	.deinit_sched = deinitialize_prio_prefetching_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 2 - 14
src/sched_policies/modular_random.c

@@ -29,16 +29,10 @@ static void initialize_random_fifo_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_random_fifo_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_random_policy =
 {
 	.init_sched = initialize_random_fifo_center_policy,
-	.deinit_sched = deinitialize_random_fifo_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,
@@ -62,16 +56,10 @@ static void initialize_random_prio_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_random_prio_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_random_prio_policy =
 {
 	.init_sched = initialize_random_prio_center_policy,
-	.deinit_sched = deinitialize_random_prio_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 2 - 14
src/sched_policies/modular_random_prefetching.c

@@ -34,16 +34,10 @@ static void initialize_random_fifo_prefetching_center_policy(unsigned sched_ctx_
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_random_fifo_prefetching_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_random_prefetching_policy =
 {
 	.init_sched = initialize_random_fifo_prefetching_center_policy,
-	.deinit_sched = deinitialize_random_fifo_prefetching_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,
@@ -70,16 +64,10 @@ static void initialize_random_prio_prefetching_center_policy(unsigned sched_ctx_
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_random_prio_prefetching_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *tree = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(tree);
-}
-
 struct starpu_sched_policy _starpu_sched_modular_random_prio_prefetching_policy =
 {
 	.init_sched = initialize_random_prio_prefetching_center_policy,
-	.deinit_sched = deinitialize_random_prio_prefetching_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_push_task,

+ 1 - 7
src/sched_policies/modular_ws.c

@@ -27,17 +27,11 @@ static void initialize_ws_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 
-static void deinitialize_ws_center_policy(unsigned sched_ctx_id)
-{
-	struct starpu_sched_tree *t = (struct starpu_sched_tree*)starpu_sched_ctx_get_policy_data(sched_ctx_id);
-	starpu_sched_tree_destroy(t);
-}
-
 
 struct starpu_sched_policy _starpu_sched_modular_ws_policy =
 {
 	.init_sched = initialize_ws_center_policy,
-	.deinit_sched = deinitialize_ws_center_policy,
+	.deinit_sched = starpu_sched_tree_deinitialize,
 	.add_workers = starpu_sched_tree_add_workers,
 	.remove_workers = starpu_sched_tree_remove_workers,
 	.push_task = starpu_sched_tree_work_stealing_push_task,