Переглянути джерело

Merge remote-tracking branch 'origin/master' into ft_checkpoint

Romain LION 5 роки тому
батько
коміт
862ba33199

+ 1 - 1
doc/doxygen/chapters/380_offline_performance_tools.doxy

@@ -59,7 +59,7 @@ StarPU can use the FxT library (see
 https://savannah.nongnu.org/projects/fkt/) to generate traces
 with a limited runtime overhead.
 
-You can get a tarball from http://download.savannah.gnu.org/releases/fkt/
+You can get a tarball from http://download.savannah.gnu.org/releases/fkt/?C=M
 
 Compiling and installing the FxT library in the <c>$FXTDIR</c> path is
 done following the standard procedure:

+ 11 - 7
src/datawizard/coherency.c

@@ -189,10 +189,12 @@ void _starpu_update_data_state(starpu_data_handle_t handle,
 		unsigned node;
 		for (node = 0; node < nnodes; node++)
 		{
-                       _STARPU_TRACE_DATA_STATE_INVALID(handle, node);
+			if (handle->per_node[node].state != STARPU_INVALID)
+			       _STARPU_TRACE_DATA_STATE_INVALID(handle, node);
 			handle->per_node[node].state = STARPU_INVALID;
 		}
-               _STARPU_TRACE_DATA_STATE_OWNER(handle, requesting_node);
+		if (requesting_replicate->state != STARPU_OWNER)
+			_STARPU_TRACE_DATA_STATE_OWNER(handle, requesting_node);
 		requesting_replicate->state = STARPU_OWNER;
 		if (handle->home_node != -1 && handle->per_node[handle->home_node].state == STARPU_INVALID)
 			/* Notify that this MC is now dirty */
@@ -208,13 +210,15 @@ void _starpu_update_data_state(starpu_data_handle_t handle,
 			for (node = 0; node < nnodes; node++)
 			{
 				struct _starpu_data_replicate *replicate = &handle->per_node[node];
-                               if (replicate->state != STARPU_INVALID)
-			       {
-                                       _STARPU_TRACE_DATA_STATE_SHARED(handle, node);
+				if (replicate->state != STARPU_INVALID)
+				{
+					if (replicate->state != STARPU_SHARED)
+						_STARPU_TRACE_DATA_STATE_SHARED(handle, node);
 					replicate->state = STARPU_SHARED;
-                               }
+				}
 			}
-                       _STARPU_TRACE_DATA_STATE_SHARED(handle, requesting_node);
+			if (requesting_replicate->state != STARPU_SHARED)
+				_STARPU_TRACE_DATA_STATE_SHARED(handle, requesting_node);
 			requesting_replicate->state = STARPU_SHARED;
 		}
 	}

+ 4 - 2
src/datawizard/memalloc.c

@@ -349,7 +349,8 @@ static int STARPU_ATTRIBUTE_WARN_UNUSED_RESULT transfer_subtree_to_node(starpu_d
 			unsigned cnt = 0;
 
 			/* some other node may have the copy */
-			_STARPU_TRACE_DATA_STATE_INVALID(handle, src_node);
+			if (src_replicate->state != STARPU_INVALID)
+				_STARPU_TRACE_DATA_STATE_INVALID(handle, src_node);
 			src_replicate->state = STARPU_INVALID;
 
 			/* count the number of copies */
@@ -365,7 +366,8 @@ static int STARPU_ATTRIBUTE_WARN_UNUSED_RESULT transfer_subtree_to_node(starpu_d
 
 			if (cnt == 1)
 			{
-				_STARPU_TRACE_DATA_STATE_OWNER(handle, last);
+				if (handle->per_node[last].state != STARPU_OWNER)
+					_STARPU_TRACE_DATA_STATE_OWNER(handle, last);
 				handle->per_node[last].state = STARPU_OWNER;
 			}
 

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

@@ -4441,11 +4441,13 @@ void _starpu_fxt_number_events_file_close(void)
 {
 	if (number_events_file)
 	{
+		int i;
+
 		assert(number_events != NULL);
 
 		fprintf(number_events_file, "# Use starpu_fxt_number_events_to_names.py to convert event keys to event names.\n");
 
-		for (int i = 0; i <= FUT_SETUP_CODE; i++)
+		for (i = 0; i <= FUT_SETUP_CODE; i++)
 		{
 			if (number_events[i] > 0)
 				fprintf(number_events_file, "0x%x\t%lu\n", i, number_events[i]);