X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0f5828869a4c6d79018e8eca27a10d0fe51979e5..9caf173e476622d309cc5653a83d224d05787cc7:/teshsuite/surf/lmm_usage/lmm_usage.cpp diff --git a/teshsuite/surf/lmm_usage/lmm_usage.cpp b/teshsuite/surf/lmm_usage/lmm_usage.cpp index acac3e1e0d..8b2d01c336 100644 --- a/teshsuite/surf/lmm_usage/lmm_usage.cpp +++ b/teshsuite/surf/lmm_usage/lmm_usage.cpp @@ -16,7 +16,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test, "Messages specific for surf example"); -using namespace simgrid::surf; +using namespace simgrid::kernel; #define PRINT_VAR(var) XBT_DEBUG(#var " = %g", (var)->get_value()) #define SHOW_EXPR(expr) XBT_DEBUG(#expr " = %g",expr) @@ -27,6 +27,20 @@ using namespace simgrid::surf; enum method_t { MAXMIN, LAGRANGE_RENO, LAGRANGE_VEGAS }; +static lmm::System* new_system(method_t method) +{ + /* selective update would need real actions instead of NULL as a first parameter to the variable constructor */ + switch (method) { + case MAXMIN: + return lmm::make_new_maxmin_system(false); + case LAGRANGE_VEGAS: + case LAGRANGE_RENO: + return lmm::make_new_lagrange_system(false); + default: + xbt_die("Invalid method"); + } +} + static double dichotomy(double func(double), double min, double max, double min_error) { double overall_error = 2 * min_error; @@ -91,21 +105,19 @@ static void test1(method_t method) double b = 10.0; if (method == LAGRANGE_VEGAS) - set_default_protocol_function(simgrid::kernel::lmm::func_vegas_f, simgrid::kernel::lmm::func_vegas_fp, - simgrid::kernel::lmm::func_vegas_fpi); + lmm::Lagrange::set_default_protocol_function(lmm::func_vegas_f, lmm::func_vegas_fp, lmm::func_vegas_fpi); else if (method == LAGRANGE_RENO) - set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fpi, - simgrid::kernel::lmm::func_reno_fpi); + lmm::Lagrange::set_default_protocol_function(lmm::func_reno_f, lmm::func_reno_fp, lmm::func_reno_fpi); - simgrid::kernel::lmm::System* Sys = new simgrid::kernel::lmm::System(true); - simgrid::kernel::lmm::Constraint* L1 = Sys->constraint_new(nullptr, a); - simgrid::kernel::lmm::Constraint* L2 = Sys->constraint_new(nullptr, b); - simgrid::kernel::lmm::Constraint* L3 = Sys->constraint_new(nullptr, a); + lmm::System* Sys = new_system(method); + lmm::Constraint* L1 = Sys->constraint_new(nullptr, a); + lmm::Constraint* L2 = Sys->constraint_new(nullptr, b); + lmm::Constraint* L3 = Sys->constraint_new(nullptr, a); - simgrid::kernel::lmm::Variable* R_1_2_3 = Sys->variable_new(nullptr, 1.0, -1.0, 3); - simgrid::kernel::lmm::Variable* R_1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); - simgrid::kernel::lmm::Variable* R_2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); - simgrid::kernel::lmm::Variable* R_3 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + lmm::Variable* R_1_2_3 = Sys->variable_new(nullptr, 1.0, -1.0, 3); + lmm::Variable* R_1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + lmm::Variable* R_2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + lmm::Variable* R_3 = Sys->variable_new(nullptr, 1.0, -1.0, 1); Sys->update_variable_weight(R_1_2_3, 1.0); Sys->update_variable_weight(R_1, 1.0); @@ -121,7 +133,7 @@ static void test1(method_t method) Sys->expand(L3, R_3, 1.0); if (method == MAXMIN) { - lmm_solve(Sys); + Sys->solve(); } else { double x; if (method == LAGRANGE_VEGAS) { @@ -146,7 +158,7 @@ static void test1(method_t method) xbt_die( "Invalid method"); } - lagrange_solve(Sys); + Sys->solve(); double max_deviation = 0.0; max_deviation = std::max(max_deviation, fabs(R_1->get_value() - x)); @@ -179,18 +191,17 @@ static void test1(method_t method) static void test2(method_t method) { if (method == LAGRANGE_VEGAS) - set_default_protocol_function(simgrid::kernel::lmm::func_vegas_f, simgrid::kernel::lmm::func_vegas_fp, - simgrid::kernel::lmm::func_vegas_fpi); + lmm::Lagrange::set_default_protocol_function(lmm::func_vegas_f, lmm::func_vegas_fp, lmm::func_vegas_fpi); if (method == LAGRANGE_RENO) - set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fp, - simgrid::kernel::lmm::func_reno_fpi); + lmm::Lagrange::set_default_protocol_function(lmm::func_reno_f, lmm::func_reno_fp, lmm::func_reno_fpi); + + lmm::System* Sys = new_system(method); - simgrid::kernel::lmm::System* Sys = new simgrid::kernel::lmm::System(true); - simgrid::kernel::lmm::Constraint* CPU1 = Sys->constraint_new(nullptr, 200.0); - simgrid::kernel::lmm::Constraint* CPU2 = Sys->constraint_new(nullptr, 100.0); + lmm::Constraint* CPU1 = Sys->constraint_new(nullptr, 200.0); + lmm::Constraint* CPU2 = Sys->constraint_new(nullptr, 100.0); - simgrid::kernel::lmm::Variable* T1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); - simgrid::kernel::lmm::Variable* T2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + lmm::Variable* T1 = Sys->variable_new(nullptr, 1.0, -1.0, 1); + lmm::Variable* T2 = Sys->variable_new(nullptr, 1.0, -1.0, 1); Sys->update_variable_weight(T1, 1.0); Sys->update_variable_weight(T2, 1.0); @@ -198,13 +209,7 @@ static void test2(method_t method) Sys->expand(CPU1, T1, 1.0); Sys->expand(CPU2, T2, 1.0); - if (method == MAXMIN) { - lmm_solve(Sys); - } else if (method == LAGRANGE_VEGAS || method == LAGRANGE_RENO) { - lagrange_solve(Sys); - } else { - xbt_die("Invalid method"); - } + Sys->solve(); PRINT_VAR(T1); PRINT_VAR(T2); @@ -252,21 +257,19 @@ static void test3(method_t method) A[14][15] = 1.0; if (method == LAGRANGE_VEGAS) - set_default_protocol_function(simgrid::kernel::lmm::func_vegas_f, simgrid::kernel::lmm::func_vegas_fp, - simgrid::kernel::lmm::func_vegas_fpi); + lmm::Lagrange::set_default_protocol_function(lmm::func_vegas_f, lmm::func_vegas_fp, lmm::func_vegas_fpi); if (method == LAGRANGE_RENO) - set_default_protocol_function(simgrid::kernel::lmm::func_reno_f, simgrid::kernel::lmm::func_reno_fp, - simgrid::kernel::lmm::func_reno_fpi); + lmm::Lagrange::set_default_protocol_function(lmm::func_reno_f, lmm::func_reno_fp, lmm::func_reno_fpi); - simgrid::kernel::lmm::System* Sys = new simgrid::kernel::lmm::System(true); + lmm::System* Sys = new_system(method); /* Creates the constraints */ - simgrid::kernel::lmm::Constraint** tmp_cnst = new simgrid::kernel::lmm::Constraint*[15]; + lmm::Constraint** tmp_cnst = new lmm::Constraint*[15]; for (int i = 0; i < 15; i++) tmp_cnst[i] = Sys->constraint_new(nullptr, B[i]); /* Creates the variables */ - simgrid::kernel::lmm::Variable** tmp_var = new simgrid::kernel::lmm::Variable*[16]; + lmm::Variable** tmp_var = new lmm::Variable*[16]; for (int j = 0; j < 16; j++) { tmp_var[j] = Sys->variable_new(nullptr, 1.0, -1.0, 15); Sys->update_variable_weight(tmp_var[j], 1.0); @@ -278,15 +281,7 @@ static void test3(method_t method) if (A[i][j]) Sys->expand(tmp_cnst[i], tmp_var[j], 1.0); - if (method == MAXMIN) { - lmm_solve(Sys); - } else if (method == LAGRANGE_VEGAS) { - lagrange_solve(Sys); - } else if (method == LAGRANGE_RENO) { - lagrange_solve(Sys); - } else { - xbt_die("Invalid method"); - } + Sys->solve(); for (int j = 0; j < 16; j++) PRINT_VAR(tmp_var[j]);