Selaa lähdekoodia

task: add new statuses to specify on what a task is blocked

Nathalie Furmento 14 vuotta sitten
vanhempi
commit
06321193a9
3 muutettua tiedostoa jossa 9 lisäystä ja 1 poistoa
  1. 4 0
      include/starpu_task.h
  2. 3 1
      src/core/dependencies/data_concurrency.c
  3. 2 0
      src/core/jobs.c

+ 4 - 0
include/starpu_task.h

@@ -40,6 +40,10 @@
 #define STARPU_TASK_RUNNING	3
 #define STARPU_TASK_FINISHED	4
 
+#define STARPU_TASK_BLOCKED_ON_TAG	5
+#define STARPU_TASK_BLOCKED_ON_TASK	6
+#define STARPU_TASK_BLOCKED_ON_JOB	7
+
 #ifdef __cplusplus
 extern "C" {
 #endif

+ 3 - 1
src/core/dependencies/data_concurrency.c

@@ -176,8 +176,10 @@ static unsigned _submit_job_enforce_data_deps(starpu_job_t j, unsigned start_buf
 	unsigned nbuffers = j->task->cl->nbuffers;
 	for (buf = start_buffer_index; buf < nbuffers; buf++)
 	{
-		if (attempt_to_submit_data_request_from_job(j, buf))
+                if (attempt_to_submit_data_request_from_job(j, buf)) {
+                        j->task->status = STARPU_TASK_BLOCKED_ON_JOB;
 			return 1;
+                }
 	}
 
 	return 0;

+ 2 - 0
src/core/jobs.c

@@ -229,6 +229,7 @@ static unsigned _starpu_not_all_tag_deps_are_fulfilled(starpu_job_t j)
 	if (tag_successors->ndeps != tag_successors->ndeps_completed)
 	{
 		tag->state = STARPU_BLOCKED;
+                j->task->status = STARPU_TASK_BLOCKED_ON_TAG;
 		ret = 1;
 	}
 	else {
@@ -254,6 +255,7 @@ static unsigned _starpu_not_all_task_deps_are_fulfilled(starpu_job_t j, unsigned
 
 	if (!j->submitted || (job_successors->ndeps != job_successors->ndeps_completed))
 	{
+                j->task->status = STARPU_TASK_BLOCKED_ON_TASK;
 		ret = 1;
 	}
 	else {