Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Initialize fortran data structures in all cases.
[simgrid.git] / src / smpi / internals / smpi_global.cpp
index 3ce72e1..f1a3199 100644 (file)
@@ -7,6 +7,7 @@
 #include "mc/mc.h"
 #include "simgrid/s4u/Engine.hpp"
 #include "smpi_coll.hpp"
+#include "smpi_f2c.hpp"
 #include "smpi_process.hpp"
 #include "src/msg/msg_private.hpp"
 #include "src/simix/smx_private.hpp"
@@ -356,6 +357,8 @@ void smpi_global_destroy()
   if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
     smpi_destroy_global_memory_segments();
   smpi_free_static();
+  if(simgrid::smpi::F2C::lookup() != nullptr)
+    simgrid::smpi::F2C::delete_lookup();
 }
 
 static void smpi_init_options(){
@@ -366,7 +369,7 @@ static void smpi_init_options(){
   simgrid::smpi::Colls::smpi_coll_cleanup_callback = nullptr;
   smpi_cpu_threshold                               = simgrid::config::get_value<double>("smpi/cpu-threshold");
   smpi_host_speed                                  = simgrid::config::get_value<double>("smpi/host-speed");
-  xbt_assert(smpi_host_speed >= 0, "You're trying to set the host_speed to a negative value (%f)", smpi_host_speed);
+  xbt_assert(smpi_host_speed > 0.0, "You're trying to set the host_speed to a non-positive value (given: %f)", smpi_host_speed);
   std::string smpi_privatize_option = simgrid::config::get_value<std::string>("smpi/privatization");
   if (smpi_privatize_option == "no" || smpi_privatize_option == "0")
     smpi_privatize_global_variables = SmpiPrivStrategies::NONE;
@@ -707,6 +710,7 @@ void SMPI_finalize(){
 }
 
 void smpi_mpi_init() {
+  smpi_init_fortran_types();
   if(smpi_init_sleep > 0)
     simcall_process_sleep(smpi_init_sleep);
 }