Browse Source

Add data size and description to data.rec

Samuel Thibault 8 years ago
parent
commit
8bb05d3cbe

+ 10 - 2
src/common/fxt.h

@@ -1046,8 +1046,16 @@ do {										\
 #define _STARPU_TRACE_SCHED_COMPONENT_PULL(from, to, task)		\
 	FUT_DO_PROBE5(_STARPU_FUT_SCHED_COMPONENT_PULL, _starpu_gettid(), from, to, task, (task)->priority);
 
-#define _STARPU_TRACE_HANDLE_DATA_REGISTER(handle)		\
-	FUT_DO_PROBE1(_STARPU_FUT_HANDLE_DATA_REGISTER, handle)
+#define _STARPU_TRACE_HANDLE_DATA_REGISTER(handle)	do {	\
+	const size_t __data_size = handle->ops->get_size(handle); \
+	char __buf[(FXT_MAX_PARAMS-2)*sizeof(long)]; \
+	void *__interface = handle->per_node[0].data_interface; \
+	if (handle->ops->describe) \
+		handle->ops->describe(__interface, __buf, sizeof(__buf)); \
+	else \
+		__buf[0] = 0; \
+	FUT_DO_PROBE2STR(_STARPU_FUT_HANDLE_DATA_REGISTER, handle, __data_size, __buf); \
+} while (0)
 
 #if 0
 #define _STARPU_TRACE_DATA_INVALIDATE(handle, node)		\

+ 3 - 2
src/datawizard/filters.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010-2016  Université de Bordeaux
+ * Copyright (C) 2010-2017  Université de Bordeaux
  * Copyright (C) 2010  Mehdi Juhoor <mjuhoor@gmail.com>
  * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2016, 2017  CNRS
  * Copyright (C) 2012, 2016  Inria
@@ -206,7 +206,6 @@ static void _starpu_data_partition(starpu_data_handle_t initial_handle, starpu_d
 		else
 			child = childrenp[i];
 		STARPU_ASSERT(child);
-		_STARPU_TRACE_HANDLE_DATA_REGISTER(child);
 
 		struct starpu_data_interface_ops *ops;
 
@@ -324,6 +323,8 @@ static void _starpu_data_partition(starpu_data_handle_t initial_handle, starpu_d
 		ptr = starpu_data_handle_to_pointer(child, STARPU_MAIN_RAM);
 		if (ptr != NULL)
 			_starpu_data_register_ram_pointer(child, ptr);
+
+		_STARPU_TRACE_HANDLE_DATA_REGISTER(child);
 	}
 	/* now let the header */
 	_starpu_spin_unlock(&initial_handle->header_lock);

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

@@ -367,6 +367,8 @@ static void _starpu_register_new_data(starpu_data_handle_t handle,
 	/* now the data is available ! */
 	_starpu_spin_unlock(&handle->header_lock);
 
+
+
 	ptr = starpu_data_handle_to_pointer(handle, STARPU_MAIN_RAM);
 	if (ptr != NULL)
 	{
@@ -471,7 +473,6 @@ void starpu_data_register(starpu_data_handle_t *handleptr, int home_node,
 			  struct starpu_data_interface_ops *ops)
 {
 	starpu_data_handle_t handle = _starpu_data_handle_allocate(ops, home_node);
-	_STARPU_TRACE_HANDLE_DATA_REGISTER(handle);
 
 	STARPU_ASSERT(handleptr);
 	*handleptr = handle;
@@ -481,6 +482,7 @@ void starpu_data_register(starpu_data_handle_t *handleptr, int home_node,
 	ops->register_data_handle(handle, home_node, data_interface);
 
 	_starpu_register_new_data(handle, home_node, 0);
+	_STARPU_TRACE_HANDLE_DATA_REGISTER(handle);
 }
 
 void starpu_data_register_same(starpu_data_handle_t *handledst, starpu_data_handle_t handlesrc)

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

@@ -245,6 +245,8 @@ struct data_info
 	UT_hash_handle hh;
 	unsigned long handle;
 	char *name;
+	size_t size;
+	char *description;
 	unsigned dimensions;
 	unsigned long *dims;
 	int mpi_rank;
@@ -263,6 +265,8 @@ static struct data_info *get_data(unsigned long handle, int mpi_rank)
 		_STARPU_MALLOC(data, sizeof(*data));
 		data->handle = handle;
 		data->name = NULL;
+		data->size = 0;
+		data->description = 0;
 		data->dimensions = 0;
 		data->dims = NULL;
 		data->mpi_rank = mpi_rank;
@@ -280,12 +284,19 @@ static void data_dump(struct data_info *data)
 	if (!data_file)
 		goto out;
 	fprintf(data_file, "Handle: %lx\n", data->handle);
-	fprintf(data_file, "MPIRank: %d\n", data->mpi_rank);
+	if (data->mpi_rank >= 0)
+		fprintf(data_file, "MPIRank: %d\n", data->mpi_rank);
 	if (data->name)
 	{
 		fprintf(data_file, "Name: %s\n", data->name);
 		free(data->name);
 	}
+	fprintf(data_file, "Size: %lu\n", (unsigned long) data->size);
+	if (data->description)
+	{
+		fprintf(data_file, "Description: %s\n", data->description);
+		free(data->description);
+	}
 	if (data->dimensions)
 	{
 		unsigned i;
@@ -294,7 +305,8 @@ static void data_dump(struct data_info *data)
 			fprintf(data_file, " %lu", data->dims[i]);
 		fprintf(data_file, "\n");
 	}
-	fprintf(data_file, "MPIOwner: %d\n", data->mpi_owner);
+	if (data->mpi_owner >= 0)
+		fprintf(data_file, "MPIOwner: %d\n", data->mpi_owner);
 	fprintf(data_file, "\n");
 out:
 	HASH_DEL(data_info, data);
@@ -1971,6 +1983,12 @@ static void handle_data_register(struct fxt_ev_64 *ev, struct starpu_fxt_options
 {
 	unsigned long handle = ev->param[0];
 	char *prefix = options->file_prefix;
+	struct data_info *data = get_data(handle, options->file_rank);
+	char *description = get_fxt_string(ev, 2);
+
+	data->size = ev->param[1];
+	if (description[0])
+		data->description = strdup(description);
 
 	if (out_paje_file && !options->no_events)
 	{