A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Anonymize unused parameters.
[simgrid.git]
/
src
/
plugins
/
host_dvfs.cpp
diff --git
a/src/plugins/host_dvfs.cpp
b/src/plugins/host_dvfs.cpp
index
4cb1f04
..
a48bfc9
100644
(file)
--- a/
src/plugins/host_dvfs.cpp
+++ b/
src/plugins/host_dvfs.cpp
@@
-1,4
+1,4
@@
-/* Copyright (c) 2010-201
8
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-201
9
. 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. */
/* 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 "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"
#include "src/kernel/activity/ExecImpl.hpp"
#include "src/plugins/vm/VirtualMachineImpl.hpp"
+#if HAVE_SMPI
#include "src/smpi/plugins/ampi/ampi.hpp"
#include "src/smpi/plugins/ampi/ampi.hpp"
+#endif
#include <xbt/config.hpp>
#include <boost/algorithm/string.hpp>
#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)
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>({
"Which Governor should be used that adapts the CPU frequency?", "performance",
std::map<std::string, std::string>({
+#if HAVE_SMPI
{"adagio", "TODO: Doc"},
{"adagio", "TODO: Doc"},
+#endif
{"conservative", "TODO: Doc"},
{"ondemand", "TODO: Doc"},
{"performance", "TODO: Doc"},
{"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(); });
[](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 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
/** @addtogroup SURF_plugin_load
@@
-251,6
+260,7
@@
public:
}
};
}
};
+#if HAVE_SMPI
class Adagio : public Governor {
private:
int best_pstate = 0;
class Adagio : public Governor {
private:
int best_pstate = 0;
@@
-258,7
+268,7
@@
private:
double comp_counter = 0;
double comp_timer = 0;
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? */
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();
}
});
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(
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();
}
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());
}
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--) {
}
for (int pstate = get_host()->get_pstate_count() - 1; pstate >= 0; pstate--) {
@@
-346,6
+357,7
@@
public:
virtual void update() override {}
};
virtual void update() override {}
};
+#endif
} // namespace dvfs
} // namespace plugin
} // namespace simgrid
} // 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 == "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()));
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") {
return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
new simgrid::plugin::dvfs::Performance(daemon_proc->get_host()));
} else if (dvfs_governor == "powersave") {