Преглед на файлове

clearly separate task name from perfmodel name

Samuel Thibault преди 9 години
родител
ревизия
8a36e89cd1
променени са 5 файла, в които са добавени 50 реда и са изтрити 17 реда
  1. 10 6
      src/common/fxt.h
  2. 2 0
      src/common/utils.h
  3. 1 1
      src/core/simgrid.c
  4. 19 0
      src/debug/traces/starpu_fxt.c
  5. 18 10
      src/util/misc.c

+ 10 - 6
src/common/fxt.h

@@ -74,6 +74,8 @@
 #define _STARPU_FUT_TASK_SUBMIT		0x511a
 #define _STARPU_FUT_CODELET_DATA_HANDLE	0x511b
 
+#define _STARPU_FUT_MODEL_NAME		0x511c
+
 #define _STARPU_FUT_USER_DEFINED_START	0x5120
 #define _STARPU_FUT_USER_DEFINED_END	0x5121
 
@@ -427,11 +429,13 @@ do {									\
 
 #define _STARPU_TRACE_START_CODELET_BODY(job, nimpl, perf_arch, workerid)				\
 do {									\
-        const char *model_name = _starpu_job_get_model_name((job));         \
-	if (model_name)                                                 \
+        const char *model_name = _starpu_job_get_model_name((job)), *name = _starpu_job_get_task_name((job));         \
+	if (name)                                                 \
 	{								\
-		/* we include the symbol name */			\
-		_STARPU_FUT_DO_PROBE4STR(_STARPU_FUT_START_CODELET_BODY, (job)->job_id, ((job)->task)->sched_ctx, workerid, 1, model_name); \
+		/* we include the task name */			\
+		_STARPU_FUT_DO_PROBE4STR(_STARPU_FUT_START_CODELET_BODY, (job)->job_id, ((job)->task)->sched_ctx, workerid, 1, name); \
+		if (strcmp(model_name, name))				\
+			_STARPU_FUT_DO_PROBE1STR(_STARPU_FUT_MODEL_NAME, (job)->job_id, model_name); \
 	}								\
 	else {                                                          \
 		FUT_DO_PROBE4(_STARPU_FUT_START_CODELET_BODY, (job)->job_id, ((job)->task)->sched_ctx, workerid, 0); \
@@ -517,7 +521,7 @@ do {									\
 #define _STARPU_TRACE_TASK_DONE(job)						\
 do {										\
 	unsigned exclude_from_dag = (job)->exclude_from_dag;			\
-        const char *model_name = _starpu_job_get_model_name((job));                       \
+        const char *model_name = _starpu_job_get_task_name((job));                       \
 	if (model_name)					                        \
 	{									\
 		_STARPU_FUT_DO_PROBE4STR(_STARPU_FUT_TASK_DONE, (job)->job_id, _starpu_gettid(), (long unsigned)exclude_from_dag, 1, model_name);\
@@ -530,7 +534,7 @@ do {										\
 #define _STARPU_TRACE_TAG_DONE(tag)						\
 do {										\
         struct _starpu_job *job = (tag)->job;                                  \
-        const char *model_name = _starpu_job_get_model_name((job));                       \
+        const char *model_name = _starpu_job_get_task_name((job));                       \
 	if (model_name)                                                         \
 	{									\
           _STARPU_FUT_DO_PROBE3STR(_STARPU_FUT_TAG_DONE, (tag)->id, _starpu_gettid(), 1, model_name); \

+ 2 - 0
src/common/utils.h

@@ -138,6 +138,8 @@ void _starpu_drop_comments(FILE *f);
 struct _starpu_job;
 /* Returns the symbol associated to that job if any. */
 const char *_starpu_job_get_model_name(struct _starpu_job *j);
+/* Returns the name associated to that job if any. */
+const char *_starpu_job_get_task_name(struct _starpu_job *j);
 
 struct starpu_codelet;
 /* Returns the symbol associated to that job if any. */

+ 1 - 1
src/core/simgrid.c

@@ -316,7 +316,7 @@ void _starpu_simgrid_submit_job(int workerid, struct _starpu_job *j, struct star
 			_starpu_job_get_model_name(j));
 	}
 
-	simgrid_task = MSG_task_create(_starpu_job_get_model_name(j),
+	simgrid_task = MSG_task_create(_starpu_job_get_task_name(j),
 			length/1000000.0*MSG_get_host_speed(MSG_host_self()),
 			0, NULL);
 

+ 19 - 0
src/debug/traces/starpu_fxt.c

@@ -69,6 +69,7 @@ struct data_info {
 
 struct task_info {
 	UT_hash_handle hh;
+	char *model_name;
 	char *name;
 	int exclude_from_dag;
 	unsigned long job_id;
@@ -95,6 +96,7 @@ static struct task_info *get_task(unsigned long job_id)
 	if (!task)
 	{
 		task = malloc(sizeof(*task));
+		task->model_name = NULL;
 		task->name = NULL;
 		task->exclude_from_dag = 0;
 		task->job_id = job_id;
@@ -126,8 +128,15 @@ static void task_dump(unsigned long job_id)
 	if (task->name)
 	{
 		fprintf(tasks_file, "Name: %s\n", task->name);
+		if (!task->model_name)
+			fprintf(tasks_file, "Model: %s\n", task->name);
 		free(task->name);
 	}
+	if (task->model_name)
+	{
+		fprintf(tasks_file, "Model: %s\n", task->model_name);
+		free(task->model_name);
+	}
 	fprintf(tasks_file, "JobId: %lu\n", task->job_id);
 	if (task->dependencies)
 	{
@@ -907,6 +916,13 @@ static void handle_start_codelet_body(struct fxt_ev_64 *ev, struct starpu_fxt_op
 
 }
 
+static void handle_model_name(struct fxt_ev_64 *ev, struct starpu_fxt_options *options STARPU_ATTRIBUTE_UNUSED)
+{
+	struct task_info *task = get_task(ev->param[0]);
+	char *name = (char *)&ev->param[1];
+	task->model_name = strdup(name);
+}
+
 static void handle_codelet_data(struct fxt_ev_64 *ev STARPU_ATTRIBUTE_UNUSED, struct starpu_fxt_options *options STARPU_ATTRIBUTE_UNUSED)
 {
 	int worker = ev->param[0];
@@ -1976,6 +1992,9 @@ void _starpu_fxt_parse_new_file(char *filename_in, struct starpu_fxt_options *op
 			case _STARPU_FUT_START_CODELET_BODY:
 				handle_start_codelet_body(&ev, options);
 				break;
+			case _STARPU_FUT_MODEL_NAME:
+				handle_model_name(&ev, options);
+				break;
 			case _STARPU_FUT_CODELET_DATA:
 				handle_codelet_data(&ev, options);
 				break;

+ 18 - 10
src/util/misc.c

@@ -31,19 +31,27 @@ const char *_starpu_codelet_get_model_name(struct starpu_codelet *cl)
 
 const char *_starpu_job_get_model_name(struct _starpu_job *j)
 {
-	const char *ret = NULL;
+	if (!j)
+		return NULL;
+
+	struct starpu_task *task = j->task;
+	if (!task)
+		return NULL;
 
+	return _starpu_codelet_get_model_name(task->cl);
+}
+
+const char *_starpu_job_get_task_name(struct _starpu_job *j)
+{
 	if (!j)
 		return NULL;
 
 	struct starpu_task *task = j->task;
-	if (task)
-	{
-		if (task->name)
-			ret = task->name;
-		else
-			ret = _starpu_codelet_get_model_name(task->cl);
-	}
-
-	return ret;
+	if (!task)
+		return NULL;
+
+	if (task->name)
+		return task->name;
+	else
+		return _starpu_job_get_model_name(j);
 }