Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
smpi/running-power is renamed to smpi/host-speed
[simgrid.git] / src / smpi / smpi_global.cpp
index 7767c88..5429977 100644 (file)
@@ -74,6 +74,8 @@ int process_count = 0;
 int smpi_universe_size = 0;
 int* index_to_process_data = nullptr;
 extern double smpi_total_benched_time;
+extern xbt_dict_t smpi_type_keyvals;
+extern xbt_dict_t smpi_comm_keyvals;
 xbt_os_timer_t global_timer;
 MPI_Comm MPI_COMM_WORLD = MPI_COMM_UNINITIALIZED;
 MPI_Errhandler *MPI_ERRORS_RETURN = nullptr;
@@ -98,8 +100,8 @@ void smpi_process_init(int *argc, char ***argv)
 {
 
   if (argc != nullptr && argv != nullptr) {
-    smx_process_t proc = SIMIX_process_self();
-    SIMIX_process_set_cleanup_function(proc, MSG_process_cleanup_from_SIMIX);
+    smx_actor_t proc = SIMIX_process_self();
+    proc->context->set_cleanup(&MSG_process_cleanup_from_SIMIX);
     char* instance_id = (*argv)[1];
     int rank = xbt_str_parse_int((*argv)[2], "Invalid rank: %s");
     int index = smpi_process_index_of_smx_process(proc);
@@ -382,7 +384,7 @@ void print_request(const char *message, MPI_Request request)
        message, request, request->buf, request->size, request->src, request->dst, request->tag, request->flags);
 }
 
-void smpi_comm_copy_buffer_callback(smx_synchro_t synchro, void *buff, size_t buff_size)
+void smpi_comm_copy_buffer_callback(smx_activity_t synchro, void *buff, size_t buff_size)
 {
   XBT_DEBUG("Copy the data over");
   void* tmpbuff=buff;
@@ -418,7 +420,7 @@ void smpi_comm_copy_buffer_callback(smx_synchro_t synchro, void *buff, size_t bu
   if(tmpbuff!=buff)xbt_free(tmpbuff);
 }
 
-void smpi_comm_null_copy_buffer_callback(smx_synchro_t comm, void *buff, size_t buff_size)
+void smpi_comm_null_copy_buffer_callback(smx_activity_t comm, void *buff, size_t buff_size)
 {
   return;
 }
@@ -428,12 +430,16 @@ static void smpi_check_options(){
 
    xbt_assert(xbt_cfg_get_int("smpi/async-small-thresh") <= xbt_cfg_get_int("smpi/send-is-detached-thresh"));
 
-   if (xbt_cfg_is_default_value("smpi/running-power")) {
+   if (xbt_cfg_is_default_value("smpi/host-speed")) {
      XBT_INFO("You did not set the power of the host running the simulation.  "
               "The timings will certainly not be accurate.  "
-              "Use the option \"--cfg=smpi/running-power:<flops>\" to set its value."
+              "Use the option \"--cfg=smpi/host-speed:<flops>\" to set its value."
               "Check http://simgrid.org/simgrid/latest/doc/options.html#options_smpi_bench for more information.");
    }
+
+   xbt_assert(xbt_cfg_get_double("smpi/cpu-threshold") >=0,
+       "The 'smpi/cpu-threshold' option cannot have negative values [anymore]. If you want to discard "
+       "the simulation of any computation, please use 'smpi/simulate-computation:no' instead.");
 }
 
 int smpi_enabled() {
@@ -639,6 +645,10 @@ void smpi_global_destroy()
   }
 
   xbt_free(index_to_process_data);
+  if(smpi_type_keyvals!=nullptr) 
+    xbt_dict_free(&smpi_type_keyvals);
+  if(smpi_comm_keyvals!=nullptr) 
+    xbt_dict_free(&smpi_comm_keyvals);
   if(smpi_privatize_global_variables)
     smpi_destroy_global_memory_segments();
   smpi_free_static();
@@ -753,7 +763,7 @@ static void smpi_init_options(){
 
     smpi_coll_cleanup_callback=nullptr;
     smpi_cpu_threshold = xbt_cfg_get_double("smpi/cpu-threshold");
-    smpi_running_power = xbt_cfg_get_double("smpi/running-power");
+    smpi_host_speed = xbt_cfg_get_double("smpi/host-speed");
     smpi_privatize_global_variables = xbt_cfg_get_boolean("smpi/privatize-global-variables");
     if (smpi_cpu_threshold < 0)
       smpi_cpu_threshold = DBL_MAX;