소스 검색

Fix nowhere support without fetching data on a node: we still need to call __starpu_push_task_output

Samuel Thibault 9 년 전
부모
커밋
4c91b21b7c
3개의 변경된 파일6개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 0
      src/core/sched_policy.c
  2. 2 1
      src/datawizard/coherency.c
  3. 2 0
      src/datawizard/coherency.h

+ 2 - 0
src/core/sched_policy.c

@@ -416,6 +416,8 @@ int _starpu_repush_task(struct _starpu_job *j)
 		}
 		else
 		{
+			if (task->cl)
+				__starpu_push_task_output(j);
 			_starpu_handle_job_termination(j);
 			_STARPU_LOG_OUT_TAG("handle_job_termination");
 		}

+ 2 - 1
src/datawizard/coherency.c

@@ -921,7 +921,7 @@ enomem:
 }
 
 /* Release task data dependencies */
-static void __starpu_push_task_output(struct _starpu_job *j)
+void __starpu_push_task_output(struct _starpu_job *j)
 {
 #ifdef STARPU_OPENMP
 	STARPU_ASSERT(!j->continuation);
@@ -1018,6 +1018,7 @@ void _starpu_fetch_nowhere_task_input(struct _starpu_job *j)
 	if (!nfetchbuffers)
 	{
 		/* Nothing to fetch actually, already finished! */
+		__starpu_push_task_output(j);
 		_starpu_handle_job_termination(j);
 		_STARPU_LOG_OUT_TAG("handle_job_termination");
 		return;

+ 2 - 0
src/datawizard/coherency.h

@@ -279,6 +279,8 @@ size_t _starpu_data_get_size(starpu_data_handle_t handle);
 
 uint32_t _starpu_data_get_footprint(starpu_data_handle_t handle);
 
+void __starpu_push_task_output(struct _starpu_job *j);
+/* Version with driver trace */
 void _starpu_push_task_output(struct _starpu_job *j);
 
 void _starpu_release_nowhere_task_output(struct _starpu_job *j);