* under the terms of the license (GNU LGPL) which comes with this package. */
#include "src/kernel/lmm/maxmin.hpp"
+#if SIMGRID_HAVE_EIGEN3
+#include "src/kernel/lmm/bmf.hpp"
+#endif
#include <boost/core/demangle.hpp>
#include <typeinfo>
"Concurrency limit overflow!");
}
+System* System::build(const std::string& solver_name, bool selective_update)
+{
+ System* system = nullptr;
+ if (solver_name == "bmf") {
+#if SIMGRID_HAVE_EIGEN3
+ system = new lmm::BmfSystem(selective_update);
+#endif
+ } else if (solver_name == "fairbottleneck") {
+ system = new FairBottleneck(selective_update);
+ } else {
+ system = new System(selective_update);
+ }
+ return system;
+}
+
+void System::validate_solver(const std::string& solver_name)
+{
+ static const std::vector<std::string> opts{"bmf", "maxmin", "fairbottleneck"};
+ if (solver_name == "bmf") {
+#if !SIMGRID_HAVE_EIGEN3
+ xbt_die("Cannot use the BMF solver without installing Eigen3.");
+#endif
+ }
+ if (std::find(opts.begin(), opts.end(), solver_name) == std::end(opts)) {
+ xbt_die("Invalid system solver, it should be one of: \"maxmin\", \"fairbottleneck\" or \"bmf\"");
+ }
+}
+
void System::check_concurrency() const
{
// These checks are very expensive, so do them only if we want to debug SURF LMM
> [Fafard:master_:(1) 99.000000] [s4u_test/INFO] exec remaining duration: 3.52299e+09
> [VM0:compute:(2) 145.175317] [s4u_test/INFO] VM0:compute Exec 2 complete 131.068
> [10100.000000] [s4u_test/INFO] Bye (simulation time 10100)
+
+p Testing BMF solver for CPU
+
+$ ${bindir:=.}/cloud-two-execs --cfg=cpu/solver:bmf ${platfdir}/small_platform.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/solver' to 'bmf'
+> [VM0:compute:(2) 0.000000] [s4u_test/INFO] VM0:compute Exec 1 start 0
+> [Fafard:master_:(1) 1.000000] [s4u_test/INFO] exec remaining duration: 9.23704e+08
+> [Fafard:master_:(1) 2.000000] [s4u_test/INFO] exec remaining duration: 8.47408e+08
+> [Fafard:master_:(1) 3.000000] [s4u_test/INFO] exec remaining duration: 7.71112e+08
+> [Fafard:master_:(1) 4.000000] [s4u_test/INFO] exec remaining duration: 6.94816e+08
+> [Fafard:master_:(1) 5.000000] [s4u_test/INFO] exec remaining duration: 6.1852e+08
+> [Fafard:master_:(1) 6.000000] [s4u_test/INFO] exec remaining duration: 5.42224e+08
+> [Fafard:master_:(1) 7.000000] [s4u_test/INFO] exec remaining duration: 4.65928e+08
+> [Fafard:master_:(1) 8.000000] [s4u_test/INFO] exec remaining duration: 3.89632e+08
+> [Fafard:master_:(1) 9.000000] [s4u_test/INFO] exec remaining duration: 3.13336e+08
+> [Fafard:master_:(1) 10.000000] [s4u_test/INFO] exec remaining duration: 2.3704e+08
+> [Fafard:master_:(1) 11.000000] [s4u_test/INFO] exec remaining duration: 1.60744e+08
+> [Fafard:master_:(1) 12.000000] [s4u_test/INFO] exec remaining duration: 8.4448e+07
+> [Fafard:master_:(1) 13.000000] [s4u_test/INFO] exec remaining duration: 8.152e+06
+> [VM0:compute:(2) 13.106847] [s4u_test/INFO] VM0:compute Exec 1 complete 13.1068
+> [VM0:compute:(2) 14.106847] [s4u_test/INFO] VM0:compute Exec 2 start 14.1068
+> [Fafard:master_:(1) 15.000000] [s4u_test/INFO] exec remaining duration: 9.93186e+09
+> [Fafard:master_:(1) 16.000000] [s4u_test/INFO] exec remaining duration: 9.85556e+09
+> [Fafard:master_:(1) 17.000000] [s4u_test/INFO] exec remaining duration: 9.77926e+09
+> [Fafard:master_:(1) 18.000000] [s4u_test/INFO] exec remaining duration: 9.70297e+09
+> [Fafard:master_:(1) 19.000000] [s4u_test/INFO] exec remaining duration: 9.62667e+09
+> [Fafard:master_:(1) 20.000000] [s4u_test/INFO] exec remaining duration: 9.55038e+09
+> [Fafard:master_:(1) 21.000000] [s4u_test/INFO] exec remaining duration: 9.47408e+09
+> [Fafard:master_:(1) 22.000000] [s4u_test/INFO] exec remaining duration: 9.39778e+09
+> [Fafard:master_:(1) 23.000000] [s4u_test/INFO] exec remaining duration: 9.32149e+09
+> [Fafard:master_:(1) 24.000000] [s4u_test/INFO] exec remaining duration: 9.24519e+09
+> [Fafard:master_:(1) 25.000000] [s4u_test/INFO] exec remaining duration: 9.1689e+09
+> [Fafard:master_:(1) 26.000000] [s4u_test/INFO] exec remaining duration: 9.0926e+09
+> [Fafard:master_:(1) 27.000000] [s4u_test/INFO] exec remaining duration: 9.0163e+09
+> [Fafard:master_:(1) 28.000000] [s4u_test/INFO] exec remaining duration: 8.94001e+09
+> [Fafard:master_:(1) 29.000000] [s4u_test/INFO] exec remaining duration: 8.86371e+09
+> [Fafard:master_:(1) 30.000000] [s4u_test/INFO] exec remaining duration: 8.78742e+09
+> [Fafard:master_:(1) 31.000000] [s4u_test/INFO] exec remaining duration: 8.71112e+09
+> [Fafard:master_:(1) 32.000000] [s4u_test/INFO] exec remaining duration: 8.63482e+09
+> [Fafard:master_:(1) 33.000000] [s4u_test/INFO] exec remaining duration: 8.55853e+09
+> [Fafard:master_:(1) 34.000000] [s4u_test/INFO] exec remaining duration: 8.48223e+09
+> [Fafard:master_:(1) 35.000000] [s4u_test/INFO] exec remaining duration: 8.40594e+09
+> [Fafard:master_:(1) 36.000000] [s4u_test/INFO] exec remaining duration: 8.32964e+09
+> [Fafard:master_:(1) 37.000000] [s4u_test/INFO] exec remaining duration: 8.25334e+09
+> [Fafard:master_:(1) 38.000000] [s4u_test/INFO] exec remaining duration: 8.17705e+09
+> [Fafard:master_:(1) 39.000000] [s4u_test/INFO] exec remaining duration: 8.10075e+09
+> [Fafard:master_:(1) 40.000000] [s4u_test/INFO] exec remaining duration: 8.02446e+09
+> [Fafard:master_:(1) 41.000000] [s4u_test/INFO] exec remaining duration: 7.94816e+09
+> [Fafard:master_:(1) 42.000000] [s4u_test/INFO] exec remaining duration: 7.87186e+09
+> [Fafard:master_:(1) 43.000000] [s4u_test/INFO] exec remaining duration: 7.79557e+09
+> [Fafard:master_:(1) 44.000000] [s4u_test/INFO] exec remaining duration: 7.71927e+09
+> [Fafard:master_:(1) 45.000000] [s4u_test/INFO] exec remaining duration: 7.64298e+09
+> [Fafard:master_:(1) 46.000000] [s4u_test/INFO] exec remaining duration: 7.56668e+09
+> [Fafard:master_:(1) 47.000000] [s4u_test/INFO] exec remaining duration: 7.49038e+09
+> [Fafard:master_:(1) 48.000000] [s4u_test/INFO] exec remaining duration: 7.41409e+09
+> [Fafard:master_:(1) 49.000000] [s4u_test/INFO] exec remaining duration: 7.33779e+09
+> [Fafard:master_:(1) 50.000000] [s4u_test/INFO] exec remaining duration: 7.2615e+09
+> [Fafard:master_:(1) 51.000000] [s4u_test/INFO] exec remaining duration: 7.1852e+09
+> [Fafard:master_:(1) 52.000000] [s4u_test/INFO] exec remaining duration: 7.1089e+09
+> [Fafard:master_:(1) 53.000000] [s4u_test/INFO] exec remaining duration: 7.03261e+09
+> [Fafard:master_:(1) 54.000000] [s4u_test/INFO] exec remaining duration: 6.95631e+09
+> [Fafard:master_:(1) 55.000000] [s4u_test/INFO] exec remaining duration: 6.88002e+09
+> [Fafard:master_:(1) 56.000000] [s4u_test/INFO] exec remaining duration: 6.80372e+09
+> [Fafard:master_:(1) 57.000000] [s4u_test/INFO] exec remaining duration: 6.72742e+09
+> [Fafard:master_:(1) 58.000000] [s4u_test/INFO] exec remaining duration: 6.65113e+09
+> [Fafard:master_:(1) 59.000000] [s4u_test/INFO] exec remaining duration: 6.57483e+09
+> [Fafard:master_:(1) 60.000000] [s4u_test/INFO] exec remaining duration: 6.49854e+09
+> [Fafard:master_:(1) 61.000000] [s4u_test/INFO] exec remaining duration: 6.42224e+09
+> [Fafard:master_:(1) 62.000000] [s4u_test/INFO] exec remaining duration: 6.34594e+09
+> [Fafard:master_:(1) 63.000000] [s4u_test/INFO] exec remaining duration: 6.26965e+09
+> [Fafard:master_:(1) 64.000000] [s4u_test/INFO] exec remaining duration: 6.19335e+09
+> [Fafard:master_:(1) 65.000000] [s4u_test/INFO] exec remaining duration: 6.11706e+09
+> [Fafard:master_:(1) 66.000000] [s4u_test/INFO] exec remaining duration: 6.04076e+09
+> [Fafard:master_:(1) 67.000000] [s4u_test/INFO] exec remaining duration: 5.96446e+09
+> [Fafard:master_:(1) 68.000000] [s4u_test/INFO] exec remaining duration: 5.88817e+09
+> [Fafard:master_:(1) 69.000000] [s4u_test/INFO] exec remaining duration: 5.81187e+09
+> [Fafard:master_:(1) 70.000000] [s4u_test/INFO] exec remaining duration: 5.73558e+09
+> [Fafard:master_:(1) 71.000000] [s4u_test/INFO] exec remaining duration: 5.65928e+09
+> [Fafard:master_:(1) 72.000000] [s4u_test/INFO] exec remaining duration: 5.58298e+09
+> [Fafard:master_:(1) 73.000000] [s4u_test/INFO] exec remaining duration: 5.50669e+09
+> [Fafard:master_:(1) 74.000000] [s4u_test/INFO] exec remaining duration: 5.43039e+09
+> [Fafard:master_:(1) 75.000000] [s4u_test/INFO] exec remaining duration: 5.3541e+09
+> [Fafard:master_:(1) 76.000000] [s4u_test/INFO] exec remaining duration: 5.2778e+09
+> [Fafard:master_:(1) 77.000000] [s4u_test/INFO] exec remaining duration: 5.2015e+09
+> [Fafard:master_:(1) 78.000000] [s4u_test/INFO] exec remaining duration: 5.12521e+09
+> [Fafard:master_:(1) 79.000000] [s4u_test/INFO] exec remaining duration: 5.04891e+09
+> [Fafard:master_:(1) 80.000000] [s4u_test/INFO] exec remaining duration: 4.97262e+09
+> [Fafard:master_:(1) 81.000000] [s4u_test/INFO] exec remaining duration: 4.89632e+09
+> [Fafard:master_:(1) 82.000000] [s4u_test/INFO] exec remaining duration: 4.82002e+09
+> [Fafard:master_:(1) 83.000000] [s4u_test/INFO] exec remaining duration: 4.74373e+09
+> [Fafard:master_:(1) 84.000000] [s4u_test/INFO] exec remaining duration: 4.66743e+09
+> [Fafard:master_:(1) 85.000000] [s4u_test/INFO] exec remaining duration: 4.59114e+09
+> [Fafard:master_:(1) 86.000000] [s4u_test/INFO] exec remaining duration: 4.51484e+09
+> [Fafard:master_:(1) 87.000000] [s4u_test/INFO] exec remaining duration: 4.43854e+09
+> [Fafard:master_:(1) 88.000000] [s4u_test/INFO] exec remaining duration: 4.36225e+09
+> [Fafard:master_:(1) 89.000000] [s4u_test/INFO] exec remaining duration: 4.28595e+09
+> [Fafard:master_:(1) 90.000000] [s4u_test/INFO] exec remaining duration: 4.20966e+09
+> [Fafard:master_:(1) 91.000000] [s4u_test/INFO] exec remaining duration: 4.13336e+09
+> [Fafard:master_:(1) 92.000000] [s4u_test/INFO] exec remaining duration: 4.05706e+09
+> [Fafard:master_:(1) 93.000000] [s4u_test/INFO] exec remaining duration: 3.98077e+09
+> [Fafard:master_:(1) 94.000000] [s4u_test/INFO] exec remaining duration: 3.90447e+09
+> [Fafard:master_:(1) 95.000000] [s4u_test/INFO] exec remaining duration: 3.82818e+09
+> [Fafard:master_:(1) 96.000000] [s4u_test/INFO] exec remaining duration: 3.75188e+09
+> [Fafard:master_:(1) 97.000000] [s4u_test/INFO] exec remaining duration: 3.67558e+09
+> [Fafard:master_:(1) 98.000000] [s4u_test/INFO] exec remaining duration: 3.59929e+09
+> [Fafard:master_:(1) 99.000000] [s4u_test/INFO] exec remaining duration: 3.52299e+09
+> [VM0:compute:(2) 145.175317] [s4u_test/INFO] VM0:compute Exec 2 complete 131.068
+> [10100.000000] [s4u_test/INFO] Bye (simulation time 10100)