Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Introduce new config option 'smpi/init'
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Thu, 2 Jun 2016 14:41:15 +0000 (16:41 +0200)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Thu, 2 Jun 2016 14:41:15 +0000 (16:41 +0200)
This option allows the user to calibrate the time
that SMPI accounts for a call to SMPI. Although these timings
are normally miniscule with just a fraction of a second, they
may be of interest to someone, especially since they come at almost
no cost. (And almost no code needs to be maintained.)

src/smpi/private.h
src/smpi/smpi_base.cpp
src/smpi/smpi_pmpi.cpp

index be67f01..f376662 100644 (file)
@@ -193,6 +193,7 @@ XBT_PRIVATE int smpi_enabled(void);
 XBT_PRIVATE void smpi_global_init(void);
 XBT_PRIVATE void smpi_global_destroy(void);
 XBT_PRIVATE double smpi_mpi_wtime(void);
+XBT_PRIVATE void smpi_mpi_init(void);
 
 XBT_PRIVATE bool is_datatype_valid(MPI_Datatype datatype);
 
index 11512ab..497177b 100644 (file)
@@ -82,6 +82,8 @@ xbt_dynar_t smpi_ois_values = NULL;
 
 static simgrid::config::Flag<double> smpi_wtime_sleep(
   "smpi/wtime", "Minimum time to inject inside a call to MPI_Wtime", 0.0);
+static simgrid::config::Flag<double> smpi_init_sleep(
+  "smpi/init", "Time to inject inside a call to MPI_Init", 0.0);
 static simgrid::config::Flag<double> smpi_iprobe_sleep(
   "smpi/iprobe", "Minimum time to inject inside a call to MPI_Iprobe", 1e-4);
 static simgrid::config::Flag<double> smpi_test_sleep(
@@ -218,6 +220,11 @@ static double smpi_or(double size)
   return current;
 }
 
+void smpi_mpi_init() {
+  if(smpi_init_sleep > 0) 
+    simcall_process_sleep(smpi_init_sleep);
+}
+
 double smpi_mpi_wtime(){
   double time;
   if (smpi_process_initialized() != 0 && 
index 9fcc122..a4ee282 100644 (file)
@@ -39,6 +39,9 @@ int PMPI_Init(int *argc, char ***argv)
     TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
     smpi_bench_begin();
   }
+
+  smpi_mpi_init();
+
   return MPI_SUCCESS;
 }