Browse Source

Get rid of the conversion_model.

Cyril Roelandt 14 years ago
parent
commit
f7a20a3af5

+ 0 - 6
examples/basic_examples/multiformat.c

@@ -68,11 +68,6 @@ extern void multiformat_scal_cuda_func(void *buffers[], void *arg);
 extern void multiformat_scal_opencl_func(void *buffers[], void *arg);
 #endif
 
-static struct starpu_perfmodel conversion_model = {
-	.type = STARPU_HISTORY_BASED,
-	.symbol = "multiformat_conversion_model"
-};
-
 static struct starpu_codelet  cl = {
 	.where = STARPU_CUDA | STARPU_OPENCL,
 	.cpu_func = multiformat_scal_cpu_func,
@@ -83,7 +78,6 @@ static struct starpu_codelet  cl = {
 	.opencl_func = multiformat_scal_opencl_func,
 #endif
 	.nbuffers = 1,
-	.conversion_model = &conversion_model
 };
 
 /*

+ 0 - 1
include/starpu_data_interfaces.h

@@ -363,7 +363,6 @@ struct starpu_multiformat_interface
 	size_t offset;
 	uint32_t nx;
 	struct starpu_multiformat_data_interface_ops *ops;
-	double conversion_time;
 };
 
 void starpu_multiformat_data_register(starpu_data_handle_t *handle,

+ 0 - 3
include/starpu_task.h

@@ -103,9 +103,6 @@ struct starpu_codelet
 	 * In the case of parallel codelets, accounts for all units. */
 	struct starpu_perfmodel *power_model;
 
-	/* Conversion model of the codelet */
-	struct starpu_perfmodel *conversion_model;
-
 	/* statistics collected at runtime: this is filled by StarPU and should
 	 * not be accessed directly (use the starpu_display_codelet_stats
 	 * function instead for instance). */

+ 8 - 1
src/core/perfmodel/perfmodel.c

@@ -207,7 +207,14 @@ double starpu_task_expected_power(struct starpu_task *task, enum starpu_perf_arc
 
 double starpu_task_expected_conversion_time(struct starpu_task *task, enum starpu_perf_archtype arch, unsigned nimpl)
 {
-	return starpu_model_expected_perf(task, task->cl->conversion_model, arch, nimpl);
+	/* XXX : 
+	   sum = 0.0;
+	   For each multiformat handle that needs a conversion task :
+		sum += length of the conversion task
+	   return sum;
+	*/
+	return 0;
+	//return starpu_model_expected_perf(task, task->cl->conversion_model, arch, nimpl);
 }
 
 /* Predict the transfer time (in µs) to move a handle to a memory node */

+ 0 - 28
src/core/task.c

@@ -276,9 +276,6 @@ int starpu_task_submit(struct starpu_task *task)
 
 		if (task->cl->power_model)
 			_starpu_load_perfmodel(task->cl->power_model);
-
-		if (task->cl->conversion_model)
-			_starpu_load_perfmodel(task->cl->conversion_model);
 	}
 
 	/* If profiling is activated, we allocate a structure to store the
@@ -437,31 +434,6 @@ void _starpu_set_current_task(struct starpu_task *task)
 	pthread_setspecific(current_task_key, task);
 }
 
-double _starpu_task_get_conversion_time(struct starpu_task *task)
-{
-	int i;
-	double conversion_time = 0.0;
-
-	for (i = 0; i < task->cl->nbuffers; i++)
-	{
-		starpu_data_handle_t handle = task->buffers[i].handle;
-		enum starpu_data_interface_id id = starpu_get_handle_interface_id(handle);
-		if (id == STARPU_MULTIFORMAT_INTERFACE_ID)
-		{
-			struct starpu_multiformat_interface *tmp;
-			uint32_t node = starpu_worker_get_memory_node(task->workerid);
-			tmp = starpu_data_get_interface_on_node(handle, node);
-			conversion_time += tmp->conversion_time;
-			/* XXX : this may not be the right place to reset this field,
-			 * but we need to make sure the conversion time won't be counted
-                         * twice */
-			tmp->conversion_time = 0;
-		}
-	}
-
-	return conversion_time;
-}
-
 /*
  * Returns 0 if tasks does not use any multiformat handle, 1 otherwise.
  */

+ 0 - 1
src/datawizard/interfaces/multiformat_interface.c

@@ -157,7 +157,6 @@ static void register_multiformat_handle(starpu_data_handle_t handle, uint32_t ho
 		}
 		local_interface->nx = multiformat_interface->nx;
 		local_interface->ops = multiformat_interface->ops;
-		local_interface->conversion_time = 0;
 	}
 }
 

+ 1 - 1
src/drivers/cpu/driver_cpu.c

@@ -79,7 +79,7 @@ static int execute_job_on_cpu(struct _starpu_job *j, struct _starpu_worker *cpu_
 	if (rank == 0)
 	{
 		_starpu_driver_update_job_feedback(j, cpu_args,
-				perf_arch, &codelet_start, &codelet_end, 0);
+				perf_arch, &codelet_start, &codelet_end);
 		_starpu_push_task_output(task, 0);
 	}
 

+ 1 - 5
src/drivers/cuda/driver_cuda.c

@@ -26,9 +26,6 @@
 #include "driver_cuda.h"
 #include <core/sched_policy.h>
 
-
-double _starpu_task_get_conversion_time(struct starpu_task *task);
-
 /* the number of CUDA devices */
 static int ncudagpus;
 
@@ -204,7 +201,6 @@ static int execute_job_on_cuda(struct _starpu_job *j, struct _starpu_worker *arg
 		return -EAGAIN;
 	}
 
-	double conversion_time = _starpu_task_get_conversion_time(task);
 	if (calibrate_model)
 	{
 		cures = cudaStreamSynchronize(starpu_cuda_get_local_transfer_stream());
@@ -237,7 +233,7 @@ static int execute_job_on_cuda(struct _starpu_job *j, struct _starpu_worker *arg
 
 	_starpu_driver_end_job(args, j, &codelet_end, 0);
 
-	_starpu_driver_update_job_feedback(j, args, args->perf_arch, &codelet_start, &codelet_end, conversion_time);
+	_starpu_driver_update_job_feedback(j, args, args->perf_arch, &codelet_start, &codelet_end);
 
 	_starpu_push_task_output(task, mask);
 

+ 1 - 8
src/drivers/driver_common/driver_common.c

@@ -89,7 +89,7 @@ void _starpu_driver_end_job(struct _starpu_worker *args, struct _starpu_job *j,
 }
 void _starpu_driver_update_job_feedback(struct _starpu_job *j, struct _starpu_worker *worker_args,
 					enum starpu_perf_archtype perf_arch,
-					struct timespec *codelet_start, struct timespec *codelet_end, double conversion_time)
+					struct timespec *codelet_start, struct timespec *codelet_end)
 {
 	struct starpu_task_profiling_info *profiling_info = j->task->profiling_info;
 	struct timespec measured_ts;
@@ -136,13 +136,6 @@ void _starpu_driver_update_job_feedback(struct _starpu_job *j, struct _starpu_wo
 	{
 		_starpu_update_perfmodel_history(j, j->task->cl->power_model,  perf_arch, worker_args->devid, profiling_info->power_consumed,j->nimpl);
 	}
-
-	if (j->task->cl->conversion_model)
-	{
-		_starpu_update_perfmodel_history(j, j->task->cl->conversion_model, perf_arch,
-						 worker_args->devid, conversion_time, j->nimpl);
-	}
-
 }
 
 /* Workers may block when there is no work to do at all. We assume that the

+ 1 - 1
src/drivers/driver_common/driver_common.h

@@ -29,7 +29,7 @@ void _starpu_driver_end_job(struct _starpu_worker *args, struct _starpu_job *j,
 			    struct timespec *codelet_end, int rank);
 void _starpu_driver_update_job_feedback(struct _starpu_job *j, struct _starpu_worker *worker_args,
 					enum starpu_perf_archtype perf_arch,
-					struct timespec *codelet_start, struct timespec *codelet_end, double);
+					struct timespec *codelet_start, struct timespec *codelet_end);
 
 void _starpu_block_worker(int workerid, pthread_cond_t *cond, pthread_mutex_t *mutex);
 

+ 1 - 4
src/drivers/opencl/driver_opencl.c

@@ -28,8 +28,6 @@
 #include "driver_opencl_utils.h"
 #include <common/utils.h>
 
-double _starpu_task_get_conversion_time(struct starpu_task *task);
-
 static pthread_mutex_t big_lock = PTHREAD_MUTEX_INITIALIZER;
 
 static cl_context contexts[STARPU_MAXOPENCLDEVS];
@@ -592,7 +590,6 @@ static int _starpu_opencl_execute_job(struct _starpu_job *j, struct _starpu_work
 		 * codelet back, and try it later */
 		return -EAGAIN;
 	}
-	double conversion_time = _starpu_task_get_conversion_time(task);
 
 	_starpu_driver_start_job(args, j, &codelet_start, 0);
 
@@ -613,7 +610,7 @@ static int _starpu_opencl_execute_job(struct _starpu_job *j, struct _starpu_work
 	_starpu_driver_end_job(args, j, &codelet_end, 0);
 
 	_starpu_driver_update_job_feedback(j, args, args->perf_arch,
-							&codelet_start, &codelet_end, conversion_time);
+							&codelet_start, &codelet_end);
 
 	_starpu_push_task_output(task, mask);
 

+ 0 - 1
src/sched_policies/heft.c

@@ -299,7 +299,6 @@ static void compute_all_performance_predictions(struct starpu_task *task,
 				local_task_length[worker][nimpl] = starpu_task_expected_length(task, perf_arch, nimpl);
 				local_data_penalty[worker][nimpl] = starpu_task_expected_data_transfer_time(memory_node, task);
 				local_power[worker][nimpl] = starpu_task_expected_power(task, perf_arch,nimpl);
-
 				double conversion_time = starpu_task_expected_conversion_time(task, perf_arch, nimpl);
 				if (conversion_time > 0.0)
 					local_task_length[worker][nimpl] += conversion_time;