Bläddra i källkod

Add data_unregister event in traces

Samuel Thibault 8 år sedan
förälder
incheckning
cbabff4ad5

+ 5 - 0
src/common/fxt.h

@@ -80,6 +80,7 @@
 
 #define _STARPU_FUT_DATA_NAME		0x511d
 #define _STARPU_FUT_DATA_COORDINATES	0x511e
+#define _STARPU_FUT_HANDLE_DATA_UNREGISTER	0x511f
 
 #define _STARPU_FUT_USER_DEFINED_START	0x5120
 #define _STARPU_FUT_USER_DEFINED_END	0x5121
@@ -1057,6 +1058,9 @@ do {										\
 	FUT_DO_PROBE2STR(_STARPU_FUT_HANDLE_DATA_REGISTER, handle, __data_size, __buf); \
 } while (0)
 
+#define _STARPU_TRACE_HANDLE_DATA_UNREGISTER(handle)	\
+	FUT_DO_PROBE1(_STARPU_FUT_HANDLE_DATA_UNREGISTER, handle)
+
 #if 0
 #define _STARPU_TRACE_DATA_INVALIDATE(handle, node)		\
 	FUT_DO_PROBE2(_STARPU_FUT_DATA_INVALIDATE, handle, node)
@@ -1177,6 +1181,7 @@ do {										\
 #define _STARPU_TRACE_SCHED_COMPONENT_PUSH(from, to, task)	do {(void)(from); (void)(to); (void)(task);} while (0)
 #define _STARPU_TRACE_SCHED_COMPONENT_PULL(from, to, task)	do {(void)(from); (void)(to); (void)(task);} while (0)
 #define _STARPU_TRACE_HANDLE_DATA_REGISTER(handle)	do {(void)(handle);} while (0)
+#define _STARPU_TRACE_HANDLE_DATA_UNREGISTER(handle)	do {(void)(handle);} while (0)
 #define _STARPU_TRACE_DATA_INVALIDATE(handle, node)	do {(void)(handle); (void)(node);} while (0)
 #define _STARPU_TRACE_WORKER_START_FETCH_INPUT(job, id)	do {(void)(job); (void)(id);} while(0)
 #define _STARPU_TRACE_WORKER_END_FETCH_INPUT(job, id)	do {(void)(job); (void)(id);} while(0)

+ 2 - 0
src/datawizard/filters.c

@@ -523,6 +523,8 @@ void starpu_data_unpartition(starpu_data_handle_t root_handle, unsigned gatherin
 		STARPU_PTHREAD_MUTEX_DESTROY(&child_handle->busy_mutex);
 		STARPU_PTHREAD_COND_DESTROY(&child_handle->busy_cond);
 		STARPU_PTHREAD_MUTEX_DESTROY(&child_handle->sequential_consistency_mutex);
+
+		_STARPU_TRACE_HANDLE_DATA_UNREGISTER(child_handle);
 	}
 
 	/* there is no child anymore */

+ 1 - 0
src/datawizard/interfaces/data_interface.c

@@ -892,6 +892,7 @@ retry_busy:
 		free(handle->switch_cl->dyn_nodes);
 		free(handle->switch_cl);
 	}
+	_STARPU_TRACE_HANDLE_DATA_UNREGISTER(handle);
 	free(handle);
 }
 

+ 27 - 3
src/debug/traces/starpu_fxt.c

@@ -1996,13 +1996,34 @@ static void handle_data_register(struct fxt_ev_64 *ev, struct starpu_fxt_options
 		char paje_value[STARPU_POTI_STR_LEN], container[STARPU_POTI_STR_LEN];
 		snprintf(paje_value, STARPU_POTI_STR_LEN, "%lx", handle);
 		program_container_alias (container, STARPU_POTI_STR_LEN, prefix);
-		poti_NewEvent(get_event_time_stamp(ev, options), container, "user_event", paje_value);
+		poti_NewEvent(get_event_time_stamp(ev, options), container, "register", paje_value);
 #else
 		fprintf(out_paje_file, "9	%.9f	register	%sp	%lx\n", get_event_time_stamp(ev, options), prefix, handle);
 #endif
 	}
 }
 
+static void handle_data_unregister(struct fxt_ev_64 *ev, struct starpu_fxt_options *options)
+{
+	unsigned long handle = ev->param[0];
+	char *prefix = options->file_prefix;
+	struct data_info *data = get_data(handle, options->file_rank);
+
+	if (out_paje_file && !options->no_events)
+	{
+#ifdef STARPU_HAVE_POTI
+		char paje_value[STARPU_POTI_STR_LEN], container[STARPU_POTI_STR_LEN];
+		snprintf(paje_value, STARPU_POTI_STR_LEN, "%lx", handle);
+		program_container_alias (container, STARPU_POTI_STR_LEN, prefix);
+		poti_NewEvent(get_event_time_stamp(ev, options), container, "unregister", paje_value);
+#else
+		fprintf(out_paje_file, "9	%.9f	unregister	%sp	%lx\n", get_event_time_stamp(ev, options), prefix, handle);
+#endif
+	}
+
+	data_dump(data);
+}
+
 static void handle_data_invalidate(struct fxt_ev_64 *ev, struct starpu_fxt_options *options)
 {
 	unsigned long handle = ev->param[0];
@@ -2015,7 +2036,7 @@ static void handle_data_invalidate(struct fxt_ev_64 *ev, struct starpu_fxt_optio
 		char paje_value[STARPU_POTI_STR_LEN], memnode_container[STARPU_POTI_STR_LEN];
 		memmanager_container_alias(memnode_container, STARPU_POTI_STR_LEN, prefix, node);
 		snprintf(paje_value, STARPU_POTI_STR_LEN, "%lx", handle);
-		poti_NewEvent(get_event_time_stamp(ev, options), memnode_container, "user_event", paje_value);
+		poti_NewEvent(get_event_time_stamp(ev, options), memnode_container, "invalidate", paje_value);
 #else
 		fprintf(out_paje_file, "9	%.9f	invalidate	%smm%u	%lx\n", get_event_time_stamp(ev, options), prefix, node, handle);
 #endif
@@ -3240,6 +3261,10 @@ void _starpu_fxt_parse_new_file(char *filename_in, struct starpu_fxt_options *op
 				handle_data_register(&ev, options);
 				break;
 
+			case _STARPU_FUT_HANDLE_DATA_UNREGISTER:
+				handle_data_unregister(&ev, options);
+				break;
+
 			case _STARPU_FUT_DATA_INVALIDATE:
 				handle_data_invalidate(&ev, options);
 				break;
@@ -3593,7 +3618,6 @@ void _starpu_fxt_parse_new_file(char *filename_in, struct starpu_fxt_options *op
 	}
 
 	{
-		/* TODO: move to handle_data_unregister */
 		struct data_info *data, *tmp;
 		HASH_ITER(hh, data_info, data, tmp)
 		{