浏览代码

optionally output dependence labels in tasks.rec

Olivier Aumage 5 年之前
父节点
当前提交
a9d4a636bf
共有 1 个文件被更改,包括 22 次插入2 次删除
  1. 22 2
      src/debug/traces/starpu_fxt.c

+ 22 - 2
src/debug/traces/starpu_fxt.c

@@ -115,6 +115,7 @@ struct task_info
 	char *parameters;
 	unsigned int ndeps;
 	unsigned long *dependencies;
+	char **deplabels;
 	unsigned long ndata;
 	struct data_parameter_info *data;
 	int mpi_rank;
@@ -153,6 +154,7 @@ static struct task_info *get_task(unsigned long job_id, int mpi_rank)
 		task->parameters = NULL;
 		task->ndeps = 0;
 		task->dependencies = NULL;
+		task->deplabels = NULL;
 		task->ndata = 0;
 		task->data = NULL;
 		task->mpi_rank = mpi_rank;
@@ -207,9 +209,21 @@ static void task_dump(struct task_info *task, struct starpu_fxt_options *options
 	{
 		fprintf(tasks_file, "DependsOn:");
 		for (i = 0; i < task->ndeps; i++)
-			fprintf(tasks_file, " %s%lu", prefix, task->dependencies[i]);
+		{
+			char *name = task->deplabels[i];
+			if (name)
+			{
+				fprintf(tasks_file, " %s/%s%lu", name, prefix, task->dependencies[i]);
+				free(name);
+			}
+			else
+			{
+				fprintf(tasks_file, " %s%lu", prefix, task->dependencies[i]);
+			}
+		}
 		fprintf(tasks_file, "\n");
 		free(task->dependencies);
+		free(task->deplabels);
 	}
 	fprintf(tasks_file, "Tag: %"PRIx64"\n", task->tag);
 	if (task->workerid >= 0)
@@ -2740,8 +2754,14 @@ static void handle_task_deps(struct fxt_ev_64 *ev, struct starpu_fxt_options *op
 	if (alloc)
 	{
 		_STARPU_REALLOC(task->dependencies, sizeof(*task->dependencies) * alloc);
+		_STARPU_REALLOC(task->deplabels, sizeof(*task->deplabels) * alloc);
 	}
-	task->dependencies[task->ndeps++] = dep_prev;
+	task->dependencies[task->ndeps] = dep_prev;
+	if (options->label_deps)
+		task->deplabels[task->ndeps] = name?strdup(name):NULL;
+	else
+		task->deplabels[task->ndeps] = NULL;
+	task->ndeps++;
 
 	/* There is a dependency between both job id : dep_prev -> dep_succ */
 	if (show_task(task, options))