#include "cpu_cas01.hpp"
#include "simgrid/sg_config.hpp"
+#include "src/surf/cpu_ti.hpp"
#include "src/surf/surf_interface.hpp"
#include "surf/surf.hpp"
*********/
void surf_cpu_model_init_Cas01()
{
- xbt_assert(not surf_cpu_model_pm);
- xbt_assert(not surf_cpu_model_vm);
+ xbt_assert(surf_cpu_model_pm == nullptr, "CPU model already initialized. This should not happen.");
+ xbt_assert(surf_cpu_model_vm == nullptr, "CPU model already initialized. This should not happen.");
if (cpu_optim_opt == "TI") {
- surf_cpu_model_init_ti();
+ simgrid::surf::CpuTiModel::create_pm_vm_models();
return;
}
simgrid::kernel::resource::Model::UpdateAlgo algo;
if (cpu_optim_opt == "Lazy")
- algo = simgrid::kernel::resource::Model::UpdateAlgo::Lazy;
+ algo = simgrid::kernel::resource::Model::UpdateAlgo::LAZY;
else
- algo = simgrid::kernel::resource::Model::UpdateAlgo::Full;
+ algo = simgrid::kernel::resource::Model::UpdateAlgo::FULL;
surf_cpu_model_pm = new simgrid::surf::CpuCas01Model(algo);
- all_existing_models->push_back(surf_cpu_model_pm);
-
surf_cpu_model_vm = new simgrid::surf::CpuCas01Model(algo);
- all_existing_models->push_back(surf_cpu_model_vm);
}
namespace simgrid {
CpuCas01Model::CpuCas01Model(kernel::resource::Model::UpdateAlgo algo) : simgrid::surf::CpuModel(algo)
{
+ all_existing_models.push_back(this);
+
bool select = simgrid::config::get_value<bool>("cpu/maxmin-selective-update");
- if (algo == Model::UpdateAlgo::Lazy) {
+ if (algo == Model::UpdateAlgo::LAZY) {
xbt_assert(select || simgrid::config::is_default("cpu/maxmin-selective-update"),
"You cannot disable cpu selective update when using the lazy update mechanism");
select = true;
action->set_state(simgrid::kernel::resource::Action::State::IGNORED);
get_model()->get_maxmin_system()->update_variable_weight(action->get_variable(), 0.0);
- if (get_model()->get_update_algorithm() == kernel::resource::Model::UpdateAlgo::Lazy) { // remove action from the heap
+ if (get_model()->get_update_algorithm() == kernel::resource::Model::UpdateAlgo::LAZY) { // remove action from the heap
get_model()->get_action_heap().remove(action);
// this is necessary for a variable with weight 0 since such variables are ignored in lmm and we need to set its
// max_duration correctly at the next call to share_resources
model->get_maxmin_system()->variable_new(this, 1.0 / requested_core, requested_core * speed, 1))
, requested_core_(requested_core)
{
- if (model->get_update_algorithm() == kernel::resource::Model::UpdateAlgo::Lazy)
+ if (model->get_update_algorithm() == kernel::resource::Model::UpdateAlgo::LAZY)
set_last_update();
model->get_maxmin_system()->expand(constraint, get_variable(), 1.0);
}