Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add what's missing to load traces from SMPI.
authorsuter <frederic.suter@cc.in2p3.fr>
Mon, 9 Jul 2012 12:31:25 +0000 (14:31 +0200)
committersuter <frederic.suter@cc.in2p3.fr>
Mon, 9 Jul 2012 12:33:44 +0000 (14:33 +0200)
include/smpi/smpi.h
src/smpi/smpi_base.c

index 0a4152e..1488ab4 100644 (file)
@@ -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
index 991d09f..62429c8 100644 (file)
@@ -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;