Ver código fonte

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

Samuel Thibault 9 anos atrás
pai
commit
4c91b21b7c

+ 2 - 0
src/core/sched_policy.c

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

+ 2 - 1
src/datawizard/coherency.c

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