浏览代码

Trace data invalidations

Samuel Thibault 9 年之前
父节点
当前提交
ddd01c32ae
共有 4 个文件被更改,包括 10 次插入0 次删除
  1. 5 0
      src/common/fxt.h
  2. 3 0
      src/datawizard/coherency.c
  3. 1 0
      src/datawizard/interfaces/data_interface.c
  4. 1 0
      src/datawizard/memalloc.c

+ 5 - 0
src/common/fxt.h

@@ -205,6 +205,7 @@
 #define _STARPU_FUT_TASK_WAIT_FOR_ALL_END	0x517b
 
 #define _STARPU_FUT_HANDLE_DATA_REGISTER 0x517c
+#define _STARPU_FUT_DATA_INVALIDATE 0x517d
 
 #ifdef STARPU_USE_FXT
 #include <fxt/fxt.h>
@@ -919,6 +920,9 @@ do {										\
 #define _STARPU_TRACE_HANDLE_DATA_REGISTER(handle)		\
 	FUT_DO_PROBE1(_STARPU_FUT_HANDLE_DATA_REGISTER, handle)
 
+#define _STARPU_TRACE_DATA_INVALIDATE(handle, node)		\
+	FUT_DO_PROBE2(_STARPU_FUT_DATA_INVALIDATE, handle, node)
+
 #else // !STARPU_USE_FXT
 
 /* Dummy macros in case FxT is disabled */
@@ -1027,6 +1031,7 @@ do {										\
 #define _STARPU_TRACE_SCHED_COMPONENT_PUSH(from, to, task)	do {} while (0)
 #define _STARPU_TRACE_SCHED_COMPONENT_PULL(from, to, task)	do {} while (0)
 #define _STARPU_TRACE_HANDLE_DATA_REGISTER(handle)	do {} while (0)
+#define _STARPU_TRACE_DATA_INVALIDATE(handle, node)	do {} while (0)
 
 #endif // STARPU_USE_FXT
 

+ 3 - 0
src/datawizard/coherency.c

@@ -184,7 +184,10 @@ void _starpu_update_data_state(starpu_data_handle_t handle,
 		/* the requesting node now has the only valid copy */
 		unsigned node;
 		for (node = 0; node < nnodes; node++)
+		{
+			_STARPU_TRACE_DATA_INVALIDATE(handle, node);
 			handle->per_node[node].state = STARPU_INVALID;
+		}
 
 		requesting_replicate->state = STARPU_OWNER;
 		if (handle->home_node != -1 && handle->per_node[handle->home_node].state == STARPU_INVALID)

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

@@ -940,6 +940,7 @@ static void _starpu_data_invalidate(void *data)
 			_starpu_request_mem_chunk_removal(handle, local, node, size);
 		}
 
+		_STARPU_TRACE_DATA_INVALIDATE(handle, node);
 		local->state = STARPU_INVALID;
 	}
 

+ 1 - 0
src/datawizard/memalloc.c

@@ -267,6 +267,7 @@ static int STARPU_ATTRIBUTE_WARN_UNUSED_RESULT transfer_subtree_to_node(starpu_d
 		if (src_replicate->state == STARPU_SHARED)
 		{
 			/* some other node may have the copy */
+			_STARPU_TRACE_DATA_INVALIDATE(handle, src_node);
 			src_replicate->state = STARPU_INVALID;
 
 			/* count the number of copies */