Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add option tracing/smpi/display_sizes to display size of message in trace for smpi...
authorAugustin Degomme <degomme@idpann.imag.fr>
Thu, 29 Aug 2013 11:52:06 +0000 (13:52 +0200)
committerAugustin Degomme <degomme@idpann.imag.fr>
Thu, 29 Aug 2013 12:41:11 +0000 (14:41 +0200)
src/include/smpi/smpi_interface.h
src/instr/instr_config.c
src/instr/instr_paje_header.c
src/instr/instr_paje_trace.c
src/instr/instr_private.h
src/smpi/instr_smpi.c
src/smpi/private.h
src/smpi/smpi_base.c
src/smpi/smpi_pmpi.c
src/smpi/smpi_replay.c

index 04fc1da..0030870 100644 (file)
@@ -6,9 +6,9 @@
 /* from smpi_instr.c */
 void TRACE_smpi_alloc(void);
 void TRACE_smpi_release(void);
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation);
+void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int size);
 void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
-void TRACE_smpi_send(int rank, int src, int dst);
+void TRACE_smpi_send(int rank, int src, int dst, int size);
 void TRACE_smpi_recv(int rank, int src, int dst);
 void TRACE_smpi_init(int rank);
 void TRACE_smpi_finalize(int rank);
index 7d61fef..7081bc0 100644 (file)
@@ -20,6 +20,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
 #define OPT_TRACING_SMPI_GROUP    "tracing/smpi/group"
 #define OPT_TRACING_SMPI_COMPUTING "tracing/smpi/computing"
 #define OPT_TRACING_SMPI_INTERNALS "tracing/smpi/internals"
+#define OPT_TRACING_DISPLAY_SIZES  "tracing/smpi/display_sizes"
 #define OPT_TRACING_CATEGORIZED   "tracing/categorized"
 #define OPT_TRACING_UNCATEGORIZED "tracing/uncategorized"
 #define OPT_TRACING_MSG_PROCESS   "tracing/msg/process"
@@ -51,6 +52,7 @@ static int trace_buffer;
 static int trace_onelink_only;
 static int trace_disable_destroy;
 static int trace_basic;
+static int trace_display_sizes = 0;
 static int trace_disable_link;
 static int trace_disable_power;
 
@@ -76,6 +78,7 @@ static void TRACE_getopts(void)
   trace_onelink_only = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY);
   trace_disable_destroy = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY);
   trace_basic = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_BASIC);
+  trace_display_sizes = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES);
   trace_disable_link = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_LINK);
   trace_disable_power = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_POWER);
 }
@@ -283,6 +286,11 @@ int TRACE_basic (void)
   return trace_basic && TRACE_is_enabled();
 }
 
+int TRACE_display_sizes (void)
+{
+   return trace_display_sizes && trace_smpi_enabled && TRACE_is_enabled();
+}
+
 char *TRACE_get_comment (void)
 {
   return xbt_cfg_get_string(_sg_cfg_set, OPT_TRACING_COMMENT);
@@ -437,6 +445,13 @@ void TRACE_global_init(int *argc, char **argv)
                    xbt_cfgelm_int, &default_basic, 0, 1,
                    NULL, NULL);
 
+  /* display_sizes -- Extended events with message size information */
+  int default_display_sizes = 0;
+  xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES,
+                   "(smpi only for now) Extended events with message size information",
+                   xbt_cfgelm_int, &default_display_sizes, 0, 1,
+                   NULL, NULL);
+
   /* comment */
   char *default_tracing_comment = xbt_strdup ("");
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_COMMENT,
@@ -553,6 +568,10 @@ void TRACE_help (int detailed)
       "  trace. Keep in mind that the trace might be incomplete, without all the\n"
       "  information that would be registered otherwise.",
       detailed);
+  print_line (OPT_TRACING_DISPLAY_SIZES, "Only works for SMPI now. Add message size information",
+      "Message size (in bytes) is added to links, and to states. For collectives, the displayed value \n"
+      "is the more relevant to the collective (total sent by the process, usually)",
+      detailed);
   print_line (OPT_TRACING_COMMENT, "Comment to be added on the top of the trace file.",
       "  Use this to add a comment line to the top of the trace file.",
       detailed);
index 8db2fb8..2f53ec1 100644 (file)
@@ -12,7 +12,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_header, instr, "Paje tracing event sy
 
 extern FILE *tracing_file;
 
-static void TRACE_header_PajeDefineContainerType (int basic)
+static void TRACE_header_PajeDefineContainerType (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDefineContainerType %d\n", PAJE_DefineContainerType);
   fprintf(tracing_file, "%%       Alias string\n");
@@ -25,7 +25,7 @@ static void TRACE_header_PajeDefineContainerType (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeDefineVariableType (int basic)
+static void TRACE_header_PajeDefineVariableType (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDefineVariableType %d\n", PAJE_DefineVariableType);
   fprintf(tracing_file, "%%       Alias string\n");
@@ -39,7 +39,7 @@ static void TRACE_header_PajeDefineVariableType (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeDefineStateType (int basic)
+static void TRACE_header_PajeDefineStateType (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDefineStateType %d\n", PAJE_DefineStateType);
   fprintf(tracing_file, "%%       Alias string\n");
@@ -52,7 +52,7 @@ static void TRACE_header_PajeDefineStateType (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeDefineEventType (int basic)
+static void TRACE_header_PajeDefineEventType (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDefineEventType %d\n", PAJE_DefineEventType);
   fprintf(tracing_file, "%%       Alias string\n");
@@ -65,7 +65,7 @@ static void TRACE_header_PajeDefineEventType (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeDefineLinkType (int basic)
+static void TRACE_header_PajeDefineLinkType (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDefineLinkType %d\n", PAJE_DefineLinkType);
   fprintf(tracing_file, "%%       Alias string\n");
@@ -82,7 +82,7 @@ static void TRACE_header_PajeDefineLinkType (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeDefineEntityValue (int basic)
+static void TRACE_header_PajeDefineEntityValue (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDefineEntityValue %d\n", PAJE_DefineEntityValue);
   fprintf(tracing_file, "%%       Alias string\n");
@@ -96,7 +96,7 @@ static void TRACE_header_PajeDefineEntityValue (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeCreateContainer (int basic)
+static void TRACE_header_PajeCreateContainer (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeCreateContainer %d\n", PAJE_CreateContainer);
   fprintf(tracing_file, "%%       Time date\n");
@@ -107,7 +107,7 @@ static void TRACE_header_PajeCreateContainer (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeDestroyContainer (int basic)
+static void TRACE_header_PajeDestroyContainer (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeDestroyContainer %d\n", PAJE_DestroyContainer);
   fprintf(tracing_file, "%%       Time date\n");
@@ -116,7 +116,7 @@ static void TRACE_header_PajeDestroyContainer (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeSetVariable (int basic)
+static void TRACE_header_PajeSetVariable (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeSetVariable %d\n", PAJE_SetVariable);
   fprintf(tracing_file, "%%       Time date\n");
@@ -126,7 +126,7 @@ static void TRACE_header_PajeSetVariable (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeAddVariable (int basic)
+static void TRACE_header_PajeAddVariable (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeAddVariable %d\n", PAJE_AddVariable);
   fprintf(tracing_file, "%%       Time date\n");
@@ -136,7 +136,7 @@ static void TRACE_header_PajeAddVariable (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeSubVariable (int basic)
+static void TRACE_header_PajeSubVariable (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeSubVariable %d\n", PAJE_SubVariable);
   fprintf(tracing_file, "%%       Time date\n");
@@ -147,7 +147,7 @@ static void TRACE_header_PajeSubVariable (int basic)
 }
 
 
-static void TRACE_header_PajeSetState (int basic)
+static void TRACE_header_PajeSetState (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeSetState %d\n", PAJE_SetState);
   fprintf(tracing_file, "%%       Time date\n");
@@ -157,17 +157,18 @@ static void TRACE_header_PajeSetState (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajePushState (int basic)
+static void TRACE_header_PajePushState (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajePushState %d\n", PAJE_PushState);
   fprintf(tracing_file, "%%       Time date\n");
   fprintf(tracing_file, "%%       Type string\n");
   fprintf(tracing_file, "%%       Container string\n");
   fprintf(tracing_file, "%%       Value string\n");
+  if (size) fprintf(tracing_file, "%%       Size int\n");
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajePopState (int basic)
+static void TRACE_header_PajePopState (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajePopState %d\n", PAJE_PopState);
   fprintf(tracing_file, "%%       Time date\n");
@@ -176,7 +177,7 @@ static void TRACE_header_PajePopState (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeResetState (int basic)
+static void TRACE_header_PajeResetState (int basic, int size)
 {
   if (basic) return;
 
@@ -187,7 +188,7 @@ static void TRACE_header_PajeResetState (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeStartLink (int basic)
+static void TRACE_header_PajeStartLink (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeStartLink %d\n", PAJE_StartLink);
   fprintf(tracing_file, "%%       Time date\n");
@@ -200,10 +201,11 @@ static void TRACE_header_PajeStartLink (int basic)
     fprintf(tracing_file, "%%       StartContainer string\n");
   }
   fprintf(tracing_file, "%%       Key string\n");
+  if (size) fprintf(tracing_file, "%%       Size int\n");
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeEndLink (int basic)
+static void TRACE_header_PajeEndLink (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeEndLink %d\n", PAJE_EndLink);
   fprintf(tracing_file, "%%       Time date\n");
@@ -219,7 +221,7 @@ static void TRACE_header_PajeEndLink (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-static void TRACE_header_PajeNewEvent (int basic)
+static void TRACE_header_PajeNewEvent (int basic, int size)
 {
   fprintf(tracing_file, "%%EventDef PajeNewEvent %d\n", PAJE_NewEvent);
   fprintf(tracing_file, "%%       Time date\n");
@@ -229,27 +231,27 @@ static void TRACE_header_PajeNewEvent (int basic)
   fprintf(tracing_file, "%%EndEventDef\n");
 }
 
-void TRACE_header(int basic)
+void TRACE_header(int basic, int size)
 {
   XBT_DEBUG ("Define paje header");
-  TRACE_header_PajeDefineContainerType (basic);
-  TRACE_header_PajeDefineVariableType (basic);
-  TRACE_header_PajeDefineStateType (basic);
-  TRACE_header_PajeDefineEventType (basic);
-  TRACE_header_PajeDefineLinkType (basic);
-  TRACE_header_PajeDefineEntityValue (basic);
-  TRACE_header_PajeCreateContainer (basic);
-  TRACE_header_PajeDestroyContainer (basic);
-  TRACE_header_PajeSetVariable (basic);
-  TRACE_header_PajeAddVariable (basic);
-  TRACE_header_PajeSubVariable (basic);
-  TRACE_header_PajeSetState (basic);
-  TRACE_header_PajePushState (basic);
-  TRACE_header_PajePopState (basic);
-  TRACE_header_PajeResetState (basic);
-  TRACE_header_PajeStartLink (basic);
-  TRACE_header_PajeEndLink (basic);
-  TRACE_header_PajeNewEvent (basic);
+  TRACE_header_PajeDefineContainerType (basic, size);
+  TRACE_header_PajeDefineVariableType (basic, size);
+  TRACE_header_PajeDefineStateType (basic, size);
+  TRACE_header_PajeDefineEventType (basic, size);
+  TRACE_header_PajeDefineLinkType (basic, size);
+  TRACE_header_PajeDefineEntityValue (basic, size);
+  TRACE_header_PajeCreateContainer (basic, size);
+  TRACE_header_PajeDestroyContainer (basic, size);
+  TRACE_header_PajeSetVariable (basic, size);
+  TRACE_header_PajeAddVariable (basic, size);
+  TRACE_header_PajeSubVariable (basic, size);
+  TRACE_header_PajeSetState (basic, size);
+  TRACE_header_PajePushState (basic, size);
+  TRACE_header_PajePopState (basic, size);
+  TRACE_header_PajeResetState (basic, size);
+  TRACE_header_PajeStartLink (basic, size);
+  TRACE_header_PajeEndLink (basic, size);
+  TRACE_header_PajeNewEvent (basic, size);
 }
 
 #endif
index e3d78b2..457a8d8 100644 (file)
@@ -95,6 +95,7 @@ typedef struct s_pushState {
   container_t container;
   type_t type;
   val_t value;
+  int size;
 }s_pushState_t;
 
 typedef struct s_popState *popState_t;
@@ -116,6 +117,7 @@ typedef struct s_startLink {
   container_t sourceContainer;
   char *value;
   char *key;
+  int size;
 }s_startLink_t;
 
 typedef struct s_endLink *endLink_t;
@@ -194,7 +196,7 @@ void TRACE_paje_start(void)
   dump_comment_file (TRACE_get_comment_file());
 
   /* output header */
-  TRACE_header(TRACE_basic());
+  TRACE_header(TRACE_basic(),TRACE_display_sizes());
 
   buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
 }
@@ -444,19 +446,39 @@ static void print_pajeSetState(paje_event_t event)
 static void print_pajePushState(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-  if (event->timestamp == 0){
-    fprintf(tracing_file, "%d 0 %s %s %s\n",
-        (int)event->event_type,
-        ((pushState_t)event->data)->type->id,
-        ((pushState_t)event->data)->container->id,
-        ((pushState_t)event->data)->value->id);
+  if (!TRACE_display_sizes()){
+    if (event->timestamp == 0){
+      fprintf(tracing_file, "%d 0 %s %s %s\n",
+          (int)event->event_type,
+          ((pushState_t)event->data)->type->id,
+          ((pushState_t)event->data)->container->id,
+          ((pushState_t)event->data)->value->id);
+    }else{
+      fprintf(tracing_file, "%d %lf %s %s %s\n",
+          (int)event->event_type,
+          event->timestamp,
+          ((pushState_t)event->data)->type->id,
+          ((pushState_t)event->data)->container->id,
+          ((pushState_t)event->data)->value->id);
+    }
   }else{
-    fprintf(tracing_file, "%d %lf %s %s %s\n",
-        (int)event->event_type,
-        event->timestamp,
-        ((pushState_t)event->data)->type->id,
-        ((pushState_t)event->data)->container->id,
-        ((pushState_t)event->data)->value->id);
+    if (event->timestamp == 0){
+      fprintf(tracing_file, "%d 0 %s %s %s %d\n",
+          (int)event->event_type,
+          ((pushState_t)event->data)->type->id,
+          ((pushState_t)event->data)->container->id,
+          ((pushState_t)event->data)->value->id,
+          ((pushState_t)event->data)->size);
+    }else{
+      fprintf(tracing_file, "%d %lf %s %s %s %d\n",
+          (int)event->event_type,
+          event->timestamp,
+          ((pushState_t)event->data)->type->id,
+          ((pushState_t)event->data)->container->id,
+          ((pushState_t)event->data)->value->id,
+          ((pushState_t)event->data)->size);
+    }
+
   }
 }
 
@@ -496,24 +518,47 @@ static void print_pajeResetState(paje_event_t event)
 
 static void print_pajeStartLink(paje_event_t event)
 {
+  if (!TRACE_display_sizes()){
+    if (event->timestamp == 0){
+      fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
+          (int)event->event_type,
+          ((startLink_t)event->data)->type->id,
+          ((startLink_t)event->data)->container->id,
+          ((startLink_t)event->data)->value,
+          ((startLink_t)event->data)->sourceContainer->id,
+          ((startLink_t)event->data)->key);
+    }else {
+      fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
+          (int)event->event_type,
+          event->timestamp,
+          ((startLink_t)event->data)->type->id,
+          ((startLink_t)event->data)->container->id,
+          ((startLink_t)event->data)->value,
+          ((startLink_t)event->data)->sourceContainer->id,
+          ((startLink_t)event->data)->key);
+    }
+  }else{
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-  if (event->timestamp == 0){
-    fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
-        (int)event->event_type,
-        ((startLink_t)event->data)->type->id,
-        ((startLink_t)event->data)->container->id,
-        ((startLink_t)event->data)->value,
-        ((startLink_t)event->data)->sourceContainer->id,
-        ((startLink_t)event->data)->key);
-  }else {
-    fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
-        (int)event->event_type,
-        event->timestamp,
-        ((startLink_t)event->data)->type->id,
-        ((startLink_t)event->data)->container->id,
-        ((startLink_t)event->data)->value,
-        ((startLink_t)event->data)->sourceContainer->id,
-        ((startLink_t)event->data)->key);
+    if (event->timestamp == 0){
+      fprintf(tracing_file, "%d 0 %s %s %s %s %s %d\n",
+          (int)event->event_type,
+          ((startLink_t)event->data)->type->id,
+          ((startLink_t)event->data)->container->id,
+          ((startLink_t)event->data)->value,
+          ((startLink_t)event->data)->sourceContainer->id,
+          ((startLink_t)event->data)->key,
+          ((startLink_t)event->data)->size);
+    }else {
+      fprintf(tracing_file, "%d %lf %s %s %s %s %s %d\n",
+          (int)event->event_type,
+          event->timestamp,
+          ((startLink_t)event->data)->type->id,
+          ((startLink_t)event->data)->container->id,
+          ((startLink_t)event->data)->value,
+          ((startLink_t)event->data)->sourceContainer->id,
+          ((startLink_t)event->data)->key,
+          ((startLink_t)event->data)->size);
+    }
   }
 }
 
@@ -797,6 +842,25 @@ void new_pajePushState (double timestamp, container_t container, type_t type, va
   ((pushState_t)(event->data))->type = type;
   ((pushState_t)(event->data))->container = container;
   ((pushState_t)(event->data))->value = value;
+  ((pushState_t)(event->data))->size = -1;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_PushState;
+  event->timestamp = timestamp;
+  event->print = print_pajePushState;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_pushState_t, 1);
+  ((pushState_t)(event->data))->type = type;
+  ((pushState_t)(event->data))->container = container;
+  ((pushState_t)(event->data))->value = value;
+  ((pushState_t)(event->data))->size = size;
 
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
 
@@ -850,6 +914,26 @@ void new_pajeStartLink (double timestamp, container_t container, type_t type, co
   ((startLink_t)(event->data))->sourceContainer = sourceContainer;
   ((startLink_t)(event->data))->value = xbt_strdup(value);
   ((startLink_t)(event->data))->key = xbt_strdup(key);
+  ((startLink_t)(event->data))->size = -1;
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_StartLink;
+  event->timestamp = timestamp;
+  event->print = print_pajeStartLink;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_startLink_t, 1);
+  ((startLink_t)(event->data))->type = type;
+  ((startLink_t)(event->data))->container = container;
+  ((startLink_t)(event->data))->sourceContainer = sourceContainer;
+  ((startLink_t)(event->data))->value = xbt_strdup(value);
+  ((startLink_t)(event->data))->key = xbt_strdup(key);
+  ((startLink_t)(event->data))->size = size;
 
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
 
index 24f2af3..51f9e97 100644 (file)
@@ -103,7 +103,7 @@ extern xbt_dict_t user_link_variables;
 extern double TRACE_last_timestamp_to_dump;
 
 /* instr_paje_header.c */
-void TRACE_header(int basic);
+void TRACE_header(int basic, int size);
 
 /* from paje.c */
 void TRACE_paje_start(void);
@@ -122,9 +122,11 @@ XBT_PUBLIC(void) new_pajeAddVariable (double timestamp, container_t container, t
 XBT_PUBLIC(void) new_pajeSubVariable (double timestamp, container_t container, type_t type, double value);
 XBT_PUBLIC(void) new_pajeSetState (double timestamp, container_t container, type_t type, val_t value);
 XBT_PUBLIC(void) new_pajePushState (double timestamp, container_t container, type_t type, val_t value);
+XBT_PUBLIC(void) new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size);
 XBT_PUBLIC(void) new_pajePopState (double timestamp, container_t container, type_t type);
 XBT_PUBLIC(void) new_pajeResetState (double timestamp, container_t container, type_t type);
 XBT_PUBLIC(void) new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key);
+XBT_PUBLIC(void) new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size);
 XBT_PUBLIC(void) new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key);
 XBT_PUBLIC(void) new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value);
 
@@ -147,6 +149,7 @@ int TRACE_disable_power(void);
 int TRACE_onelink_only (void);
 int TRACE_disable_destroy (void);
 int TRACE_basic (void);
+int TRACE_display_sizes (void);
 char *TRACE_get_comment (void);
 char *TRACE_get_comment_file (void);
 char *TRACE_get_filename(void);
index e5a163b..a31e8a5 100644 (file)
@@ -177,7 +177,7 @@ void TRACE_smpi_finalize(int rank)
   PJ_container_free (container);
 }
 
-void TRACE_smpi_collective_in(int rank, int root, const char *operation)
+void TRACE_smpi_collective_in(int rank, int root, const char *operation, int size)
 {
   if (!TRACE_smpi_is_enabled()) return;
 
@@ -187,7 +187,7 @@ void TRACE_smpi_collective_in(int rank, int root, const char *operation)
   type_t type = PJ_type_get ("MPI_STATE", container->type);
   const char *color = instr_find_color (operation);
   val_t value = PJ_value_get_or_new (operation, color, type);
-  new_pajePushState (SIMIX_get_clock(), container, type, value);
+  new_pajePushStateWithSize (SIMIX_get_clock(), container, type, value, size);
 }
 
 void TRACE_smpi_collective_out(int rank, int root, const char *operation)
@@ -241,7 +241,7 @@ void TRACE_smpi_computing_out(int rank)
   new_pajePopState (SIMIX_get_clock(), container, type);
 }
 
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation)
+void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int size)
 {
   if (!TRACE_smpi_is_enabled()) return;
 
@@ -252,7 +252,7 @@ void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation)
   type_t type = PJ_type_get ("MPI_STATE", container->type);
   const char *color = instr_find_color (operation);
   val_t value = PJ_value_get_or_new (operation, color, type);
-  new_pajePushState (SIMIX_get_clock(), container, type, value);
+  new_pajePushStateWithSize (SIMIX_get_clock(), container, type, value, size);
 }
 
 void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation)
@@ -267,7 +267,7 @@ void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation)
   new_pajePopState (SIMIX_get_clock(), container, type);
 }
 
-void TRACE_smpi_send(int rank, int src, int dst)
+void TRACE_smpi_send(int rank, int src, int dst, int size)
 {
   if (!TRACE_smpi_is_enabled()) return;
 
@@ -280,7 +280,7 @@ void TRACE_smpi_send(int rank, int src, int dst)
   container_t container = PJ_container_get (str);
   type_t type = PJ_type_get ("MPI_LINK", PJ_type_get_root());
 
-  new_pajeStartLink (SIMIX_get_clock(), PJ_container_get_root(), type, container, "PTP", key);
+  new_pajeStartLinkWithSize (SIMIX_get_clock(), PJ_container_get_root(), type, container, "PTP", key, size);
 }
 
 void TRACE_smpi_recv(int rank, int src, int dst)
index 864cb33..a498353 100644 (file)
@@ -548,7 +548,7 @@ void mpi_comm_get_parent_ ( int*parent, int* ierr);
 /* from smpi_instr.c */
 void TRACE_internal_smpi_set_category (const char *category);
 const char *TRACE_internal_smpi_get_category (void);
-void TRACE_smpi_collective_in(int rank, int root, const char *operation);
+void TRACE_smpi_collective_in(int rank, int root, const char *operation, int size);
 void TRACE_smpi_collective_out(int rank, int root, const char *operation);
 void TRACE_smpi_computing_init(int rank);
 void TRACE_smpi_computing_out(int rank);
index f114a57..273ce1e 100644 (file)
@@ -345,7 +345,7 @@ void smpi_mpi_start(MPI_Request request)
     #ifdef HAVE_TRACING
       int rank = smpi_process_index();
       if (TRACE_smpi_view_internals()) {
-        TRACE_smpi_send(rank, rank, receiver);
+        TRACE_smpi_send(rank, rank, receiver,request->size);
       }
     #endif
 /*    if(receiver == MPI_UNDEFINED) {*/
index d7fed42..d4b259d 100644 (file)
@@ -1044,7 +1044,7 @@ int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int src,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   int src_traced = smpi_group_index(smpi_comm_group(comm), src);
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
 
     *request = smpi_mpi_irecv(buf, count, datatype, src, tag, comm);
@@ -1091,8 +1091,8 @@ int PMPI_Isend(void *buf, int count, MPI_Datatype datatype, int dst,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_send(rank, rank, dst_traced);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+  TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
 #endif
 
     *request = smpi_mpi_isend(buf, count, datatype, dst, tag, comm);
@@ -1137,8 +1137,8 @@ int PMPI_Issend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, M
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_send(rank, rank, dst_traced);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+  TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
 #endif
 
     *request = smpi_mpi_issend(buf, count, datatype, dst, tag, comm);
@@ -1183,8 +1183,7 @@ int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   int src_traced = smpi_group_index(smpi_comm_group(comm), src);
   TRACE_smpi_computing_out(rank);
-
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
 
     smpi_mpi_recv(buf, count, datatype, src, tag, comm, status);
@@ -1230,8 +1229,8 @@ int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dst, int tag,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_send(rank, rank, dst_traced);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+  TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
 #endif
 
     smpi_mpi_send(buf, count, datatype, dst, tag, comm);
@@ -1274,8 +1273,8 @@ int PMPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MP
    int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
    TRACE_smpi_computing_out(rank);
    int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-   TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__);
-   TRACE_smpi_send(rank, rank, dst_traced);
+   TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+   TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
  #endif
 
      smpi_mpi_ssend(buf, count, datatype, dst, tag, comm);
@@ -1325,8 +1324,8 @@ int PMPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
   TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
   int src_traced = smpi_group_index(smpi_comm_group(comm), src);
-  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__);
-  TRACE_smpi_send(rank, rank, dst_traced);
+  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, sendcount*smpi_datatype_size(sendtype));
+  TRACE_smpi_send(rank, rank, dst_traced,sendcount*smpi_datatype_size(sendtype));
 #endif
 
 
@@ -1487,7 +1486,7 @@ int PMPI_Wait(MPI_Request * request, MPI_Status * status)
   int dst_traced = (*request)->dst;
   MPI_Comm comm = (*request)->comm;
   int is_wait_for_receive = (*request)->recv;
-  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__,-1);
 #endif
 
     smpi_mpi_wait(request, status);
@@ -1537,7 +1536,7 @@ int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * sta
   int rank_traced = smpi_process_index();
   TRACE_smpi_computing_out(rank_traced);
 
-  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,count);
 
 #endif
   if (index == NULL) {
@@ -1601,7 +1600,7 @@ int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
   int rank_traced = smpi_process_index();
   TRACE_smpi_computing_out(rank_traced);
 
-  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,count);
 #endif
   int retval = smpi_mpi_waitall(count, requests, status);
 #ifdef HAVE_TRACING
@@ -1676,7 +1675,7 @@ int PMPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm c
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1700,7 +1699,7 @@ int PMPI_Barrier(MPI_Comm comm)
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, smpi_comm_size(comm));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1727,7 +1726,7 @@ int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1772,7 +1771,7 @@ int PMPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1815,7 +1814,7 @@ int PMPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1854,7 +1853,7 @@ int PMPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1897,7 +1896,7 @@ int PMPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype,
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
 
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1932,7 +1931,9 @@ int PMPI_Scatterv(void *sendbuf, int *sendcounts, int *displs,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  int count=0, i;
+  for(i=0; i<smpi_comm_size(comm);i++)count+=sendcounts[i];
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -1968,7 +1969,7 @@ int PMPI_Reduce(void *sendbuf, void *recvbuf, int count,
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2012,7 +2013,7 @@ int PMPI_Allreduce(void *sendbuf, void *recvbuf, int count,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2054,7 +2055,7 @@ int PMPI_Scan(void *sendbuf, void *recvbuf, int count,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2082,7 +2083,7 @@ int PMPI_Exscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2110,7 +2111,9 @@ int PMPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  int count=0, i;
+  for(i=0; i<smpi_comm_size(comm);i++)count+=recvcounts[i];
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2146,7 +2149,7 @@ int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, recvcount*smpi_comm_size(comm)*smpi_datatype_size(datatype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2183,7 +2186,7 @@ int PMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, sendcount*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
@@ -2211,7 +2214,9 @@ int PMPI_Alltoallv(void *sendbuf, int *sendcounts, int *senddisps,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  int i, size=0;
+  for(i=0; i< smpi_comm_size(comm);i++)size+=sendcounts[i];
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, size*smpi_datatype_size(sendtype));
 #endif
   if (comm == MPI_COMM_NULL) {
     retval = MPI_ERR_COMM;
index 2efcaa8..d52ec60 100644 (file)
@@ -161,8 +161,8 @@ static void action_send(const char *const *action)
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_send(rank, rank, dst_traced);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
   smpi_mpi_send(NULL, size, MPI_CURRENT_TYPE, to , 0, MPI_COMM_WORLD);
@@ -190,8 +190,8 @@ static void action_Isend(const char *const *action)
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_send(rank, rank, dst_traced);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
   request = smpi_mpi_isend(NULL, size, MPI_CURRENT_TYPE, to, 0,MPI_COMM_WORLD);
@@ -221,7 +221,7 @@ static void action_recv(const char *const *action) {
   int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
   TRACE_smpi_computing_out(rank);
 
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
   smpi_mpi_recv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD, &status);
@@ -251,7 +251,7 @@ static void action_Irecv(const char *const *action)
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
   request = smpi_mpi_irecv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD);
@@ -287,7 +287,7 @@ static void action_wait(const char *const *action){
   int src_traced = smpi_group_rank(group, request->src);
   int dst_traced = smpi_group_rank(group, request->dst);
   int is_wait_for_receive = request->recv;
-  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__);
+  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, -1);
 #endif
   smpi_mpi_wait(&request, &status);
 #ifdef HAVE_TRACING
@@ -347,7 +347,7 @@ static void action_waitall(const char *const *action){
    int rank_traced = smpi_process_index();
    TRACE_smpi_computing_out(rank_traced);
 
-   TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__);
+   TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__, count_requests);
   #endif
 
     smpi_mpi_waitall(count_requests, requests, status);
@@ -380,7 +380,7 @@ static void action_barrier(const char *const *action){
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, smpi_comm_size(MPI_COMM_WORLD));
 #endif
   smpi_mpi_barrier(MPI_COMM_WORLD);
 #ifdef HAVE_TRACING
@@ -414,7 +414,7 @@ static void action_bcast(const char *const *action)
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), 0);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
   smpi_mpi_bcast(NULL, size, MPI_CURRENT_TYPE, root, MPI_COMM_WORLD);
@@ -445,7 +445,7 @@ static void action_reduce(const char *const *action)
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), 0);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,comm_size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
    mpi_coll_reduce_fun(NULL, NULL, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, root, MPI_COMM_WORLD);
    smpi_execute_flops(comp_size);
@@ -468,7 +468,7 @@ static void action_allReduce(const char *const *action) {
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,comp_size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
   mpi_coll_reduce_fun(NULL, NULL, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, 0, MPI_COMM_WORLD);
   smpi_execute_flops(comp_size);
@@ -502,7 +502,7 @@ static void action_allToAll(const char *const *action) {
 #ifdef HAVE_TRACING
   int rank = smpi_process_index();
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,send_size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
   mpi_coll_alltoall_fun(send, send_size, MPI_CURRENT_TYPE, recv, recv_size, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
@@ -554,7 +554,7 @@ static void action_gather(const char *const *action) {
 
 #ifdef HAVE_TRACING
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,send_size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 smpi_mpi_gather(send, send_size, MPI_CURRENT_TYPE,
                 recv, recv_size, MPI_CURRENT_TYPE2,
@@ -609,7 +609,7 @@ static void action_reducescatter(const char *const *action) {
 
 #ifdef HAVE_TRACING
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, recv_sum*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
    mpi_coll_reduce_fun(NULL, NULL, recv_sum, MPI_CURRENT_TYPE, MPI_OP_NULL,
        root, MPI_COMM_WORLD);
@@ -672,7 +672,7 @@ static void action_allgatherv(const char *const *action) {
 #ifdef HAVE_TRACING
   int rank = MPI_COMM_WORLD != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
 mpi_coll_allgatherv_fun(sendbuf, sendcount, MPI_CURRENT_TYPE, recvbuf, recvcounts, disps, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
@@ -743,7 +743,9 @@ static void action_allToAllv(const char *const *action) {
 #ifdef HAVE_TRACING
   int rank = MPI_COMM_WORLD != MPI_COMM_NULL ? smpi_process_index() : -1;
   TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__);
+  int count=0;
+  for(i=0;i<comm_size;i++) count+=sendcounts[i];
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,count*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
     mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps,     MPI_CURRENT_TYPE,
                                recvbuf, recvcounts, recvdisps, MPI_CURRENT_TYPE,