Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
less void*, more sg_host_t
authorMartin Quinson <martin.quinson@loria.fr>
Mon, 20 Jul 2015 21:13:01 +0000 (23:13 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Mon, 20 Jul 2015 21:13:01 +0000 (23:13 +0200)
12 files changed:
src/include/surf/surf.h
src/simdag/sd_task.c
src/simix/smx_host.c
src/surf/host_clm03.cpp
src/surf/host_clm03.hpp
src/surf/host_interface.hpp
src/surf/host_ptask_L07.cpp
src/surf/host_ptask_L07.hpp
src/surf/network_interface.hpp
src/surf/surf_c_bindings.cpp
src/surf/vm_hl13.cpp
src/surf/vm_hl13.hpp

index fc2a668..3d2b1f7 100644 (file)
@@ -258,7 +258,7 @@ XBT_PUBLIC(int) surf_model_running_action_set_size(surf_model_t model);
  */
 XBT_PUBLIC(surf_action_t) surf_host_model_execute_parallel_task(surf_host_model_t model,
                                                    int host_nb,
-                                            void **host_list,
+                                                                                       sg_host_t *host_list,
                                             double *flops_amount,
                                             double *bytes_amount,
                                             double rate);
index 0907c4f..01b1ee6 100644 (file)
@@ -1090,7 +1090,7 @@ void __SD_task_really_run(SD_task_t task)
 {
 
   int i;
-  void **surf_hosts;
+  sg_host_t *hosts;
 
   xbt_assert(__SD_task_is_runnable_or_in_fifo(task),
               "Task '%s' is not runnable or in a fifo! Task state: %d",
@@ -1117,12 +1117,11 @@ void __SD_task_really_run(SD_task_t task)
 
   /* start the task */
 
-  /* we have to create a Surf workstation array instead of the SimDag
-   * workstation array */
-  surf_hosts = xbt_new(void *, host_nb);
+  /* Copy the elements of the task into the action */
+  hosts = xbt_new(sg_host_t, host_nb);
 
   for (i = 0; i < host_nb; i++)
-    surf_hosts[i] =  surf_host_resource_priv(task->workstation_list[i]);
+    hosts[i] =  task->workstation_list[i];
 
   double *flops_amount = xbt_new0(double, host_nb);
   double *bytes_amount = xbt_new0(double, host_nb * host_nb);
@@ -1137,7 +1136,7 @@ void __SD_task_really_run(SD_task_t task)
 
   task->surf_action = surf_host_model_execute_parallel_task((surf_host_model_t)surf_host_model,
                                                                     host_nb,
-                                                                    surf_hosts,
+                                                                    hosts,
                                                                     flops_amount,
                                                                     bytes_amount,
                                                                     task->rate);
index bac8423..da124c7 100644 (file)
@@ -379,7 +379,7 @@ smx_synchro_t SIMIX_host_parallel_execute(const char *name,
     double *flops_amount, double *bytes_amount,
     double amount, double rate){
 
-  void **surf_host_list = NULL;
+  sg_host_t*host_list_cpy = NULL;
   int i;
 
   /* alloc structures and initialize */
@@ -391,9 +391,9 @@ smx_synchro_t SIMIX_host_parallel_execute(const char *name,
   synchro->category = NULL;
 
   /* set surf's synchro */
-  surf_host_list = xbt_new0(void *, host_nb);
+  host_list_cpy = xbt_new0(sg_host_t, host_nb);
   for (i = 0; i < host_nb; i++)
-    surf_host_list[i] = surf_host_resource_priv(host_list[i]);
+    host_list_cpy[i] = host_list[i];
 
 
   /* FIXME: what happens if host_list contains VMs and PMs. If
@@ -411,8 +411,8 @@ smx_synchro_t SIMIX_host_parallel_execute(const char *name,
   /* set surf's synchro */
   if (!MC_is_active() && !MC_record_replay_is_active()) {
     synchro->execution.surf_exec =
-      surf_host_model_execute_parallel_task((surf_host_model_t)surf_host_model,
-                 host_nb, surf_host_list, flops_amount, bytes_amount, rate);
+      surf_host_model_execute_parallel_task(surf_host_model,
+                 host_nb, host_list_cpy, flops_amount, bytes_amount, rate);
 
     surf_action_set_data(synchro->execution.surf_exec, synchro);
   }
index 740b9ef..22fcb9c 100644 (file)
@@ -84,7 +84,7 @@ void HostCLM03Model::updateActionsState(double /*now*/, double /*delta*/){
 }
 
 Action *HostCLM03Model::executeParallelTask(int host_nb,
-                                        void **host_list,
+                                        sg_host_t *host_list,
                                         double *flops_amount,
                                         double *bytes_amount,
                                         double rate){
@@ -92,11 +92,11 @@ Action *HostCLM03Model::executeParallelTask(int host_nb,
   Action *action =NULL;
   if ((host_nb == 1)
       && (cost_or_zero(bytes_amount, 0) == 0.0)){
-    action = static_cast<HostCLM03*>(host_list[0])->execute(flops_amount[0]);
+    action = surf_host_execute(host_list[0],flops_amount[0]);
   } else if ((host_nb == 1)
            && (cost_or_zero(flops_amount, 0) == 0.0)) {
-    action = surf_network_model->communicate(static_cast<HostCLM03*>(host_list[0])->p_netElm,
-                                                static_cast<HostCLM03*>(host_list[0])->p_netElm,
+    action = surf_network_model->communicate(sg_host_edge(host_list[0]),
+                                                sg_host_edge(host_list[0]),
                                                                                         bytes_amount[0], rate);
   } else if ((host_nb == 2)
              && (cost_or_zero(flops_amount, 0) == 0.0)
@@ -111,8 +111,8 @@ Action *HostCLM03Model::executeParallelTask(int host_nb,
       }
     }
     if (nb == 1){
-      action = surf_network_model->communicate(static_cast<HostCLM03*>(host_list[0])->p_netElm,
-                                                  static_cast<HostCLM03*>(host_list[1])->p_netElm,
+      action = surf_network_model->communicate(sg_host_edge(host_list[0]),
+                                                  sg_host_edge(host_list[1]),
                                                                                           value, rate);
     }
   } else
index d625716..ef1484b 100644 (file)
@@ -34,10 +34,10 @@ public:
   void updateActionsState(double now, double delta);
 
   Action *executeParallelTask(int host_nb,
-                                        void **host_list,
-                                        double *flops_amount,
-                                        double *bytes_amount,
-                                        double rate);
+                              sg_host_t *host_list,
+                                                         double *flops_amount,
+                                                         double *bytes_amount,
+                                                         double rate);
 };
 
 /************
index 71fd688..685925d 100644 (file)
@@ -68,10 +68,10 @@ public:
 
   virtual void adjustWeightOfDummyCpuActions();
   virtual Action *executeParallelTask(int host_nb,
-                                        void **host_list,
-                                        double *flops_amount,
-                                        double *bytes_amount,
-                                        double rate)=0;
+                                      sg_host_t *host_list,
+                                                                         double *flops_amount,
+                                                                         double *bytes_amount,
+                                                                         double rate)=0;
 
   bool shareResourcesIsIdempotent() {return true;}
 };
index b8a9d6f..7212d00 100644 (file)
@@ -168,7 +168,7 @@ void HostL07Model::updateActionsState(double /*now*/, double delta) {
 }
 
 Action *HostL07Model::executeParallelTask(int host_nb,
-                                          void **host_list,
+                                          sg_host_t*host_list,
                                                                                  double *flops_amount,
                                                                                  double *bytes_amount,
                                                                                  double rate)
@@ -181,7 +181,7 @@ Action *HostL07Model::executeParallelTask(int host_nb,
 
   action->p_edgeList->reserve(host_nb);
   for (int i = 0; i<host_nb; i++)
-         action->p_edgeList->push_back(static_cast<HostL07*>(host_list[i])->p_netElm);
+         action->p_edgeList->push_back(sg_host_edge(host_list[i]));
 
   if (ptask_parallel_task_link_set == NULL)
     ptask_parallel_task_link_set = xbt_dict_new_homogeneous(NULL);
@@ -235,7 +235,7 @@ Action *HostL07Model::executeParallelTask(int host_nb,
 
   for (int i = 0; i < host_nb; i++)
     lmm_expand(ptask_maxmin_system,
-                static_cast<HostL07*>(host_list[i])->p_cpu->getConstraint(),
+              sg_host_surfcpu(host_list[i])->getConstraint(),
                action->getVariable(), flops_amount[i]);
 
   for (int i = 0; i < host_nb; i++) {
@@ -287,13 +287,13 @@ Host *HostL07Model::createHost(const char *name)
 Action *NetworkL07Model::communicate(RoutingEdge *src, RoutingEdge *dst,
                                        double size, double rate)
 {
-  void **host_list = xbt_new0(void *, 2);
+  sg_host_t*host_list = xbt_new0(sg_host_t, 2);
   double *flops_amount = xbt_new0(double, 2);
   double *bytes_amount = xbt_new0(double, 4);
   Action *res = NULL;
 
-  host_list[0] = xbt_lib_get_level(xbt_lib_get_elm_or_null(host_lib, src->getName()), SURF_HOST_LEVEL);
-  host_list[1] = xbt_lib_get_level(xbt_lib_get_elm_or_null(host_lib, dst->getName()), SURF_HOST_LEVEL);
+  host_list[0] = sg_host_by_name(src->getName());
+  host_list[1] = sg_host_by_name(dst->getName());
   bytes_amount[1] = size;
 
   res = p_hostModel->executeParallelTask(2, host_list,
@@ -550,12 +550,11 @@ e_surf_resource_state_t HostL07::getState() {
 
 Action *HostL07::execute(double size)
 {
-  void **host_list = xbt_new0(void *, 1);
+  sg_host_t*host_list = xbt_new0(sg_host_t, 1);
   double *flops_amount = xbt_new0(double, 1);
   double *bytes_amount = xbt_new0(double, 1);
 
-  host_list[0] = this;
-  bytes_amount[0] = 0.0;
+  host_list[0] = sg_host_by_name(getName());
   flops_amount[0] = size;
 
   return static_cast<HostL07Model*>(getModel())->executeParallelTask(1, host_list,
index dba8616..c265a52 100644 (file)
@@ -39,10 +39,10 @@ public:
   void updateActionsState(double now, double delta);
   Host *createHost(const char *name);
   Action *executeParallelTask(int host_nb,
-                                        void **host_list,
-                                        double *flops_amount,
-                                        double *bytes_amount,
-                                        double rate);
+                              sg_host_t *host_list,
+                                                         double *flops_amount,
+                                                         double *bytes_amount,
+                                                         double rate);
   xbt_dynar_t getRoute(Host *src, Host *dst);
   void addTraces();
   NetworkModel *p_networkModel;
@@ -161,7 +161,7 @@ class L07Action : public HostAction {
   friend Action *HostL07::execute(double size);
   friend Action *HostL07::sleep(double duration);
   friend Action *HostL07Model::executeParallelTask(int host_nb,
-                                                     void **host_list,
+                                                   sg_host_t*host_list,
                                                    double *flops_amount,
                                                                                                   double *bytes_amount,
                                                    double rate);
index e2bd2b4..1709450 100644 (file)
@@ -264,8 +264,7 @@ public:
  */
 class NetworkAction : public Action {
 public:
-  /**
-   * @brief NetworkAction constructor
+  /** @brief Constructor
    *
    * @param model The NetworkModel associated to this NetworkAction
    * @param cost The cost of this  NetworkAction in [TODO]
index 9abcc61..260984f 100644 (file)
@@ -227,7 +227,7 @@ int surf_model_running_action_set_size(surf_model_t model){
 
 surf_action_t surf_host_model_execute_parallel_task(surf_host_model_t model,
                                                    int host_nb,
-                                            void **host_list,
+                                            sg_host_t *host_list,
                                             double *flops_amount,
                                             double *bytes_amount,
                                             double rate){
index 1a1777c..918df46 100644 (file)
@@ -173,17 +173,17 @@ double VMHL13Model::shareResources(double now)
 }
 
 Action *VMHL13Model::executeParallelTask(int host_nb,
-                                        void **host_list,
-                                        double *flops_amount,
-                                        double *bytes_amount,
-                                        double rate){
+                                         sg_host_t *host_list,
+                                                                                double *flops_amount,
+                                                                                double *bytes_amount,
+                                                                                double rate){
 #define cost_or_zero(array,pos) ((array)?(array)[pos]:0.0)
   if ((host_nb == 1)
       && (cost_or_zero(bytes_amount, 0) == 0.0))
-    return static_cast<HostCLM03*>(host_list[0])->execute(flops_amount[0]);
+    return surf_host_execute(host_list[0], flops_amount[0]);
   else if ((host_nb == 1)
            && (cost_or_zero(flops_amount, 0) == 0.0))
-    return surf_network_model->communicate(static_cast<HostCLM03*>(host_list[0])->p_netElm, static_cast<HostCLM03*>(host_list[0])->p_netElm,bytes_amount[0], rate);
+    return surf_network_model_communicate(surf_network_model, host_list[0], host_list[0],bytes_amount[0], rate);
   else if ((host_nb == 2)
              && (cost_or_zero(flops_amount, 0) == 0.0)
              && (cost_or_zero(flops_amount, 1) == 0.0)) {
@@ -197,7 +197,7 @@ Action *VMHL13Model::executeParallelTask(int host_nb,
       }
     }
     if (nb == 1)
-      return surf_network_model->communicate(static_cast<HostCLM03*>(host_list[0])->p_netElm, static_cast<HostCLM03*>(host_list[1])->p_netElm,value, rate);
+      return surf_network_model_communicate(surf_network_model, host_list[0], host_list[1], value, rate);
   }
 #undef cost_or_zero
 
index aee4191..80a6fe6 100644 (file)
@@ -32,10 +32,10 @@ public:
   double shareResources(double now);
   void adjustWeightOfDummyCpuActions() {};
   Action *executeParallelTask(int host_nb,
-                                          void **host_list,
-                                          double *flops_amount,
-                                          double *bytes_amount,
-                                          double rate);
+                              sg_host_t *host_list,
+                                                         double *flops_amount,
+                                                         double *bytes_amount,
+                                                         double rate);
   void updateActionsState(double /*now*/, double /*delta*/);
 };