Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add settings for Intel MPI with 2,4,8,16 processes/node on Stampede
[simgrid.git] / src / smpi / smpi_bench.c
index b97f86e..4138cac 100644 (file)
@@ -69,12 +69,12 @@ xbt_dict_t allocs = NULL;          /* Allocated on first use */
 xbt_dict_t allocs_metadata = NULL; /* Allocated on first use */
 xbt_dict_t samples = NULL;         /* Allocated on first use */
 xbt_dict_t calls = NULL;           /* Allocated on first use */
-__thread int smpi_current_rank = 0;      /* Updated after each MPI call */
 
 double smpi_cpu_threshold;
 double smpi_running_power;
 
 int* fds;
+size_t mappings_count = 0;
 void** mappings;
 int loaded_page = -1;
 char* start_data_exe = NULL;
@@ -118,7 +118,7 @@ static void* shm_map(int fd, size_t size, shared_data_t* data) {
     xbt_die("Could not map fd %d: %s", fd, strerror(errno));
   }
   if(!allocs_metadata) {
-    allocs_metadata = xbt_dict_new_homogeneous(xbt_free);
+    allocs_metadata = xbt_dict_new_homogeneous(xbt_free_f);
   }
   snprintf(loc, PTR_STRLEN, "%p", mem);
   meta = xbt_new(shared_metadata_t, 1);
@@ -192,7 +192,6 @@ void smpi_bench_begin(void)
 {
   switch_data_segment(smpi_process_index());
   xbt_os_threadtimer_start(smpi_process_timer());
-  smpi_current_rank = smpi_process_index();
 }
 
 void smpi_bench_end(void)
@@ -206,7 +205,10 @@ void smpi_bench_end(void)
     xbt_backtrace_display_current();
     xbt_die("Aborting.");
   }
-  smpi_execute(xbt_os_timer_elapsed(timer));
+  // Simulate the benchmarked computation unless disabled via command-line argument
+  if (sg_cfg_get_boolean("smpi/simulate_computation")) {
+    smpi_execute(xbt_os_timer_elapsed(timer));
+  }
 }
 
 /* Private sleep function used by smpi_sleep() and smpi_usleep() */
@@ -609,7 +611,6 @@ void switch_data_segment(int dest){
   if (loaded_page==dest)//no need to switch either
     return;
 
-
 #ifdef HAVE_MMAP
   int i;
   if(loaded_page==-1){//initial switch, do the copy from the real page here