Browse Source

Add flag STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP for some modular scheduler

Adrien Guilbaud 5 years ago
parent
commit
1bec0aa827

+ 5 - 0
include/starpu_sched_component.h

@@ -779,6 +779,11 @@ struct starpu_sched_tree *starpu_sched_component_make_scheduler(unsigned sched_c
 #define STARPU_SCHED_SIMPLE_COMBINED_WORKERS	(1<<12)
 #define STARPU_SCHED_SIMPLE_COMBINED_WORKERS	(1<<12)
 
 
 /**
 /**
+   Request that the fifos below keep track of expected duration, start and end time of theirs elements
+*/
+#define STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP	(1<<13)
+
+/**
    Create a simple modular scheduler tree around a scheduling decision-making
    Create a simple modular scheduler tree around a scheduling decision-making
    component \p component. The details of what should be built around \p component
    component \p component. The details of what should be built around \p component
    is described by \p flags. The different STARPU_SCHED_SIMPL_DECIDE_* flags are
    is described by \p flags. The different STARPU_SCHED_SIMPL_DECIDE_* flags are

+ 4 - 2
src/sched_policies/modular_ez.c

@@ -276,12 +276,14 @@ void starpu_sched_component_initialize_simple_schedulers(unsigned sched_ctx_id,
 
 
 		int ready = starpu_get_env_number_default("STARPU_SCHED_READY", flags & STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY ? 1 : 0);
 		int ready = starpu_get_env_number_default("STARPU_SCHED_READY", flags & STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY ? 1 : 0);
 
 
+		int exp = flags & STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP ? 1 : 0;
+
 		struct starpu_sched_component_prio_data prio_data =
 		struct starpu_sched_component_prio_data prio_data =
 			{
 			{
 				.ntasks_threshold = ntasks_threshold,
 				.ntasks_threshold = ntasks_threshold,
 				.exp_len_threshold = exp_len_threshold,
 				.exp_len_threshold = exp_len_threshold,
 				.ready = ready,
 				.ready = ready,
-				.exp = 1,
+				.exp = exp,
 			};
 			};
 
 
 		struct starpu_sched_component_fifo_data fifo_data =
 		struct starpu_sched_component_fifo_data fifo_data =
@@ -289,7 +291,7 @@ void starpu_sched_component_initialize_simple_schedulers(unsigned sched_ctx_id,
 				.ntasks_threshold = ntasks_threshold,
 				.ntasks_threshold = ntasks_threshold,
 				.exp_len_threshold = exp_len_threshold,
 				.exp_len_threshold = exp_len_threshold,
 				.ready = ready,
 				.ready = ready,
-				.exp = 1,
+				.exp = exp,
 			};
 			};
 
 
 		/* Create one fifo+eager component pair per choice, below scheduling decision */
 		/* Create one fifo+eager component pair per choice, below scheduling decision */

+ 1 - 0
src/sched_policies/modular_gemm.c

@@ -174,6 +174,7 @@ static void initialize_gemm_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFO_ABOVE_PRIO |
 			STARPU_SCHED_SIMPLE_FIFO_ABOVE_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 }
 
 

+ 1 - 0
src/sched_policies/modular_heft.c

@@ -57,6 +57,7 @@ static void initialize_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 }
 
 

+ 1 - 0
src/sched_policies/modular_heft2.c

@@ -57,6 +57,7 @@ static void initialize_heft2_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 }
 
 

+ 1 - 0
src/sched_policies/modular_heft_prio.c

@@ -58,6 +58,7 @@ static void initialize_heft_prio_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 }
 
 

+ 1 - 0
src/sched_policies/modular_heteroprio.c

@@ -30,6 +30,7 @@ static void initialize_heteroprio_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 }
 
 

+ 2 - 0
src/sched_policies/modular_heteroprio_heft.c

@@ -31,6 +31,7 @@ static void initialize_heteroprio_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_DECIDE_WORKERS |
 			STARPU_SCHED_SIMPLE_DECIDE_WORKERS |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL,
 			STARPU_SCHED_SIMPLE_IMPL,
 			(starpu_sched_component_create_t) starpu_sched_component_heft_create, NULL,
 			(starpu_sched_component_create_t) starpu_sched_component_heft_create, NULL,
 			STARPU_SCHED_SIMPLE_DECIDE_WORKERS |
 			STARPU_SCHED_SIMPLE_DECIDE_WORKERS |
@@ -39,6 +40,7 @@ static void initialize_heteroprio_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL);
 			STARPU_SCHED_SIMPLE_IMPL);
 }
 }
 
 

+ 1 - 0
src/sched_policies/modular_parallel_heft.c

@@ -61,6 +61,7 @@ static void initialize_parallel_heft_center_policy(unsigned sched_ctx_id)
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
 			STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY |
+			STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP |
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 			STARPU_SCHED_SIMPLE_IMPL, sched_ctx_id);
 }
 }