Преглед изворни кода

Use starpu semaphores instead of hardcoding the kind of simgrid semaphore we use

Samuel Thibault пре 6 година
родитељ
комит
43491754fe
1 измењених фајлова са 12 додато и 12 уклоњено
  1. 12 12
      src/core/simgrid.c

+ 12 - 12
src/core/simgrid.c

@@ -65,7 +65,7 @@ starpu_pthread_queue_t _starpu_simgrid_transfer_queue[STARPU_MAXNODES];
 static struct transfer_runner
 {
 	struct transfer *first_transfer, *last_transfer;
-	msg_sem_t sem;
+	starpu_sem_t sem;
 	msg_process_t runner;
 } transfer_runner[STARPU_MAXNODES][STARPU_MAXNODES];
 static int transfer_execute(int argc STARPU_ATTRIBUTE_UNUSED, char *argv[] STARPU_ATTRIBUTE_UNUSED);
@@ -74,7 +74,7 @@ starpu_pthread_queue_t _starpu_simgrid_task_queue[STARPU_NMAXWORKERS];
 static struct worker_runner
 {
 	struct task *first_task, *last_task;
-	msg_sem_t sem;
+	starpu_sem_t sem;
 	msg_process_t runner;
 } worker_runner[STARPU_NMAXWORKERS];
 static int task_execute(int argc STARPU_ATTRIBUTE_UNUSED, char *argv[] STARPU_ATTRIBUTE_UNUSED);
@@ -422,7 +422,7 @@ void _starpu_simgrid_init(void)
 		snprintf(s, sizeof(s), "worker %u runner", i);
 		void **tsd;
 		_STARPU_CALLOC(tsd, MAX_TSD+1, sizeof(void*));
-		worker_runner[i].sem = MSG_sem_init(0);
+		starpu_sem_init(&worker_runner[i].sem, 0, 0);
 		tsd[0] = (void*)(uintptr_t) i;
 		worker_runner[i].runner = MSG_process_create_with_arguments(s, task_execute, tsd, _starpu_simgrid_get_host_by_worker(_starpu_get_worker_struct(i)), 0, NULL);
 	}
@@ -451,7 +451,7 @@ void _starpu_simgrid_deinit(void)
 			struct transfer_runner *t = &transfer_runner[i][j];
 			if (t->runner)
 			{
-				MSG_sem_release(t->sem);
+				starpu_sem_post(&t->sem);
 #if SIMGRID_VERSION >= 31400
 				MSG_process_join(t->runner, 1000000);
 #else
@@ -459,7 +459,7 @@ void _starpu_simgrid_deinit(void)
 #endif
 				STARPU_ASSERT(t->first_transfer == NULL);
 				STARPU_ASSERT(t->last_transfer == NULL);
-				MSG_sem_destroy(t->sem);
+				starpu_sem_destroy(&t->sem);
 			}
 		}
 		/* FIXME: queue not empty at this point, needs proper unregistration */
@@ -468,7 +468,7 @@ void _starpu_simgrid_deinit(void)
 	for (i = 0; i < starpu_worker_get_count(); i++)
 	{
 		struct worker_runner *w = &worker_runner[i];
-		MSG_sem_release(w->sem);
+		starpu_sem_post(&w->sem);
 #if SIMGRID_VERSION >= 31400
 		MSG_process_join(w->runner, 1000000);
 #else
@@ -476,7 +476,7 @@ void _starpu_simgrid_deinit(void)
 #endif
 		STARPU_ASSERT(w->first_task == NULL);
 		STARPU_ASSERT(w->last_task == NULL);
-		MSG_sem_destroy(w->sem);
+		starpu_sem_destroy(&w->sem);
 		starpu_pthread_queue_destroy(&_starpu_simgrid_task_queue[i]);
 	}
 
@@ -522,7 +522,7 @@ static int task_execute(int argc STARPU_ATTRIBUTE_UNUSED, char *argv[] STARPU_AT
 	{
 		struct task *task;
 
-		MSG_sem_acquire(w->sem);
+		starpu_sem_wait(&w->sem);
 		if (!runners_running)
 			break;
 
@@ -633,7 +633,7 @@ void _starpu_simgrid_submit_job(int workerid, struct _starpu_job *j, struct star
 			w->first_task = task;
 			w->last_task = task;
 		}
-		MSG_sem_release(w->sem);
+		starpu_sem_post(&w->sem);
 	}
 }
 
@@ -734,7 +734,7 @@ static void transfer_queue(struct transfer *transfer)
 			_STARPU_CALLOC(tsd, MAX_TSD+1, sizeof(void*));
 			tsd[0] = (void*)(uintptr_t)((src<<16) + dst);
 			t->runner = MSG_process_create_with_arguments(s, transfer_execute, tsd, _starpu_simgrid_get_memnode_host(src), 0, NULL);
-			t->sem = MSG_sem_init(0);
+			starpu_sem_init(&t->sem, 0, 0);
 		}
 		STARPU_PTHREAD_MUTEX_UNLOCK(&mutex);
 	}
@@ -751,7 +751,7 @@ static void transfer_queue(struct transfer *transfer)
 		t->first_transfer = transfer;
 		t->last_transfer = transfer;
 	}
-	MSG_sem_release(t->sem);
+	starpu_sem_post(&t->sem);
 }
 
 /* Actually execute the transfer, and then start transfers waiting for this one.  */
@@ -770,7 +770,7 @@ static int transfer_execute(int argc STARPU_ATTRIBUTE_UNUSED, char *argv[] STARP
 	{
 		struct transfer *transfer;
 
-		MSG_sem_acquire(t->sem);
+		starpu_sem_wait(&t->sem);
 		if (!runners_running)
 			break;
 		transfer = t->first_transfer;