Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Anonymize unused parameters.
[simgrid.git] / src / plugins / host_dvfs.cpp
index 4cb1f04..a48bfc9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -6,12 +6,18 @@
 #include "simgrid/plugins/dvfs.h"
 #include "simgrid/plugins/load.h"
 #include "simgrid/s4u/Engine.hpp"
+#include "src/internal_config.h" // HAVE_SMPI
 #include "src/kernel/activity/ExecImpl.hpp"
 #include "src/plugins/vm/VirtualMachineImpl.hpp"
+#if HAVE_SMPI
 #include "src/smpi/plugins/ampi/ampi.hpp"
+#endif
 #include <xbt/config.hpp>
 
 #include <boost/algorithm/string.hpp>
+#if HAVE_SMPI
+#include "src/smpi/include/smpi_request.hpp"
+#endif
 
 SIMGRID_REGISTER_PLUGIN(host_dvfs, "Dvfs support", &sg_host_dvfs_plugin_init)
 
@@ -23,7 +29,9 @@ static simgrid::config::Flag<std::string> cfg_governor("plugin/dvfs/governor",
     "Which Governor should be used that adapts the CPU frequency?", "performance",
 
     std::map<std::string, std::string>({
+#if HAVE_SMPI
         {"adagio", "TODO: Doc"},
+#endif
         {"conservative", "TODO: Doc"},
         {"ondemand", "TODO: Doc"},
         {"performance", "TODO: Doc"},
@@ -32,14 +40,15 @@ static simgrid::config::Flag<std::string> cfg_governor("plugin/dvfs/governor",
 
     [](std::string val) { if (val != "performance") sg_host_dvfs_plugin_init(); });
 
-static simgrid::config::Flag<int> cfg_min_pstate("plugin/dvfs/min-pstate", {"plugin/dvfs/min_pstate"},
-    "Which pstate is the minimum (and hence fastest) pstate for this governor?", 0,
-    [](int index) {});
+static simgrid::config::Flag<int>
+    cfg_min_pstate("plugin/dvfs/min-pstate", {"plugin/dvfs/min_pstate"},
+                   "Which pstate is the minimum (and hence fastest) pstate for this governor?", 0, [](int) {});
 
 static const int max_pstate_not_limited = -1;
-static simgrid::config::Flag<int> cfg_max_pstate("plugin/dvfs/max-pstate", {"plugin/dvfs/max_pstate"},
-    "Which pstate is the maximum (and hence slowest) pstate for this governor?", max_pstate_not_limited,
-    [](int index) {});
+static simgrid::config::Flag<int>
+    cfg_max_pstate("plugin/dvfs/max-pstate", {"plugin/dvfs/max_pstate"},
+                   "Which pstate is the maximum (and hence slowest) pstate for this governor?", max_pstate_not_limited,
+                   [](int) {});
 
 /** @addtogroup SURF_plugin_load
 
@@ -251,6 +260,7 @@ public:
   }
 };
 
+#if HAVE_SMPI
 class Adagio : public Governor {
 private:
   int best_pstate     = 0;
@@ -258,7 +268,7 @@ private:
   double comp_counter = 0;
   double comp_timer   = 0;
 
-  std::vector<std::vector<double>> rates;
+  std::vector<std::vector<double>> rates; // Each host + all frequencies of that host
 
   unsigned int task_id   = 0;
   bool iteration_running = false; /*< Are we currently between iteration_in and iteration_out calls? */
@@ -293,8 +303,10 @@ public:
         comp_timer += activity->surf_action_->get_finish_time() - activity->surf_action_->get_start_time();
       }
     });
+    // FIXME I think that this fires at the same time for all hosts, so when the src sends something,
+    // the dst will be notified even though it didn't even arrive at the recv yet
     simgrid::s4u::Link::on_communicate.connect(
-        [this](kernel::resource::NetworkAction* action, s4u::Host* src, s4u::Host* dst) {
+        [this](kernel::resource::NetworkAction*, s4u::Host* src, s4u::Host* dst) {
           if ((get_host() == src || get_host() == dst) && iteration_running) {
             post_task();
           }
@@ -331,7 +343,6 @@ public:
       for (int i = 1; i < get_host()->get_pstate_count(); i++) {
         rates[task_id][i] = rates[task_id][0] * (get_host()->get_pstate_speed(i) / get_host()->get_speed());
       }
-      is_initialized = true;
     }
 
     for (int pstate = get_host()->get_pstate_count() - 1; pstate >= 0; pstate--) {
@@ -346,6 +357,7 @@ public:
 
   virtual void update() override {}
 };
+#endif
 } // namespace dvfs
 } // namespace plugin
 } // namespace simgrid
@@ -384,10 +396,14 @@ static void on_host_added(simgrid::s4u::Host& host)
       } else if (dvfs_governor == "ondemand") {
         return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
             new simgrid::plugin::dvfs::OnDemand(daemon_proc->get_host()));
-      } else if (dvfs_governor == "adagio") {
+      }
+#if HAVE_SMPI
+      else if (dvfs_governor == "adagio") {
         return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
             new simgrid::plugin::dvfs::Adagio(daemon_proc->get_host()));
-      } else if (dvfs_governor == "performance") {
+      }
+#endif
+      else if (dvfs_governor == "performance") {
         return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
             new simgrid::plugin::dvfs::Performance(daemon_proc->get_host()));
       } else if (dvfs_governor == "powersave") {