소스 검색

starpu_shutdown fix (left contexts not deleted caused shutdown to have pbs)

Andra Hugo 12 년 전
부모
커밋
4be171f0e6
2개의 변경된 파일3개의 추가작업 그리고 8개의 파일을 삭제
  1. 0 2
      examples/sched_ctx/sched_ctx.c
  2. 3 6
      src/core/sched_ctx.c

+ 0 - 2
examples/sched_ctx/sched_ctx.c

@@ -97,7 +97,6 @@ int main(int argc, char **argv)
 	   in order to allow moving resources from this context to the inheritor one
 	   in order to allow moving resources from this context to the inheritor one
 	   when its corresponding tasks finished executing */
 	   when its corresponding tasks finished executing */
 
 
-#warning TODO: to be fixed
 	starpu_sched_ctx_finished_submit(sched_ctx1);
 	starpu_sched_ctx_finished_submit(sched_ctx1);
 
 
 	for (i = 0; i < ntasks/2; i++)
 	for (i = 0; i < ntasks/2; i++)
@@ -112,7 +111,6 @@ int main(int argc, char **argv)
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 	}
 
 
-#warning TODO: to be fixed
 	starpu_sched_ctx_finished_submit(sched_ctx2);
 	starpu_sched_ctx_finished_submit(sched_ctx2);
 
 
 	/* wait for all tasks at the end*/
 	/* wait for all tasks at the end*/

+ 3 - 6
src/core/sched_ctx.c

@@ -504,12 +504,9 @@ void _starpu_delete_all_sched_ctxs()
 		_STARPU_PTHREAD_MUTEX_LOCK(&changing_ctx_mutex[i]);
 		_STARPU_PTHREAD_MUTEX_LOCK(&changing_ctx_mutex[i]);
 		if(sched_ctx->id != STARPU_NMAX_SCHED_CTXS)
 		if(sched_ctx->id != STARPU_NMAX_SCHED_CTXS)
 		{
 		{
-			if(!_starpu_wait_for_all_tasks_of_sched_ctx(sched_ctx->id) && !_starpu_wait_for_all_tasks_of_sched_ctx(0))
-			{
-				_starpu_sched_ctx_free_scheduling_data(sched_ctx);
-				_starpu_barrier_counter_destroy(&sched_ctx->tasks_barrier);
-				_starpu_delete_sched_ctx(sched_ctx);
-			}
+			_starpu_sched_ctx_free_scheduling_data(sched_ctx);
+			_starpu_barrier_counter_destroy(&sched_ctx->tasks_barrier);
+			_starpu_delete_sched_ctx(sched_ctx);
 		}
 		}
 		_STARPU_PTHREAD_MUTEX_UNLOCK(&changing_ctx_mutex[i]);
 		_STARPU_PTHREAD_MUTEX_UNLOCK(&changing_ctx_mutex[i]);