소스 검색

remove worker_lock in no_relax form

Olivier Aumage 8 년 전
부모
커밋
5b60ff3a77
3개의 변경된 파일4개의 추가작업 그리고 18개의 파일을 삭제
  1. 3 3
      src/core/sched_ctx.c
  2. 1 1
      src/core/workers.c
  3. 0 14
      src/core/workers.h

+ 3 - 3
src/core/sched_ctx.c

@@ -2308,7 +2308,7 @@ void starpu_sched_ctx_list_task_counters_decrement_all_ctx_locked(struct starpu_
 			struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);
 			if (worker->nsched_ctxs > 1)
 			{
-				_starpu_worker_lock_for_observation_no_relax(workerid);
+				_starpu_worker_lock_for_observation_relax(workerid);
 				starpu_sched_ctx_list_task_counters_decrement(sched_ctx_id, workerid);
 				_starpu_worker_unlock_for_observation(workerid);
 			}
@@ -2330,7 +2330,7 @@ void starpu_sched_ctx_list_task_counters_decrement_all(struct starpu_task *task,
 			struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);
 			if (worker->nsched_ctxs > 1)
 			{
-				_starpu_worker_lock_for_observation_no_relax(workerid);
+				_starpu_worker_lock_for_observation_relax(workerid);
 				starpu_sched_ctx_list_task_counters_decrement(sched_ctx_id, workerid);
 				_starpu_worker_unlock_for_observation(workerid);
 			}
@@ -2353,7 +2353,7 @@ void starpu_sched_ctx_list_task_counters_reset_all(struct starpu_task *task, uns
 			struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);
 			if (worker->nsched_ctxs > 1)
 			{
-				_starpu_worker_lock_for_observation_no_relax(workerid);
+				_starpu_worker_lock_for_observation_relax(workerid);
 				starpu_sched_ctx_list_task_counters_reset(sched_ctx_id, workerid);
 				_starpu_worker_unlock_for_observation(workerid);
 			}

+ 1 - 1
src/core/workers.c

@@ -1726,7 +1726,7 @@ unsigned starpu_worker_is_blocked_in_parallel(int workerid)
 
 unsigned starpu_worker_is_slave_somewhere(int workerid)
 {
-	_starpu_worker_lock_for_observation_no_relax(workerid);
+	_starpu_worker_lock_for_observation_relax(workerid);
 	unsigned ret = _starpu_config.workers[workerid].is_slave_somewhere;
 	_starpu_worker_unlock_for_observation(workerid);
 	return ret;

+ 0 - 14
src/core/workers.h

@@ -865,20 +865,6 @@ static inline void _starpu_worker_lock_for_observation_relax(int workerid)
 	}
 }
 
-static inline void _starpu_worker_lock_for_observation_no_relax(int workerid)
-{
-	struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);
-	STARPU_ASSERT(worker != NULL);
-	STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->sched_mutex);
-	if (workerid != starpu_worker_get_id())
-	{
-		while (!worker->state_safe_for_observation)
-		{
-			STARPU_PTHREAD_COND_WAIT(&worker->sched_cond, &worker->sched_mutex);
-		}
-	}
-}
-
 static inline int _starpu_worker_trylock_for_observation(int workerid)
 {
 	struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);