Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Fixed output alignment for display_timing option
[simgrid.git] / src / smpi / smpi_global.c
index 4e8202c..263b191 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2014. The SimGrid Team.
+/* Copyright (c) 2007-2015. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -12,6 +12,7 @@
 #include "surf/surf.h"
 #include "simix/smx_private.h"
 #include "simgrid/sg_config.h"
+#include "mc/mc_replay.h"
 
 #include <float.h>              /* DBL_MAX */
 #include <stdint.h>
@@ -43,11 +44,11 @@ typedef struct s_smpi_process_data {
 
 static smpi_process_data_t *process_data = NULL;
 int process_count = 0;
+int smpi_universe_size = 0;
 int* index_to_process_data = NULL;
 extern double smpi_total_benched_time;
 xbt_os_timer_t global_timer;
 MPI_Comm MPI_COMM_WORLD = MPI_COMM_UNINITIALIZED;
-int MPI_UNIVERSE_SIZE;
 
 MPI_Errhandler *MPI_ERRORS_RETURN = NULL;
 MPI_Errhandler *MPI_ERRORS_ARE_FATAL = NULL;
@@ -84,7 +85,7 @@ void smpi_process_init(int *argc, char ***argv)
     index = smpi_process_index_of_smx_process(proc);
 
     if(!index_to_process_data){
-        index_to_process_data=(int*)xbt_malloc(SIMIX_process_count()*sizeof(int));
+      index_to_process_data=(int*)xbt_malloc(SIMIX_process_count()*sizeof(int));
     }
     MPI_Comm* temp_comm_world;
     xbt_bar_t temp_bar;
@@ -350,8 +351,8 @@ void smpi_comm_copy_buffer_callback(smx_synchro_t comm,
   void* tmpbuff=buff;
 
   if((smpi_privatize_global_variables)
-      && ((char*)buff >= start_data_exe)
-      && ((char*)buff < start_data_exe + size_data_exe )
+      && ((char*)buff >= smpi_start_data_exe)
+      && ((char*)buff < smpi_start_data_exe + smpi_size_data_exe )
     ){
        XBT_DEBUG("Privatization : We are copying from a zone inside global memory... Saving data to temp buffer !");
        smpi_switch_data_segment(((smpi_process_data_t)SIMIX_process_get_data(comm->comm.src_proc))->index);
@@ -361,8 +362,8 @@ void smpi_comm_copy_buffer_callback(smx_synchro_t comm,
 
 
   if((smpi_privatize_global_variables)
-      && ((char*)comm->comm.dst_buff >= start_data_exe)
-      && ((char*)comm->comm.dst_buff < start_data_exe + size_data_exe )
+      && ((char*)comm->comm.dst_buff >= smpi_start_data_exe)
+      && ((char*)comm->comm.dst_buff < smpi_start_data_exe + smpi_size_data_exe )
     ){
        XBT_DEBUG("Privatization : We are copying to a zone inside global memory - Switch data segment");
        smpi_switch_data_segment(((smpi_process_data_t)SIMIX_process_get_data(comm->comm.dst_proc))->index);
@@ -425,6 +426,7 @@ void smpi_global_init(void)
     process_count = SIMIX_process_count();
     smpirun=1;
   }
+  smpi_universe_size = process_count;
   process_data = xbt_new0(smpi_process_data_t, process_count);
   for (i = 0; i < process_count; i++) {
     process_data[i] = xbt_new(s_smpi_process_data_t, 1);
@@ -452,9 +454,9 @@ void smpi_global_init(void)
   if(smpirun){
     group = smpi_group_new(process_count);
     MPI_COMM_WORLD = smpi_comm_new(group, NULL);
+    MPI_Attr_put(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, (void *)(MPI_Aint)process_count);
     xbt_bar_t bar=xbt_barrier_init(process_count);
 
-    MPI_UNIVERSE_SIZE = smpi_comm_size(MPI_COMM_WORLD);
     for (i = 0; i < process_count; i++) {
       smpi_group_set_mapping(group, i, i);
       process_data[i]->finalization_barrier = bar;
@@ -666,7 +668,7 @@ int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
   fflush(stderr);
 
   if (MC_is_active()) {
-    MC_do_the_modelcheck_for_real();
+    MC_run();
   } else {
   
     SIMIX_run();
@@ -674,7 +676,7 @@ int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
     xbt_os_walltimer_stop(global_timer);
     if (sg_cfg_get_boolean("smpi/display_timing")){
       double global_time = xbt_os_timer_elapsed(global_timer);
-      XBT_INFO("Simulated time: %g seconds. \n "
+      XBT_INFO("Simulated time: %g seconds. \n\n"
           "The simulation took %g seconds (after parsing and platform setup)\n"
           "%g seconds were actual computation of the application"
           , SIMIX_get_clock(), global_time , smpi_total_benched_time);