浏览代码

'nowhere' tasks may get completed in the main thread, so we have to deal with it

Samuel Thibault 9 年之前
父节点
当前提交
7c48d12020
共有 2 个文件被更改,包括 3 次插入1 次删除
  1. 1 1
      src/core/jobs.c
  2. 2 0
      src/core/sched_ctx.c

+ 1 - 1
src/core/jobs.c

@@ -432,7 +432,7 @@ void _starpu_handle_job_termination(struct _starpu_job *j)
 	{
 		_starpu_sched_post_exec_hook(task);
 #ifdef STARPU_USE_SC_HYPERVISOR
-		int workerid = starpu_worker_get_id_check();
+		int workerid = starpu_worker_get_id();
 		_starpu_sched_ctx_post_exec_task_cb(workerid, task, data_size, j->footprint);
 #endif //STARPU_USE_SC_HYPERVISOR
 

+ 2 - 0
src/core/sched_ctx.c

@@ -1765,6 +1765,8 @@ void starpu_sched_ctx_finished_submit(unsigned sched_ctx_id)
 
 void _starpu_sched_ctx_post_exec_task_cb(int workerid, struct starpu_task *task, size_t data_size2, uint32_t footprint)
 {
+	if (workerid < 0)
+		return;
 	struct _starpu_sched_ctx *sched_ctx = _starpu_get_sched_ctx_struct(task->sched_ctx);
 	if(sched_ctx != NULL && task->sched_ctx != _starpu_get_initial_sched_ctx()->id &&
 	   task->sched_ctx != STARPU_NMAX_SCHED_CTXS  && sched_ctx->perf_counters != NULL)