浏览代码

Fix disabling FxT traces with STARPU_FXT_TRACE=0 with MPI

Stop MPI trace recording only if traces are really enabled
Philippe SWARTVAGHER 5 年之前
父节点
当前提交
8ae1750b26
共有 3 个文件被更改,包括 17 次插入2 次删除
  1. 5 0
      include/starpu_fxt.h
  2. 6 1
      mpi/src/starpu_mpi_init.c
  3. 6 1
      src/common/fxt.c

+ 5 - 0
include/starpu_fxt.h

@@ -138,6 +138,11 @@ void starpu_fxt_stop_profiling(void);
 void starpu_fxt_write_data_trace(char *filename_in);
 void starpu_fxt_write_data_trace(char *filename_in);
 
 
 /**
 /**
+    Wrapper to get value of env variable STARPU_FXT_TRACE
+*/
+int starpu_fxt_is_enabled();
+
+/**
    Add an event in the execution trace if FxT is enabled.
    Add an event in the execution trace if FxT is enabled.
 */
 */
 void starpu_fxt_trace_user_event(unsigned long code);
 void starpu_fxt_trace_user_event(unsigned long code);

+ 6 - 1
mpi/src/starpu_mpi_init.c

@@ -210,7 +210,12 @@ int starpu_mpi_shutdown(void)
 	/* kill the progression thread */
 	/* kill the progression thread */
 	_starpu_mpi_progress_shutdown(&value);
 	_starpu_mpi_progress_shutdown(&value);
 
 
-	_STARPU_MPI_TRACE_STOP(rank, world_size);
+#ifdef STARPU_USE_FXT
+	if (starpu_fxt_is_enabled())
+	{
+		_STARPU_MPI_TRACE_STOP(rank, world_size);
+	}
+#endif // STARPU_USE_FXT
 
 
 	_starpu_mpi_comm_amounts_display(stderr, rank);
 	_starpu_mpi_comm_amounts_display(stderr, rank);
 	_starpu_mpi_comm_amounts_shutdown();
 	_starpu_mpi_comm_amounts_shutdown();

+ 6 - 1
src/common/fxt.c

@@ -140,12 +140,17 @@ void starpu_fxt_stop_profiling()
 	fut_keychange(FUT_SETMASK, _STARPU_FUT_KEYMASK_META, threadid);
 	fut_keychange(FUT_SETMASK, _STARPU_FUT_KEYMASK_META, threadid);
 }
 }
 
 
+int starpu_fxt_is_enabled()
+{
+	return starpu_get_env_number_default("STARPU_FXT_TRACE", 1);
+}
+
 void _starpu_fxt_init_profiling(unsigned trace_buffer_size)
 void _starpu_fxt_init_profiling(unsigned trace_buffer_size)
 {
 {
 	unsigned threadid;
 	unsigned threadid;
 
 
 	STARPU_PTHREAD_MUTEX_LOCK(&_starpu_fxt_started_mutex);
 	STARPU_PTHREAD_MUTEX_LOCK(&_starpu_fxt_started_mutex);
-	if (!(_starpu_fxt_willstart = starpu_get_env_number_default("STARPU_FXT_TRACE", 1)))
+	if (!(_starpu_fxt_willstart = starpu_fxt_is_enabled()))
 	{
 	{
 		STARPU_PTHREAD_COND_BROADCAST(&_starpu_fxt_started_cond);
 		STARPU_PTHREAD_COND_BROADCAST(&_starpu_fxt_started_cond);
 		STARPU_PTHREAD_MUTEX_UNLOCK(&_starpu_fxt_started_mutex);
 		STARPU_PTHREAD_MUTEX_UNLOCK(&_starpu_fxt_started_mutex);