From: Augustin Degomme Date: Thu, 29 Aug 2013 11:52:06 +0000 (+0200) Subject: add option tracing/smpi/display_sizes to display size of message in trace for smpi... X-Git-Tag: v3_9_90~123^2~32 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0198d4f8e942b276c9b53f52b421bba99c93ed0a add option tracing/smpi/display_sizes to display size of message in trace for smpi (for now). --- diff --git a/src/include/smpi/smpi_interface.h b/src/include/smpi/smpi_interface.h index 04fc1da637..00308703cb 100644 --- a/src/include/smpi/smpi_interface.h +++ b/src/include/smpi/smpi_interface.h @@ -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); diff --git a/src/instr/instr_config.c b/src/instr/instr_config.c index 7d61fef6da..7081bc0a64 100644 --- a/src/instr/instr_config.c +++ b/src/instr/instr_config.c @@ -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); diff --git a/src/instr/instr_paje_header.c b/src/instr/instr_paje_header.c index 8db2fb832e..2f53ec12db 100644 --- a/src/instr/instr_paje_header.c +++ b/src/instr/instr_paje_header.c @@ -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 diff --git a/src/instr/instr_paje_trace.c b/src/instr/instr_paje_trace.c index e3d78b2f0b..457a8d8843 100644 --- a/src/instr/instr_paje_trace.c +++ b/src/instr/instr_paje_trace.c @@ -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); diff --git a/src/instr/instr_private.h b/src/instr/instr_private.h index 24f2af342d..51f9e979ee 100644 --- a/src/instr/instr_private.h +++ b/src/instr/instr_private.h @@ -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); diff --git a/src/smpi/instr_smpi.c b/src/smpi/instr_smpi.c index e5a163b086..a31e8a58a4 100644 --- a/src/smpi/instr_smpi.c +++ b/src/smpi/instr_smpi.c @@ -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) diff --git a/src/smpi/private.h b/src/smpi/private.h index 864cb33359..a498353749 100644 --- a/src/smpi/private.h +++ b/src/smpi/private.h @@ -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); diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index f114a57aa1..273ce1ec62 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -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) {*/ diff --git a/src/smpi/smpi_pmpi.c b/src/smpi/smpi_pmpi.c index d7fed42d75..d4b259d9c0 100644 --- a/src/smpi/smpi_pmpi.c +++ b/src/smpi/smpi_pmpi.c @@ -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; isrc); 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