Browse Source

modifs on the mamagement of the codlet of update_workers (sched_ctx)

Andra Hugo 14 years ago
parent
commit
0861a82220
5 changed files with 13 additions and 41 deletions
  1. 3 1
      src/core/jobs.c
  2. 5 10
      src/core/sched_ctx.c
  3. 3 0
      src/core/sched_ctx.h
  4. 1 15
      src/drivers/cuda/driver_cuda.c
  5. 1 15
      src/drivers/opencl/driver_opencl.c

+ 3 - 1
src/core/jobs.c

@@ -190,7 +190,9 @@ void _starpu_handle_job_termination(starpu_job_t j, unsigned job_is_already_lock
 			starpu_clock_gettime(&task->profiling_info->callback_end_time);
 	}
 
-	_starpu_sched_post_exec_hook(task);
+	/* control task should not execute post_exec_hook */
+	if(task->cl != NULL)
+		_starpu_sched_post_exec_hook(task);
 
 	STARPU_TRACE_TASK_DONE(j);
 

+ 5 - 10
src/core/sched_ctx.c

@@ -62,11 +62,11 @@ static void _starpu_update_workers(int *workerids_in_ctx, int nworkerids_in_ctx,
 	struct starpu_task *tasks[nworkerids_in_ctx];
 
 	struct starpu_codelet_t sched_ctx_info_cl = {
-	  .where = STARPU_CPU|STARPU_CUDA|STARPU_OPENCL,
-	  .cuda_func = update_workers_func,
-	  .cpu_func = update_workers_func,
-	  .opencl_func = update_workers_func,
-	  .nbuffers = 0
+		.where = STARPU_CPU|STARPU_CUDA|STARPU_OPENCL,
+		.cuda_func = update_workers_func,
+		.cpu_func = update_workers_func,
+		.opencl_func = update_workers_func,
+		.nbuffers = 0
 	};
 
 	int i, ret;
@@ -91,11 +91,6 @@ static void _starpu_update_workers(int *workerids_in_ctx, int nworkerids_in_ctx,
 		tasks[i]->detach = 0;
 		tasks[i]->destroy = 0;
 
-#ifdef STARPU_USE_FXT
-                starpu_job_t job = _starpu_get_job_associated_to_task(tasks[i]);
-                job->model_name = "sched_ctx_info";
-#endif
-
 		_starpu_exclude_task_from_dag(tasks[i]);
 
 		ret = _starpu_task_submit_internal(tasks[i]);

+ 3 - 0
src/core/sched_ctx.h

@@ -62,6 +62,9 @@ struct starpu_sched_ctx {
 };
 
 struct starpu_machine_config_s;
+
+struct callback_list callback_lists[STARPU_NMAXWORKERS];
+
 /* init sched_ctx_id of all contextes*/
 void _starpu_init_all_sched_ctx(struct starpu_machine_config_s *config);
 

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

@@ -312,21 +312,7 @@ void *_starpu_cuda_worker(void *arg)
 
 		_starpu_set_current_task(task);
 
-		if(j && j->model_name && strcmp(j->model_name, "sched_ctx_info") == 0)
-		  {
-			struct starpu_task *task = j->task;
-			STARPU_ASSERT(task);
-			struct starpu_codelet_t *cl = task->cl;
-			STARPU_ASSERT(cl);
-
-			cl_func func = cl->cuda_func;
-			STARPU_ASSERT(func);
-			func(task->interfaces, task->cl_arg);
-		  }
-		else
-		  {
-		    res = execute_job_on_cuda(j, args);
-		  }
+		res = execute_job_on_cuda(j, args);
 
 
 		_starpu_set_current_task(NULL);

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

@@ -462,21 +462,7 @@ void *_starpu_opencl_worker(void *arg)
 
 		_starpu_set_current_task(j->task);
 
-		if(j && j->model_name && strcmp(j->model_name, "sched_ctx_info") == 0)
-		{
-                        struct starpu_task *task = j->task;
-                        STARPU_ASSERT(task);
-                        struct starpu_codelet_t *cl = task->cl;
-                        STARPU_ASSERT(cl);
-
-                        cl_func func = cl->cuda_func;
-			STARPU_ASSERT(func);
-			func(task->interfaces, task->cl_arg);
-		}
-                else
-		{
-			res = _starpu_opencl_execute_job(j, args);
-		}
+		res = _starpu_opencl_execute_job(j, args);