Browse Source

dissociate component_worker get and new functions

Olivier Aumage 8 years ago
parent
commit
71499b8de6

+ 1 - 0
include/starpu_sched_component.h

@@ -107,6 +107,7 @@ void starpu_sched_component_prefetch_on_node(struct starpu_sched_component *comp
 void starpu_sched_component_connect(struct starpu_sched_component *parent, struct starpu_sched_component *child);
 void starpu_sched_component_connect(struct starpu_sched_component *parent, struct starpu_sched_component *child);
 
 
 struct starpu_sched_component *starpu_sched_component_worker_get(unsigned sched_ctx, int workerid);
 struct starpu_sched_component *starpu_sched_component_worker_get(unsigned sched_ctx, int workerid);
+struct starpu_sched_component *starpu_sched_component_worker_new(unsigned sched_ctx, int workerid);
 int starpu_sched_component_worker_get_workerid(struct starpu_sched_component *worker_component);
 int starpu_sched_component_worker_get_workerid(struct starpu_sched_component *worker_component);
 int starpu_sched_component_is_worker(struct starpu_sched_component *component);
 int starpu_sched_component_is_worker(struct starpu_sched_component *component);
 int starpu_sched_component_is_simple_worker(struct starpu_sched_component *component);
 int starpu_sched_component_is_simple_worker(struct starpu_sched_component *component);

+ 19 - 11
src/sched_policies/component_worker.c

@@ -883,16 +883,24 @@ struct starpu_sched_component * starpu_sched_component_worker_get(unsigned sched
 {
 {
 	STARPU_ASSERT(workerid >= 0 && workerid < STARPU_NMAXWORKERS);
 	STARPU_ASSERT(workerid >= 0 && workerid < STARPU_NMAXWORKERS);
 	/* we may need to take a mutex here */
 	/* we may need to take a mutex here */
-	if(_worker_components[sched_ctx][workerid])
-		return _worker_components[sched_ctx][workerid];
+	STARPU_ASSERT(_worker_components[sched_ctx][workerid]);
+	return _worker_components[sched_ctx][workerid];
+}
+
+struct starpu_sched_component * starpu_sched_component_worker_new(unsigned sched_ctx, int workerid)
+{
+	STARPU_ASSERT(workerid >= 0 && workerid < STARPU_NMAXWORKERS);
+	/* we may need to take a mutex here */
+	STARPU_ASSERT(!_worker_components[sched_ctx][workerid]);
+	struct starpu_sched_component * component;
+	if(workerid < (int) starpu_worker_get_count())
+		component = starpu_sched_component_worker_create(starpu_sched_tree_get(sched_ctx), workerid);
 	else
 	else
-	{
-		struct starpu_sched_component * component;
-		if(workerid < (int) starpu_worker_get_count())
-			component = starpu_sched_component_worker_create(starpu_sched_tree_get(sched_ctx), workerid);
-		else
-			component = starpu_sched_component_combined_worker_create(starpu_sched_tree_get(sched_ctx), workerid);
-		_worker_components[sched_ctx][workerid] = component;
-		return component;
-	}
+		component = starpu_sched_component_combined_worker_create(starpu_sched_tree_get(sched_ctx), workerid);
+	_worker_components[sched_ctx][workerid] = component;
+	return component;
 }
 }
+
+
+
+

+ 1 - 1
src/sched_policies/modular_eager.c

@@ -33,7 +33,7 @@ static void initialize_eager_center_policy(unsigned sched_ctx_id)
 
 
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
-		starpu_sched_component_connect(eager_component, starpu_sched_component_worker_get(sched_ctx_id, i));
+		starpu_sched_component_connect(eager_component, starpu_sched_component_worker_new(sched_ctx_id, i));
 
 
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);

+ 1 - 1
src/sched_policies/modular_eager_prefetching.c

@@ -43,7 +43,7 @@ static void initialize_eager_prefetching_center_policy(unsigned sched_ctx_id)
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * fifo_component = starpu_sched_component_fifo_create(t, &fifo_data);
 		struct starpu_sched_component * fifo_component = starpu_sched_component_fifo_create(t, &fifo_data);
 
 
 		starpu_sched_component_connect(fifo_component, worker_component);
 		starpu_sched_component_connect(fifo_component, worker_component);

+ 1 - 1
src/sched_policies/modular_heft.c

@@ -98,7 +98,7 @@ static void initialize_heft_center_policy(unsigned sched_ctx_id)
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 		struct starpu_sched_component * impl_component = starpu_sched_component_best_implementation_create(t, NULL);
 		struct starpu_sched_component * impl_component = starpu_sched_component_best_implementation_create(t, NULL);
 
 

+ 1 - 1
src/sched_policies/modular_heft2.c

@@ -98,7 +98,7 @@ static void initialize_heft2_center_policy(unsigned sched_ctx_id)
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 		struct starpu_sched_component * impl_component = starpu_sched_component_best_implementation_create(t, NULL);
 		struct starpu_sched_component * impl_component = starpu_sched_component_best_implementation_create(t, NULL);
 
 

+ 1 - 1
src/sched_policies/modular_heft_prio.c

@@ -140,7 +140,7 @@ static void initialize_heft_prio_policy(unsigned sched_ctx_id)
 
 
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * impl_component = starpu_sched_component_best_implementation_create(t, NULL);
 		struct starpu_sched_component * impl_component = starpu_sched_component_best_implementation_create(t, NULL);
 
 
 		starpu_sched_component_connect(eagers[starpu_worker_get_memory_node(i)], impl_component);
 		starpu_sched_component_connect(eagers[starpu_worker_get_memory_node(i)], impl_component);

+ 1 - 1
src/sched_policies/modular_prio.c

@@ -30,7 +30,7 @@ void starpu_initialize_prio_center_policy(unsigned sched_ctx_id)
 
 
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
-		starpu_sched_component_connect(eager_component, starpu_sched_component_worker_get(sched_ctx_id, i));
+		starpu_sched_component_connect(eager_component, starpu_sched_component_worker_new(sched_ctx_id, i));
 
 
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);

+ 1 - 1
src/sched_policies/modular_prio_prefetching.c

@@ -40,7 +40,7 @@ static void initialize_prio_prefetching_center_policy(unsigned sched_ctx_id)
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 
 
 		starpu_sched_component_connect(prio_component, worker_component);
 		starpu_sched_component_connect(prio_component, worker_component);

+ 2 - 2
src/sched_policies/modular_random.c

@@ -33,7 +33,7 @@ static void initialize_random_fifo_center_policy(unsigned sched_ctx_id)
 
 
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
-		starpu_sched_component_connect(random_component, starpu_sched_component_worker_get(sched_ctx_id, i));
+		starpu_sched_component_connect(random_component, starpu_sched_component_worker_new(sched_ctx_id, i));
 
 
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
@@ -76,7 +76,7 @@ static void initialize_random_prio_center_policy(unsigned sched_ctx_id)
 
 
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
-		starpu_sched_component_connect(random_component, starpu_sched_component_worker_get(sched_ctx_id, i));
+		starpu_sched_component_connect(random_component, starpu_sched_component_worker_new(sched_ctx_id, i));
 
 
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);

+ 2 - 2
src/sched_policies/modular_random_prefetching.c

@@ -43,7 +43,7 @@ static void initialize_random_fifo_prefetching_center_policy(unsigned sched_ctx_
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * fifo_component = starpu_sched_component_fifo_create(t, &fifo_data);
 		struct starpu_sched_component * fifo_component = starpu_sched_component_fifo_create(t, &fifo_data);
 
 
 		starpu_sched_component_connect(fifo_component, worker_component);
 		starpu_sched_component_connect(fifo_component, worker_component);
@@ -97,7 +97,7 @@ static void initialize_random_prio_prefetching_center_policy(unsigned sched_ctx_
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	{
 	{
-		struct starpu_sched_component * worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component * worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 		struct starpu_sched_component * prio_component = starpu_sched_component_prio_create(t, &prio_data);
 
 
 		starpu_sched_component_connect(prio_component, worker_component);
 		starpu_sched_component_connect(prio_component, worker_component);

+ 1 - 1
src/sched_policies/modular_ws.c

@@ -28,7 +28,7 @@ static void initialize_ws_center_policy(unsigned sched_ctx_id)
 
 
 	unsigned i;
 	unsigned i;
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count() + starpu_combined_worker_get_count(); i++)
-		starpu_sched_component_connect(t->root, starpu_sched_component_worker_get(sched_ctx_id, i));
+		starpu_sched_component_connect(t->root, starpu_sched_component_worker_new(sched_ctx_id, i));
 
 
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_tree_update_workers(t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);
 	starpu_sched_ctx_set_policy_data(sched_ctx_id, (void*)t);

+ 1 - 1
src/sched_policies/scheduler_maker.c

@@ -257,7 +257,7 @@ struct starpu_sched_tree * starpu_sched_component_make_scheduler(unsigned sched_
 	for(i = 0; i < starpu_worker_get_count(); i++)
 	for(i = 0; i < starpu_worker_get_count(); i++)
 	{
 	{
 		struct _starpu_worker *worker = _starpu_get_worker_struct(i);
 		struct _starpu_worker *worker = _starpu_get_worker_struct(i);
-		struct starpu_sched_component *worker_component = starpu_sched_component_worker_get(sched_ctx_id, i);
+		struct starpu_sched_component *worker_component = starpu_sched_component_worker_new(sched_ctx_id, i);
 		STARPU_ASSERT(worker);
 		STARPU_ASSERT(worker);
 		set_worker_leaf(tree->root,worker_component, sched_ctx_id, specs);
 		set_worker_leaf(tree->root,worker_component, sched_ctx_id, specs);
 	}
 	}