Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sort out the functions on MPI init/fini
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 1 Aug 2019 05:11:31 +0000 (07:11 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 1 Aug 2019 05:11:31 +0000 (07:11 +0200)
src/smpi/include/private.hpp
src/smpi/internals/smpi_global.cpp

index 62da58d..5fcbe2f 100644 (file)
@@ -86,8 +86,6 @@ XBT_PRIVATE void smpi_comm_null_copy_buffer_callback(simgrid::kernel::activity::
                                                      size_t buff_size);
 
 XBT_PRIVATE int smpi_enabled();
                                                      size_t buff_size);
 
 XBT_PRIVATE int smpi_enabled();
-XBT_PRIVATE void smpi_global_init();
-XBT_PRIVATE void smpi_global_destroy();
 XBT_PRIVATE double smpi_mpi_wtime();
 XBT_PRIVATE void smpi_mpi_init();
 
 XBT_PRIVATE double smpi_mpi_wtime();
 XBT_PRIVATE void smpi_mpi_init();
 
index 17e62ba..5221062 100644 (file)
@@ -245,32 +245,8 @@ int smpi_enabled() {
   return MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED;
 }
 
   return MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED;
 }
 
-void smpi_global_init()
+static void smpi_init_papi()
 {
 {
-  if (not MC_is_active()) {
-    global_timer = xbt_os_timer_new();
-    xbt_os_walltimer_start(global_timer);
-  }
-
-  std::string filename = simgrid::config::get_value<std::string>("smpi/comp-adjustment-file");
-  if (not filename.empty()) {
-    std::ifstream fstream(filename);
-    xbt_assert(fstream.is_open(), "Could not open file %s. Does it exist?", filename.c_str());
-
-    std::string line;
-    typedef boost::tokenizer< boost::escaped_list_separator<char>> Tokenizer;
-    std::getline(fstream, line); // Skip the header line
-    while (std::getline(fstream, line)) {
-      Tokenizer tok(line);
-      Tokenizer::iterator it  = tok.begin();
-      Tokenizer::iterator end = std::next(tok.begin());
-
-      std::string location = *it;
-      boost::trim(location);
-      location2speedup.insert(std::pair<std::string, double>(location, std::stod(*end)));
-    }
-  }
-
 #if HAVE_PAPI
   // This map holds for each computation unit (such as "default" or "process1" etc.)
   // the configuration as given by the user (counter data as a pair of (counter_name, counter_counter))
 #if HAVE_PAPI
   // This map holds for each computation unit (such as "default" or "process1" etc.)
   // the configuration as given by the user (counter data as a pair of (counter_name, counter_counter))
@@ -336,27 +312,6 @@ void smpi_global_init()
 #endif
 }
 
 #endif
 }
 
-void smpi_global_destroy()
-{
-  smpi_bench_destroy();
-  smpi_shared_destroy();
-  smpi_deployment_cleanup_instances();
-
-  if (simgrid::smpi::Colls::smpi_coll_cleanup_callback != nullptr)
-    simgrid::smpi::Colls::smpi_coll_cleanup_callback();
-
-  MPI_COMM_WORLD = MPI_COMM_NULL;
-
-  if (not MC_is_active()) {
-    xbt_os_timer_free(global_timer);
-  }
-
-  if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
-    smpi_destroy_global_memory_segments();
-  if(simgrid::smpi::F2C::lookup() != nullptr)
-    simgrid::smpi::F2C::delete_lookup();
-}
-
 static void smpi_init_options(){
   // return if already called
   if (smpi_cpu_threshold > -1)
 static void smpi_init_options(){
   // return if already called
   if (smpi_cpu_threshold > -1)
@@ -691,7 +646,7 @@ int smpi_main(const char* executable, int argc, char* argv[])
       "You may want to use sampling functions or trace replay to reduce this.");
     }
   }
       "You may want to use sampling functions or trace replay to reduce this.");
     }
   }
-  smpi_global_destroy();
+  SMPI_finalize();
 
   return smpi_exit_status;
 }
 
   return smpi_exit_status;
 }
@@ -714,12 +669,52 @@ void SMPI_init(){
       [](simgrid::s4u::Host& host) { host.extension_set(new simgrid::smpi::Host(&host)); });
 
   smpi_init_options();
       [](simgrid::s4u::Host& host) { host.extension_set(new simgrid::smpi::Host(&host)); });
 
   smpi_init_options();
-  smpi_global_init();
+  if (not MC_is_active()) {
+    global_timer = xbt_os_timer_new();
+    xbt_os_walltimer_start(global_timer);
+  }
+
+  std::string filename = simgrid::config::get_value<std::string>("smpi/comp-adjustment-file");
+  if (not filename.empty()) {
+    std::ifstream fstream(filename);
+    xbt_assert(fstream.is_open(), "Could not open file %s. Does it exist?", filename.c_str());
+
+    std::string line;
+    typedef boost::tokenizer<boost::escaped_list_separator<char>> Tokenizer;
+    std::getline(fstream, line); // Skip the header line
+    while (std::getline(fstream, line)) {
+      Tokenizer tok(line);
+      Tokenizer::iterator it  = tok.begin();
+      Tokenizer::iterator end = std::next(tok.begin());
+
+      std::string location = *it;
+      boost::trim(location);
+      location2speedup.insert(std::pair<std::string, double>(location, std::stod(*end)));
+    }
+  }
+  smpi_init_papi();
   smpi_check_options();
 }
 
   smpi_check_options();
 }
 
-void SMPI_finalize(){
-  smpi_global_destroy();
+void SMPI_finalize()
+{
+  smpi_bench_destroy();
+  smpi_shared_destroy();
+  smpi_deployment_cleanup_instances();
+
+  if (simgrid::smpi::Colls::smpi_coll_cleanup_callback != nullptr)
+    simgrid::smpi::Colls::smpi_coll_cleanup_callback();
+
+  MPI_COMM_WORLD = MPI_COMM_NULL;
+
+  if (not MC_is_active()) {
+    xbt_os_timer_free(global_timer);
+  }
+
+  if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
+    smpi_destroy_global_memory_segments();
+  if (simgrid::smpi::F2C::lookup() != nullptr)
+    simgrid::smpi::F2C::delete_lookup();
 }
 
 void smpi_mpi_init() {
 }
 
 void smpi_mpi_init() {