ソースを参照

Document and warn that StarPU is not energy-efficient without --enable-blocking-drivers

Samuel Thibault 4 年 前
コミット
d299befd02

+ 5 - 0
doc/doxygen/chapters/320_scheduling.doxy

@@ -185,6 +185,11 @@ already gives the good results that a precise estimation would give.
 
 \section Energy-basedScheduling Energy-based Scheduling
 
+Note: by default StarPU does not let CPU workers sleep, to let them react to
+task release as quickly as possible. For idle time to really let CPU cores save
+energy, one needs to use the \ref enable-blocking-drivers
+"--enable-blocking-drivers" configuration option.
+
 If the application can provide some energy consumption performance model (through
 the field starpu_codelet::energy_model), StarPU will
 take it into account when distributing tasks. The target function that

+ 4 - 0
src/sched_policies/deque_modeling_policy_data_aware.c

@@ -1015,6 +1015,10 @@ static void initialize_dmda_policy(unsigned sched_ctx_id)
 	dt->alpha = starpu_get_env_float_default("STARPU_SCHED_ALPHA", _STARPU_SCHED_ALPHA_DEFAULT);
 	dt->beta = starpu_get_env_float_default("STARPU_SCHED_BETA", _STARPU_SCHED_BETA_DEFAULT);
 	/* data->_gamma: cost of one Joule in us. If gamma is set to 10^6, then one Joule cost 1s */
+#ifdef STARPU_NON_BLOCKING_DRIVERS
+	if (getenv("STARPU_SCHED_GAMMA"))
+		_STARPU_DISP("Warning: STARPU_SCHED_GAMMA was used, but --enable-blocking-drivers configuration was not set, CPU cores will not actually be sleeping\n");
+#endif
 	dt->_gamma = starpu_get_env_float_default("STARPU_SCHED_GAMMA", _STARPU_SCHED_GAMMA_DEFAULT);
 	/* data->idle_power: Idle power of the whole machine in Watt */
 	dt->idle_power = starpu_get_env_float_default("STARPU_IDLE_POWER", 0.0);

+ 4 - 0
src/sched_policies/helper_mct.c

@@ -46,6 +46,10 @@ struct _starpu_mct_data *starpu_mct_init_parameters(struct starpu_sched_componen
 	{
 		data->alpha = starpu_get_env_float_default("STARPU_SCHED_ALPHA", _STARPU_SCHED_ALPHA_DEFAULT);
 		data->beta = starpu_get_env_float_default("STARPU_SCHED_BETA", _STARPU_SCHED_BETA_DEFAULT);
+#ifdef STARPU_NON_BLOCKING_DRIVERS
+		if (getenv("STARPU_SCHED_GAMMA"))
+			_STARPU_DISP("Warning: STARPU_SCHED_GAMMA was used, but --enable-blocking-drivers configuration was not set, CPU cores will not actually be sleeping\n");
+#endif
 		data->_gamma = starpu_get_env_float_default("STARPU_SCHED_GAMMA", _STARPU_SCHED_GAMMA_DEFAULT);
 		data->idle_power = starpu_get_env_float_default("STARPU_IDLE_POWER", 0.0);
 	}

+ 4 - 0
src/sched_policies/parallel_heft.c

@@ -567,6 +567,10 @@ static void initialize_parallel_heft_policy(unsigned sched_ctx_id)
 
 	hd->alpha = starpu_get_env_float_default("STARPU_SCHED_ALPHA", _STARPU_SCHED_ALPHA_DEFAULT);
 	hd->beta = starpu_get_env_float_default("STARPU_SCHED_BETA", _STARPU_SCHED_BETA_DEFAULT);
+#ifdef STARPU_NON_BLOCKING_DRIVERS
+	if (getenv("STARPU_SCHED_GAMMA"))
+		_STARPU_DISP("Warning: STARPU_SCHED_GAMMA was used, but --enable-blocking-drivers configuration was not set, CPU cores will not actually be sleeping\n");
+#endif
 	hd->_gamma = starpu_get_env_float_default("STARPU_SCHED_GAMMA", _STARPU_SCHED_GAMMA_DEFAULT);
 	hd->idle_power = starpu_get_env_float_default("STARPU_IDLE_POWER", 0.0);