Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use the models directly, not their names
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 25 Mar 2021 00:59:00 +0000 (01:59 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 25 Mar 2021 00:59:00 +0000 (01:59 +0100)
include/simgrid/s4u/Engine.hpp
src/kernel/EngineImpl.cpp
src/kernel/EngineImpl.hpp
src/plugins/vm/VirtualMachineImpl.cpp
src/s4u/s4u_Engine.cpp

index d24221c..25f87a0 100644 (file)
@@ -136,7 +136,8 @@ public:
    * @param model Pointer to model
    * @param list  List of dependencies for this model (optional)
    */
-  void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model, std::vector<std::string>&& dep_models = {});
+  void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model,
+                 std::vector<kernel::resource::Model*>&& dependencies = {});
 
   /** @brief Get list of all models managed by this engine */
   const std::vector<simgrid::kernel::resource::Model*>& get_all_models() const;
index 6dd06bc..87e4ecc 100644 (file)
@@ -53,17 +53,17 @@ void EngineImpl::register_default(const actor::ActorCodeFactory& code)
   default_function = code;
 }
 
-void EngineImpl::add_model(std::shared_ptr<resource::Model> model, std::vector<std::string>&& dep_models)
+void EngineImpl::add_model(std::shared_ptr<resource::Model> model, std::vector<resource::Model*>&& dependencies)
 {
   auto model_name = model->get_name();
   xbt_assert(models_prio_.find(model_name) == models_prio_.end(),
              "Model %s already exists, use model.set_name() to change its name", model_name.c_str());
   int order = -1;
-  for (const auto& dep_name : dep_models) {
-    xbt_assert(models_prio_.find(dep_name) != models_prio_.end(),
-               "Model %s doesn't exists. Impossible to use it as dependency.", dep_name.c_str());
-    if (models_prio_[dep_name].prio > order) {
-      order = models_prio_[dep_name].prio;
+  for (const auto dep : dependencies) {
+    xbt_assert(models_prio_.find(dep->get_name()) != models_prio_.end(),
+               "Model %s doesn't exists. Impossible to use it as dependency.", dep->get_name().c_str());
+    if (models_prio_[dep->get_name()].prio > order) {
+      order = models_prio_[dep->get_name()].prio;
     }
   }
   models_prio_[model_name] = {++order, std::move(model)};
index febaedf..04436a4 100644 (file)
@@ -51,7 +51,8 @@ public:
    * @param model Pointer to model
    * @param list  List of dependencies for this model
    */
-  void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model, std::vector<std::string>&& dep_models = {});
+  void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model,
+                 std::vector<resource::Model*>&& dep_models = {});
 
   /** @brief Get list of all models managed by this engine */
   const std::vector<resource::Model*>& get_all_models() const { return models_; }
index 22ee6ca..3ba0c8d 100644 (file)
@@ -22,7 +22,7 @@ void surf_vm_model_init_HL13(simgrid::kernel::resource::CpuModel* cpu_pm_model)
   auto vm_model = std::make_shared<simgrid::vm::VMModel>();
   vm_model->set_name("VM_HL13");
 
-  simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model->get_name()});
+  simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model});
   std::shared_ptr<simgrid::kernel::resource::CpuModel> cpu_model_vm;
 
   auto cpu_optim = simgrid::config::get_value<std::string>("cpu/optim");
@@ -33,8 +33,7 @@ void surf_vm_model_init_HL13(simgrid::kernel::resource::CpuModel* cpu_pm_model)
     cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>();
     cpu_model_vm->set_name("VmCpu_Cas01");
   }
-  simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm,
-                                                         {cpu_pm_model->get_name(), vm_model->get_name()});
+  simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm, {cpu_pm_model, vm_model.get()});
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_vm_model(cpu_model_vm);
 }
 
index cc7fbe1..4c07ea4 100644 (file)
@@ -73,10 +73,11 @@ double Engine::get_clock()
   return SIMIX_get_clock();
 }
 
-void Engine::add_model(std::shared_ptr<simgrid::kernel::resource::Model> model, std::vector<std::string>&& dep_models)
+void Engine::add_model(std::shared_ptr<kernel::resource::Model> model,
+                       std::vector<kernel::resource::Model*>&& dependencies)
 {
-  simgrid::kernel::actor::simcall([this, &model, &dep_models] {
-    pimpl->add_model(std::move(model), std::forward<decltype(dep_models)>(dep_models));
+  simgrid::kernel::actor::simcall([this, &model, &dependencies] {
+    pimpl->add_model(std::move(model), std::forward<decltype(dependencies)>(dependencies));
   });
 }