Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further polishing on the merge of all model types (merly cosmetics now)
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 30 Jun 2009 23:28:43 +0000 (23:28 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 30 Jun 2009 23:28:43 +0000 (23:28 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6411 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/include/surf/surf.h
src/smpi/smpi_mpi.c
src/surf/cpu.c
src/surf/model.c
src/surf/network.c
src/surf/network_constant.c
src/surf/surf_config.c
src/surf/surf_timer.c
src/surf/workstation.c
src/surf/workstation_ptask_L07.c

index bd6cb6c..e922325 100644 (file)
@@ -43,8 +43,8 @@ SG_BEGIN_DECL()
      typedef struct surf_model_description {
        const char *name;
        surf_model_t model;
-       void (*model_init) (const char *filename);
-       void (*create_ws) (void);
+       void (*model_init_preparse) (const char *filename);
+       void (*model_init_postparse) (void);
      } s_surf_model_description_t, *surf_model_description_t;
 
 XBT_PUBLIC(void) update_model_description(s_surf_model_description_t * table,
@@ -255,10 +255,11 @@ XBT_PUBLIC(int) find_model_description(s_surf_model_description_t * table,
        } extension;
      } s_surf_model_t;
 
-     void surf_model_init(surf_model_t model);
+     surf_model_t surf_model_init(void);
+     void surf_model_exit(surf_model_t model);
+
      void *surf_model_resource_by_name(surf_model_t model, const char *name);
 #define surf_model_resource_set(model) (model)->resource_set
-     void surf_model_exit(surf_model_t model);
 
      typedef struct surf_resource {
        surf_model_t model;
index f454c27..fb65892 100644 (file)
@@ -346,6 +346,8 @@ int SMPI_MPI_Reduce(void *sendbuf, void *recvbuf, int count,
  *
  * Same as MPI_REDUCE except that the result appears in the receive buffer of all the group members.
  **/
+int SMPI_MPI_Allreduce( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
+                        MPI_Op op, MPI_Comm comm );
 int SMPI_MPI_Allreduce( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
                         MPI_Op op, MPI_Comm comm )
 {
index 6764728..2860616 100644 (file)
@@ -181,8 +181,8 @@ static void action_change_state(surf_action_t action,
 static double share_resources(double now)
 {
   s_surf_action_cpu_Cas01_t action;
-  return generic_maxmin_share_resources(surf_cpu_model->
-                                        states.running_action_set,
+  return generic_maxmin_share_resources(surf_cpu_model->states.
+                                        running_action_set,
                                         xbt_swag_offset(action, variable),
                                         cpu_maxmin_system, lmm_solve);
 }
@@ -390,21 +390,17 @@ static void finalize(void)
   cpu_maxmin_system = NULL;
 
   surf_model_exit(surf_cpu_model);
+  surf_cpu_model = NULL;
 
   xbt_swag_free(running_action_set_that_does_not_need_being_checked);
   running_action_set_that_does_not_need_being_checked = NULL;
-
-  free(surf_cpu_model);
-  surf_cpu_model = NULL;
 }
 
 static void surf_cpu_model_init_internal(void)
 {
   s_surf_action_t action;
 
-  surf_cpu_model = xbt_new0(s_surf_model_t, 1);
-
-  surf_model_init(surf_cpu_model);
+  surf_cpu_model = surf_model_init();
 
   running_action_set_that_does_not_need_being_checked =
     xbt_swag_new(xbt_swag_offset(action, state_hookup));
index 5e052a7..02104c2 100644 (file)
@@ -18,10 +18,10 @@ static int int_die_impossible_paction(surf_action_t action)
 }
 
 /** @brief initialize common datastructures to all models */
-void surf_model_init(surf_model_t model)
+surf_model_t surf_model_init(void)
 {
   s_surf_action_t action;
-
+  surf_model_t model = xbt_new0(s_surf_model_t, 1);
 
   model->model_private = xbt_new0(s_surf_model_private_t, 1);
 
@@ -39,14 +39,8 @@ void surf_model_init(surf_model_t model)
   model->action_cancel = void_die_impossible_paction;
   model->action_recycle = void_die_impossible_paction;
 
+  return model;
 }
-
-void *surf_model_resource_by_name(surf_model_t model, const char *name)
-{
-  return xbt_dict_get_or_null(model->resource_set, name);
-}
-
-
 /** @brief finalize common datastructures to all models */
 void surf_model_exit(surf_model_t model)
 {
@@ -56,4 +50,12 @@ void surf_model_exit(surf_model_t model)
   xbt_swag_free(model->states.done_action_set);
   xbt_dict_free(&model->resource_set);
   free(model->model_private);
+  free(model);
 }
+
+void *surf_model_resource_by_name(surf_model_t model, const char *name)
+{
+  return xbt_dict_get_or_null(model->resource_set, name);
+}
+
+
index 030afdf..57196e4 100644 (file)
@@ -677,8 +677,6 @@ static void finalize(void)
   xbt_dict_free(&link_set);
 
   surf_model_exit(surf_network_model);
-
-  free(surf_network_model);
   surf_network_model = NULL;
 
   loopback = NULL;
@@ -696,9 +694,7 @@ static void finalize(void)
 
 static void surf_network_model_init_internal(void)
 {
-  surf_network_model = xbt_new0(s_surf_model_t, 1);
-
-  surf_model_init(surf_network_model);
+  surf_network_model = surf_model_init();
 
   surf_network_model->get_resource_name = get_resource_name;
   surf_network_model->action_get_state = surf_action_get_state;
index c6e2e49..ee41e36 100644 (file)
@@ -286,8 +286,6 @@ static void action_set_max_duration(surf_action_t action, double duration)
 static void finalize(void)
 {
   surf_model_exit(surf_network_model);
-
-  free(surf_network_model);
   surf_network_model = NULL;
 
   card_number = 0;
@@ -295,9 +293,7 @@ static void finalize(void)
 
 static void surf_network_model_init_internal(void)
 {
-  surf_network_model = xbt_new0(s_surf_model_t, 1);
-
-  surf_model_init(surf_network_model);
+  surf_network_model = surf_model_init();
 
   surf_network_model->get_resource_name = get_resource_name;
   surf_network_model->action_get_state = surf_action_get_state;
index 4f6524e..096bd61 100644 (file)
@@ -244,12 +244,13 @@ void surf_config_models_setup(const char *platform_file)
     cpu_id =
       find_model_description(surf_cpu_model_description, cpu_model_name);
 
-    surf_cpu_model_description[cpu_id].model_init(platform_file);
-    surf_network_model_description[network_id].model_init(platform_file);
+    surf_cpu_model_description[cpu_id].model_init_preparse(platform_file);
+    surf_network_model_description[network_id].
+      model_init_preparse(platform_file);
   }
 
   DEBUG0("Call workstation_model_init");
-  surf_workstation_model_description[workstation_id].model_init
+  surf_workstation_model_description[workstation_id].model_init_preparse
     (platform_file);
 }
 
@@ -260,6 +261,7 @@ void surf_config_models_create_elms(void)
   int workstation_id =
     find_model_description(surf_workstation_model_description,
                            workstation_model_name);
-  if (surf_workstation_model_description[workstation_id].create_ws != NULL)
-    surf_workstation_model_description[workstation_id].create_ws();
+  if (surf_workstation_model_description[workstation_id].
+      model_init_postparse != NULL)
+    surf_workstation_model_description[workstation_id].model_init_postparse();
 }
index 945ead9..f6ba5c7 100644 (file)
@@ -155,16 +155,12 @@ static void finalize(void)
   xbt_swag_free(command_to_run);
 
   surf_model_exit(surf_timer_model);
-
-  free(surf_timer_model);
   surf_timer_model = NULL;
 }
 
 static void surf_timer_model_init_internal(void)
 {
-  surf_timer_model = xbt_new0(s_surf_model_t, 1);
-
-  surf_model_init(surf_timer_model);
+  surf_timer_model = surf_model_init();
 
   surf_timer_model->get_resource_name = get_resource_name;
   surf_timer_model->action_get_state = surf_action_get_state;
index 7318d82..5db137d 100644 (file)
@@ -151,14 +151,14 @@ static void update_resource_state(void *id,
 
 static surf_action_t execute(void *workstation, double size)
 {
-  return surf_cpu_model->extension.cpu.
-    execute(((workstation_CLM03_t) workstation)->cpu, size);
+  return surf_cpu_model->extension.
+    cpu.execute(((workstation_CLM03_t) workstation)->cpu, size);
 }
 
 static surf_action_t action_sleep(void *workstation, double duration)
 {
-  return surf_cpu_model->extension.cpu.
-    sleep(((workstation_CLM03_t) workstation)->cpu, duration);
+  return surf_cpu_model->extension.
+    cpu.sleep(((workstation_CLM03_t) workstation)->cpu, duration);
 }
 
 static void action_suspend(surf_action_t action)
@@ -214,35 +214,35 @@ static surf_action_t communicate(void *workstation_src,
                                  void *workstation_dst, double size,
                                  double rate)
 {
-  return surf_network_model->extension.network.
-    communicate(((workstation_CLM03_t) workstation_src)->network_card,
-                ((workstation_CLM03_t) workstation_dst)->network_card, size,
-                rate);
+  return surf_network_model->extension.
+    network.communicate(((workstation_CLM03_t) workstation_src)->network_card,
+                        ((workstation_CLM03_t) workstation_dst)->network_card,
+                        size, rate);
 }
 
 static e_surf_cpu_state_t get_state(void *workstation)
 {
-  return surf_cpu_model->extension.cpu.
-    get_state(((workstation_CLM03_t) workstation)->cpu);
+  return surf_cpu_model->extension.
+    cpu.get_state(((workstation_CLM03_t) workstation)->cpu);
 }
 
 static double get_speed(void *workstation, double load)
 {
-  return surf_cpu_model->extension.cpu.
-    get_speed(((workstation_CLM03_t) workstation)->cpu, load);
+  return surf_cpu_model->extension.
+    cpu.get_speed(((workstation_CLM03_t) workstation)->cpu, load);
 }
 
 static double get_available_speed(void *workstation)
 {
-  return surf_cpu_model->extension.cpu.
-    get_available_speed(((workstation_CLM03_t)
-                         workstation)->cpu);
+  return surf_cpu_model->extension.
+    cpu.get_available_speed(((workstation_CLM03_t)
+                             workstation)->cpu);
 }
 
 static xbt_dict_t get_properties(void *workstation)
 {
-  return surf_cpu_model->
-    get_properties(((workstation_CLM03_t) workstation)->cpu);
+  return surf_cpu_model->get_properties(((workstation_CLM03_t) workstation)->
+                                        cpu);
 }
 
 static surf_action_t execute_parallel_task(int workstation_nb,
@@ -260,17 +260,19 @@ static const void **get_route(void *src, void *dst)
 {
   workstation_CLM03_t workstation_src = (workstation_CLM03_t) src;
   workstation_CLM03_t workstation_dst = (workstation_CLM03_t) dst;
-  return surf_network_model->extension.network.
-    get_route(workstation_src->network_card, workstation_dst->network_card);
+  return surf_network_model->extension.network.get_route(workstation_src->
+                                                         network_card,
+                                                         workstation_dst->
+                                                         network_card);
 }
 
 static int get_route_size(void *src, void *dst)
 {
   workstation_CLM03_t workstation_src = (workstation_CLM03_t) src;
   workstation_CLM03_t workstation_dst = (workstation_CLM03_t) dst;
-  return surf_network_model->extension.network.
-    get_route_size(workstation_src->network_card,
-                   workstation_dst->network_card);
+  return surf_network_model->extension.
+    network.get_route_size(workstation_src->network_card,
+                           workstation_dst->network_card);
 }
 
 static const char *get_link_name(const void *link)
@@ -296,16 +298,12 @@ static int link_shared(const void *link)
 static void finalize(void)
 {
   surf_model_exit(surf_workstation_model);
-
-  free(surf_workstation_model);
   surf_workstation_model = NULL;
 }
 
 static void surf_workstation_model_init_internal(void)
 {
-  surf_workstation_model = xbt_new0(s_surf_model_t, 1);
-
-  surf_model_init(surf_workstation_model);
+  surf_workstation_model = surf_model_init();
 /*   surf_workstation_model->extension_private = xbt_new0(s_surf_workstation_model_extension_private_t,1); */
 
   surf_workstation_model->get_resource_name = get_resource_name;
index 7ea7344..60be093 100644 (file)
@@ -418,8 +418,6 @@ static void finalize(void)
   }
 
   surf_model_exit(surf_workstation_model);
-
-  free(surf_workstation_model);
   surf_workstation_model = NULL;
 
   for (i = 0; i < nb_workstation; i++)
@@ -1003,9 +1001,7 @@ static void define_callbacks(const char *file)
 
 static void model_init_internal(void)
 {
-  surf_workstation_model = xbt_new0(s_surf_model_t, 1);
-
-  surf_model_init(surf_workstation_model);
+  surf_workstation_model = surf_model_init();
 
   surf_workstation_model->get_resource_name = get_resource_name;
   surf_workstation_model->action_get_state = surf_action_get_state;