Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Indentation..
[simgrid.git] / src / smpi / smpi_global.c
index 585847b..bada714 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,24 +426,25 @@ 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);
     //process_data[i]->index = i;
-    process_data[i]->argc = NULL;
-    process_data[i]->argv = NULL;
+    process_data[i]->argc    = NULL;
+    process_data[i]->argv    = NULL;
     process_data[i]->mailbox = simcall_rdv_create(get_mailbox_name(name, i));
     process_data[i]->mailbox_small =
         simcall_rdv_create(get_mailbox_name_small(name, i));
-    process_data[i]->mailboxes_mutex=xbt_mutex_init();
-    process_data[i]->timer = xbt_os_timer_new();
+    process_data[i]->mailboxes_mutex = xbt_mutex_init();
+    process_data[i]->timer           = xbt_os_timer_new();
     if (MC_is_active())
       MC_ignore_heap(process_data[i]->timer, xbt_os_timer_size());
-    process_data[i]->comm_self = MPI_COMM_NULL;
-    process_data[i]->comm_intra = MPI_COMM_NULL;
-    process_data[i]->comm_world = NULL;
-    process_data[i]->state = SMPI_UNINITIALIZED;
-    process_data[i]->sampling = 0;
+    process_data[i]->comm_self            = MPI_COMM_NULL;
+    process_data[i]->comm_intra           = MPI_COMM_NULL;
+    process_data[i]->comm_world           = NULL;
+    process_data[i]->state                = SMPI_UNINITIALIZED;
+    process_data[i]->sampling             = 0;
     process_data[i]->finalization_barrier = NULL;
   }
   //if the process was launched through smpirun script
@@ -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;
@@ -528,9 +530,7 @@ static void smpi_init_logs(){
                                    function: xbt_log_appender_file.c depends on it
                                    DO NOT connect this in XBT or so, or it will be
                                    useless to xbt_log_appender_file.c */
-#ifdef HAVE_TRACING
   XBT_LOG_CONNECT(instr_smpi);
-#endif
   XBT_LOG_CONNECT(smpi_base);
   XBT_LOG_CONNECT(smpi_bench);
   XBT_LOG_CONNECT(smpi_coll);
@@ -641,12 +641,10 @@ int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
 
   smpi_init_logs();
 
-#ifdef HAVE_TRACING
   TRACE_global_init(&argc, argv);
 
   TRACE_add_start_function(TRACE_smpi_alloc);
   TRACE_add_end_function(TRACE_smpi_release);
-#endif
 
   SIMIX_global_init(&argc, argv);
 
@@ -670,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();
@@ -678,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);
@@ -691,9 +689,7 @@ int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
 
   smpi_global_destroy();
 
-#ifdef HAVE_TRACING
   TRACE_end();
-#endif
 
   return 0;
 }
@@ -705,11 +701,8 @@ void SMPI_init(){
   smpi_init_options();
   smpi_global_init();
   smpi_check_options();
-#ifdef HAVE_TRACING
-  if (TRACE_is_enabled() && TRACE_is_configured()) {
+  if (TRACE_is_enabled() && TRACE_is_configured())
     TRACE_smpi_alloc();
-  }
-#endif
   if(smpi_privatize_global_variables)
     smpi_initialize_global_memory_segments();
 }