Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] registering the tracing categories of mpi processes in dictionary
[simgrid.git] / src / instr / instr_smpi.c
index e991af2..db64b26 100644 (file)
@@ -8,6 +8,8 @@
 
 #ifdef HAVE_TRACING
 
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI");
+
 static xbt_dict_t keys;
 
 static char *TRACE_smpi_container(int rank, char *container, int n)
@@ -50,14 +52,38 @@ static char *TRACE_smpi_get_key(int src, int dst, char *key, int n)
   return key;
 }
 
+static xbt_dict_t process_category;
+
+void TRACE_internal_smpi_set_category (const char *category)
+{
+  if (!TRACE_smpi_is_enabled()) return;
+
+  char processid[INSTR_DEFAULT_STR_SIZE];
+  snprintf (processid, INSTR_DEFAULT_STR_SIZE, "%p", SIMIX_process_self());
+  if (xbt_dict_get_or_null (process_category, processid))
+    xbt_dict_remove (process_category, processid);
+  if (category != NULL)
+    xbt_dict_set (process_category, processid, xbt_strdup(category), xbt_free);
+}
+
+const char *TRACE_internal_smpi_get_category (void)
+{
+  if (!TRACE_smpi_is_enabled()) return NULL;
+
+  char processid[INSTR_DEFAULT_STR_SIZE];
+  snprintf (processid, INSTR_DEFAULT_STR_SIZE, "%p", SIMIX_process_self());
+  return xbt_dict_get_or_null (process_category, processid);
+}
+
 void TRACE_smpi_alloc()
 {
   keys = xbt_dict_new();
+  process_category = xbt_dict_new();
 }
 
 void TRACE_smpi_start(void)
 {
-  if (IS_TRACING_SMPI) {
+  if (TRACE_smpi_is_enabled()) {
     TRACE_start();
   }
 }
@@ -65,14 +91,14 @@ void TRACE_smpi_start(void)
 void TRACE_smpi_release(void)
 {
   TRACE_surf_release();
-  if (IS_TRACING_SMPI) {
+  if (TRACE_smpi_is_enabled()) {
     TRACE_end();
   }
 }
 
 void TRACE_smpi_init(int rank)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char str[INSTR_DEFAULT_STR_SIZE];
@@ -88,7 +114,7 @@ void TRACE_smpi_init(int rank)
 
 void TRACE_smpi_finalize(int rank)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char str[INSTR_DEFAULT_STR_SIZE];
@@ -98,7 +124,7 @@ void TRACE_smpi_finalize(int rank)
 
 void TRACE_smpi_collective_in(int rank, int root, const char *operation)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char str[INSTR_DEFAULT_STR_SIZE];
@@ -108,7 +134,7 @@ void TRACE_smpi_collective_in(int rank, int root, const char *operation)
 
 void TRACE_smpi_collective_out(int rank, int root, const char *operation)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char str[INSTR_DEFAULT_STR_SIZE];
@@ -118,7 +144,7 @@ void TRACE_smpi_collective_out(int rank, int root, const char *operation)
 
 void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char str[INSTR_DEFAULT_STR_SIZE];
@@ -128,7 +154,7 @@ void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation)
 
 void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char str[INSTR_DEFAULT_STR_SIZE];
@@ -138,7 +164,7 @@ void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation)
 
 void TRACE_smpi_send(int rank, int src, int dst)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char key[INSTR_DEFAULT_STR_SIZE], str[INSTR_DEFAULT_STR_SIZE];
@@ -149,7 +175,7 @@ void TRACE_smpi_send(int rank, int src, int dst)
 
 void TRACE_smpi_recv(int rank, int src, int dst)
 {
-  if (!IS_TRACING_SMPI)
+  if (!TRACE_smpi_is_enabled())
     return;
 
   char key[INSTR_DEFAULT_STR_SIZE], str[INSTR_DEFAULT_STR_SIZE];