Quellcode durchsuchen

Unblock sleeping workers in the simgrid case

Samuel Thibault vor 7 Jahren
Ursprung
Commit
5b5a86b15c
1 geänderte Dateien mit 7 neuen und 0 gelöschten Zeilen
  1. 7 0
      src/core/workers.h

+ 7 - 0
src/core/workers.h

@@ -34,6 +34,7 @@
 #include <core/errorcheck.h>
 #include <core/errorcheck.h>
 #include <core/sched_ctx.h>
 #include <core/sched_ctx.h>
 #include <core/sched_ctx_list.h>
 #include <core/sched_ctx_list.h>
+#include <core/simgrid.h>
 #ifdef STARPU_HAVE_HWLOC
 #ifdef STARPU_HAVE_HWLOC
 #include <hwloc.h>
 #include <hwloc.h>
 #endif
 #endif
@@ -678,6 +679,9 @@ static inline void _starpu_worker_request_blocking_in_parallel(struct _starpu_wo
 		/* trigger the block_in_parallel_req */
 		/* trigger the block_in_parallel_req */
 		worker->state_block_in_parallel_req = 1;
 		worker->state_block_in_parallel_req = 1;
 		STARPU_PTHREAD_COND_BROADCAST(&worker->sched_cond);
 		STARPU_PTHREAD_COND_BROADCAST(&worker->sched_cond);
+#ifdef STARPU_SIMGRID
+		starpu_pthread_queue_broadcast(&_starpu_simgrid_task_queue[worker->workerid]);
+#endif
 
 
 		/* wait for block_in_parallel_req to be processed */
 		/* wait for block_in_parallel_req to be processed */
 		while (!worker->state_block_in_parallel_ack)
 		while (!worker->state_block_in_parallel_ack)
@@ -916,6 +920,9 @@ static inline void _starpu_worker_enter_changing_ctx_op(struct _starpu_worker *
 
 
 		/* wait for sched_op completion */
 		/* wait for sched_op completion */
 		STARPU_PTHREAD_COND_BROADCAST(&worker->sched_cond);
 		STARPU_PTHREAD_COND_BROADCAST(&worker->sched_cond);
+#ifdef STARPU_SIMGRID
+		starpu_pthread_queue_broadcast(&_starpu_simgrid_task_queue[worker->workerid]);
+#endif
 		do
 		do
 		{
 		{
 			STARPU_PTHREAD_COND_WAIT(&worker->sched_cond, &worker->sched_mutex);
 			STARPU_PTHREAD_COND_WAIT(&worker->sched_cond, &worker->sched_mutex);