From: suter Date: Mon, 9 Jul 2012 12:31:25 +0000 (+0200) Subject: Add what's missing to load traces from SMPI. X-Git-Tag: v3_8~307 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6b7630e0fc3f68bc100c7a96a419caafa46881b2?ds=sidebyside Add what's missing to load traces from SMPI. --- diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index 0a4152e48a..1488ab4ee0 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -462,5 +462,8 @@ XBT_PUBLIC(int) MAIN__(void); XBT_PUBLIC(int) smpi_process_index(void); +/* Trace replay specific stuff */ +XBT_PUBLIC(void) smpi_action_trace_run(char *); + SG_END_DECL() #endif diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index 991d09f2ca..62429c854e 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -7,6 +7,7 @@ #include "private.h" #include "xbt/time.h" #include "mc/mc.h" +#include "xbt/replay.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_base, smpi, "Logging specific to SMPI (base)"); @@ -54,6 +55,35 @@ static MPI_Request build_request(void *buf, int count, return request; } +void smpi_action_trace_run(char *path) +{ + char *name; + xbt_dynar_t todo; + xbt_dict_cursor_t cursor; + + action_fp=NULL; + if (path) { + action_fp = fopen(path, "r"); + xbt_assert(action_fp != NULL, "Cannot open %s: %s", path, + strerror(errno)); + } + + if (!xbt_dict_is_empty(action_queues)) { + XBT_WARN + ("Not all actions got consumed. If the simulation ended successfully (without deadlock), you may want to add new processes to your deployment file."); + + + xbt_dict_foreach(action_queues, cursor, name, todo) { + XBT_WARN("Still %lu actions for %s", xbt_dynar_length(todo), name); + } + } + + if (path) + fclose(action_fp); + xbt_dict_free(&action_queues); + action_queues = xbt_dict_new_homogeneous(NULL); +} + static void smpi_mpi_request_free_voidp(void* request) { MPI_Request req = request;