Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix simdag issue
authorPaul Bédaride <paul.bedaride@gmail.com>
Mon, 21 Oct 2013 09:47:29 +0000 (11:47 +0200)
committerPaul Bédaride <paul.bedaride@gmail.com>
Mon, 21 Oct 2013 09:47:29 +0000 (11:47 +0200)
src/include/surf/surf.h
src/surf/network.cpp
src/surf/surf.cpp
src/surf/surf_interface.cpp
src/surf/surf_routing.cpp
src/surf/surf_routing_cluster.cpp
src/surf/surf_routing_dijkstra.cpp
src/surf/surf_routing_floyd.cpp
src/surf/surf_routing_full.cpp
src/surf/surf_routing_vivaldi.cpp
src/surf/workstation_ptask_L07.cpp

index 423b84a..102f585 100644 (file)
@@ -338,9 +338,9 @@ surf_action_t surf_workstation_ls(surf_resource_t workstation, const char* mount
 size_t surf_workstation_get_size(surf_resource_t workstation, surf_file_t fd);
 surf_action_t surf_workstation_read(surf_resource_t resource, void *ptr, size_t size, surf_file_t fd);
 surf_action_t surf_workstation_write(surf_resource_t resource, const void *ptr, size_t size, surf_file_t fd);
 size_t surf_workstation_get_size(surf_resource_t workstation, surf_file_t fd);
 surf_action_t surf_workstation_read(surf_resource_t resource, void *ptr, size_t size, surf_file_t fd);
 surf_action_t surf_workstation_write(surf_resource_t resource, const void *ptr, size_t size, surf_file_t fd);
-int surf_network_link_is_shared(surf_network_link_t link);
-double surf_network_link_get_bandwidth(surf_network_link_t link);
-double surf_network_link_get_latency(surf_network_link_t link);
+int surf_network_link_is_shared(surf_cpp_resource_t link);
+double surf_network_link_get_bandwidth(surf_cpp_resource_t link);
+double surf_network_link_get_latency(surf_cpp_resource_t link);
 void *surf_action_get_data(surf_action_t action);
 void surf_action_set_data(surf_action_t action, void *data);
 void surf_action_unref(surf_action_t action);
 void *surf_action_get_data(surf_action_t action);
 void surf_action_set_data(surf_action_t action, void *data);
 void surf_action_unref(surf_action_t action);
index 60e6b03..b1c8981 100644 (file)
@@ -65,8 +65,8 @@ static void net_add_traces(void){
   /* connect all traces relative to network */
   xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
   /* connect all traces relative to network */
   xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    NetworkCm02LinkLmmPtr link = static_cast<NetworkCm02LinkLmmPtr>(
-                                    static_cast<NetworkCm02LinkPtr>(
+    NetworkCm02LinkLmmPtr link = dynamic_cast<NetworkCm02LinkLmmPtr>(
+                                    static_cast<ResourcePtr>(
                                                  xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
                                                  xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
@@ -80,8 +80,8 @@ static void net_add_traces(void){
 
   xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
 
   xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    NetworkCm02LinkLmmPtr link = static_cast<NetworkCm02LinkLmmPtr>(
-                                 static_cast<NetworkCm02LinkPtr>(
+    NetworkCm02LinkLmmPtr link = dynamic_cast<NetworkCm02LinkLmmPtr>(
+                                 static_cast<ResourcePtr>(
                                              xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
                                              xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
@@ -95,8 +95,8 @@ static void net_add_traces(void){
 
   xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
 
   xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    NetworkCm02LinkLmmPtr link = static_cast<NetworkCm02LinkLmmPtr>(
-                                 static_cast<NetworkCm02LinkPtr>(
+    NetworkCm02LinkLmmPtr link = dynamic_cast<NetworkCm02LinkLmmPtr>(
+                                 static_cast<ResourcePtr>(
                                              xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
                                              xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
@@ -308,7 +308,7 @@ NetworkCm02LinkLmmPtr NetworkCm02Model::createResource(const char *name,
                                                 state_initial, state_trace, bw_initial, bw_trace, lat_initial, lat_trace, policy);
 
 
                                                 state_initial, state_trace, bw_initial, bw_trace, lat_initial, lat_trace, policy);
 
 
-  xbt_lib_set(link_lib, name, SURF_LINK_LEVEL, static_cast<NetworkCm02LinkPtr>(nw_link));
+  xbt_lib_set(link_lib, name, SURF_LINK_LEVEL, static_cast<ResourcePtr>(nw_link));
   XBT_DEBUG("Create link '%s'",name);
 
   return nw_link;
   XBT_DEBUG("Create link '%s'",name);
 
   return nw_link;
@@ -329,7 +329,7 @@ void NetworkCm02Model::updateActionsStateLazy(double now, double delta)
         lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem,
                                                             action->p_variable,
                                                             i);
         lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem,
                                                             action->p_variable,
                                                             i);
-        NetworkCm02LinkPtr link = (NetworkCm02LinkPtr) lmm_constraint_id(constraint);
+        NetworkCm02LinkPtr link = static_cast<NetworkCm02LinkPtr>(lmm_constraint_id(constraint));
         TRACE_surf_link_set_utilization(link->m_name,
                                         action->p_category,
                                         (lmm_variable_getvalue(action->p_variable)*
         TRACE_surf_link_set_utilization(link->m_name,
                                         action->p_category,
                                         (lmm_variable_getvalue(action->p_variable)*
@@ -397,7 +397,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
              src->p_name, dst->p_name);
 
   xbt_dynar_foreach(route, i, _link) {
              src->p_name, dst->p_name);
 
   xbt_dynar_foreach(route, i, _link) {
-       link = static_cast<NetworkCm02LinkLmmPtr>(static_cast<NetworkCm02LinkPtr>(_link));
+       link = dynamic_cast<NetworkCm02LinkLmmPtr>(static_cast<ResourcePtr>(_link));
     if (link->p_stateCurrent == SURF_RESOURCE_OFF) {
       failed = 1;
       break;
     if (link->p_stateCurrent == SURF_RESOURCE_OFF) {
       failed = 1;
       break;
@@ -406,7 +406,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   if (sg_network_crosstraffic == 1) {
          routing_platf->getRouteAndLatency(dst, src, &back_route, NULL);
     xbt_dynar_foreach(back_route, i, _link) {
   if (sg_network_crosstraffic == 1) {
          routing_platf->getRouteAndLatency(dst, src, &back_route, NULL);
     xbt_dynar_foreach(back_route, i, _link) {
-      link = static_cast<NetworkCm02LinkLmmPtr>(static_cast<NetworkCm02LinkPtr>(_link));
+      link = dynamic_cast<NetworkCm02LinkLmmPtr>(static_cast<ResourcePtr>(_link));
       if (link->p_stateCurrent == SURF_RESOURCE_OFF) {
         failed = 1;
         break;
       if (link->p_stateCurrent == SURF_RESOURCE_OFF) {
         failed = 1;
         break;
@@ -431,14 +431,14 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   bandwidth_bound = -1.0;
   if (sg_weight_S_parameter > 0) {
     xbt_dynar_foreach(route, i, _link) {
   bandwidth_bound = -1.0;
   if (sg_weight_S_parameter > 0) {
     xbt_dynar_foreach(route, i, _link) {
-      link = static_cast<NetworkCm02LinkLmmPtr>(static_cast<NetworkCm02LinkPtr>(_link));
+      link = dynamic_cast<NetworkCm02LinkLmmPtr>(static_cast<ResourcePtr>(_link));
       action->m_weight +=
          sg_weight_S_parameter /
          (link->p_power.peak * link->p_power.scale);
     }
   }
   xbt_dynar_foreach(route, i, _link) {
       action->m_weight +=
          sg_weight_S_parameter /
          (link->p_power.peak * link->p_power.scale);
     }
   }
   xbt_dynar_foreach(route, i, _link) {
-       link = static_cast<NetworkCm02LinkLmmPtr>(static_cast<NetworkCm02LinkPtr>(_link));
+       link = dynamic_cast<NetworkCm02LinkLmmPtr>(static_cast<ResourcePtr>(_link));
     double bb = bandwidthFactor(size) * (link->p_power.peak * link->p_power.scale);
     bandwidth_bound =
         (bandwidth_bound < 0.0) ? bb : min(bandwidth_bound, bb);
     double bb = bandwidthFactor(size) * (link->p_power.peak * link->p_power.scale);
     bandwidth_bound =
         (bandwidth_bound < 0.0) ? bb : min(bandwidth_bound, bb);
@@ -452,7 +452,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
                "Using a model with a gap (e.g., SMPI) with a platform without links (e.g. vivaldi)!!!");
 
     //link = *(NetworkCm02LinkLmmPtr *) xbt_dynar_get_ptr(route, 0);
                "Using a model with a gap (e.g., SMPI) with a platform without links (e.g. vivaldi)!!!");
 
     //link = *(NetworkCm02LinkLmmPtr *) xbt_dynar_get_ptr(route, 0);
-    link = static_cast<NetworkCm02LinkLmmPtr>(*static_cast<NetworkCm02LinkPtr *>(xbt_dynar_get_ptr(route, 0)));
+    link = dynamic_cast<NetworkCm02LinkLmmPtr>(*static_cast<ResourcePtr *>(xbt_dynar_get_ptr(route, 0)));
     gapAppend(size, link, action);
     XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)",
               action, src->p_name, dst->p_name, action->m_senderGap,
     gapAppend(size, link, action);
     XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)",
               action, src->p_name, dst->p_name, action->m_senderGap,
@@ -482,14 +482,14 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   }
 
   xbt_dynar_foreach(route, i, _link) {
   }
 
   xbt_dynar_foreach(route, i, _link) {
-       link = static_cast<NetworkCm02LinkLmmPtr>(static_cast<NetworkCm02LinkPtr>(_link));
+       link = dynamic_cast<NetworkCm02LinkLmmPtr>(static_cast<ResourcePtr>(_link));
     lmm_expand(p_maxminSystem, link->p_constraint, action->p_variable, 1.0);
   }
 
   if (sg_network_crosstraffic == 1) {
     XBT_DEBUG("Fullduplex active adding backward flow using 5%%");
     xbt_dynar_foreach(back_route, i, _link) {
     lmm_expand(p_maxminSystem, link->p_constraint, action->p_variable, 1.0);
   }
 
   if (sg_network_crosstraffic == 1) {
     XBT_DEBUG("Fullduplex active adding backward flow using 5%%");
     xbt_dynar_foreach(back_route, i, _link) {
-      link = static_cast<NetworkCm02LinkLmmPtr>(static_cast<NetworkCm02LinkPtr>(_link));
+      link = dynamic_cast<NetworkCm02LinkLmmPtr>(static_cast<ResourcePtr>(_link));
       lmm_expand(p_maxminSystem, link->p_constraint, action->p_variable, .05);
     }
   }
       lmm_expand(p_maxminSystem, link->p_constraint, action->p_variable, .05);
     }
   }
index 88d7ad1..179f64a 100644 (file)
@@ -333,7 +333,7 @@ static XBT_INLINE void surf_cpu_free(void *r)
 
 static XBT_INLINE void surf_link_free(void *r)
 {
 
 static XBT_INLINE void surf_link_free(void *r)
 {
-  delete static_cast<NetworkCm02LinkPtr>(r);
+  delete dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(r));
 }
 
 static XBT_INLINE void surf_workstation_free(void *r)
 }
 
 static XBT_INLINE void surf_workstation_free(void *r)
index c45386e..2bccb88 100644 (file)
@@ -205,7 +205,7 @@ void *surf_as_cluster_get_backbone(AS_t as){
 }
 
 void surf_as_cluster_set_backbone(AS_t as, void* backbone){
 }
 
 void surf_as_cluster_set_backbone(AS_t as, void* backbone){
-  static_cast<AsClusterPtr>(as)->p_backbone = static_cast<NetworkCm02LinkPtr>(backbone);
+  static_cast<AsClusterPtr>(as)->p_backbone = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(backbone));
 }
 
 const char *surf_model_name(surf_model_t model){
 }
 
 const char *surf_model_name(surf_model_t model){
@@ -310,16 +310,16 @@ surf_action_t surf_workstation_write(surf_resource_t resource, const void *ptr,
   return get_casted_workstation(resource)->write(ptr, size, fd);
 }
 
   return get_casted_workstation(resource)->write(ptr, size, fd);
 }
 
-int surf_network_link_is_shared(surf_network_link_t link){
-  return link->isShared();
+int surf_network_link_is_shared(surf_cpp_resource_t link){
+  return dynamic_cast<NetworkCm02LinkPtr>(link)->isShared();
 }
 
 }
 
-double surf_network_link_get_bandwidth(surf_network_link_t link){
-  return link->getBandwidth();
+double surf_network_link_get_bandwidth(surf_cpp_resource_t link){
+  return dynamic_cast<NetworkCm02LinkPtr>(link)->getBandwidth();
 }
 
 }
 
-double surf_network_link_get_latency(surf_network_link_t link){
-  return link->getLatency();
+double surf_network_link_get_latency(surf_cpp_resource_t link){
+  return dynamic_cast<NetworkCm02LinkPtr>(link)->getLatency();
 }
 
 surf_action_t surf_cpu_execute(surf_resource_t cpu, double size){
 }
 
 surf_action_t surf_cpu_execute(surf_resource_t cpu, double size){
index f4f22a8..8600c44 100644 (file)
@@ -103,7 +103,7 @@ struct s_model_type routing_models[] = {
  */
 static void parse_S_host_link(sg_platf_host_link_cbarg_t host)
 {
  */
 static void parse_S_host_link(sg_platf_host_link_cbarg_t host)
 {
-  RoutingEdgePtr info = (RoutingEdgePtr) xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL);
+  RoutingEdgePtr info = static_cast<RoutingEdgePtr>(xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL));
   xbt_assert(info, "Host '%s' not found!", host->id);
   xbt_assert(current_routing->p_modelDesc == &routing_models[SURF_MODEL_CLUSTER] ||
       current_routing->p_modelDesc == &routing_models[SURF_MODEL_VIVALDI],
   xbt_assert(info, "Host '%s' not found!", host->id);
   xbt_assert(current_routing->p_modelDesc == &routing_models[SURF_MODEL_CLUSTER] ||
       current_routing->p_modelDesc == &routing_models[SURF_MODEL_VIVALDI],
index 0e7a67a..6bc1553 100644 (file)
@@ -37,7 +37,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if((src->m_id == dst->m_id) && info.loopback_link  ){
       xbt_dynar_push_as(route->link_list, void *, info.loopback_link);
       if (lat)
     if((src->m_id == dst->m_id) && info.loopback_link  ){
       xbt_dynar_push_as(route->link_list, void *, info.loopback_link);
       if (lat)
-        *lat += static_cast<NetworkCm02LinkPtr>(info.loopback_link)->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.loopback_link))->getLatency();
       return;
     }
 
       return;
     }
 
@@ -48,14 +48,14 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if (info.link_up) {         // link up
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
       if (lat)
     if (info.link_up) {         // link up
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
       if (lat)
-        *lat += static_cast<NetworkCm02LinkPtr>(info.link_up)->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
     }
   }
 
   if (p_backbone) {
     }
   }
 
   if (p_backbone) {
-    xbt_dynar_push_as(route->link_list, void *, p_backbone);
+    xbt_dynar_push_as(route->link_list, void *, static_cast<ResourcePtr>(p_backbone));
     if (lat)
     if (lat)
-      *lat += static_cast<NetworkCm02LinkPtr>(p_backbone)->getLatency();
+      *lat += p_backbone->getLatency();
   }
 
   if (dst->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) {    // No specific link for router
   }
 
   if (dst->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) {    // No specific link for router
@@ -64,7 +64,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if (info.link_down) {       // link down
       xbt_dynar_push_as(route->link_list, void *, info.link_down);
       if (lat)
     if (info.link_down) {       // link down
       xbt_dynar_push_as(route->link_list, void *, info.link_down);
       if (lat)
-        *lat += static_cast<NetworkCm02LinkPtr>(info.link_down)->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
     }
 
     if (info.limiter_link)          // limiter for receiver
     }
 
     if (info.limiter_link)          // limiter for receiver
index 70c084f..da697be 100644 (file)
@@ -207,7 +207,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
   sg_platf_route_cbarg_t e_route;
   int size = 0;
   unsigned int cpt;
   sg_platf_route_cbarg_t e_route;
   int size = 0;
   unsigned int cpt;
-  NetworkCm02LinkPtr link;
+  void *link;
   xbt_dynar_t links = NULL;
   route_cache_element_t elm = NULL;
   xbt_dynar_t nodes = xbt_graph_get_nodes(p_routeGraph);
   xbt_dynar_t links = NULL;
   route_cache_element_t elm = NULL;
   xbt_dynar_t nodes = xbt_graph_get_nodes(p_routeGraph);
@@ -237,7 +237,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
-        *lat += link->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
 
   }
     }
 
   }
@@ -345,7 +345,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
       xbt_dynar_foreach(links, cpt, link) {
         xbt_dynar_insert_at(route->link_list, pos, &link);
         if (lat)
       xbt_dynar_foreach(links, cpt, link) {
         xbt_dynar_insert_at(route->link_list, pos, &link);
         if (lat)
-          *lat += link->getLatency();
+          *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
         pos++;
       }
     }
         pos++;
       }
     }
@@ -354,7 +354,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
-        *lat += link->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
     size++;
   }
     }
     size++;
   }
index f3c72ab..499a210 100644 (file)
@@ -104,7 +104,7 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat
   while (!xbt_dynar_is_empty(route_stack)) {
     sg_platf_route_cbarg_t e_route = xbt_dynar_pop_as(route_stack, sg_platf_route_cbarg_t);
     xbt_dynar_t links;
   while (!xbt_dynar_is_empty(route_stack)) {
     sg_platf_route_cbarg_t e_route = xbt_dynar_pop_as(route_stack, sg_platf_route_cbarg_t);
     xbt_dynar_t links;
-    NetworkCm02LinkPtr link;
+    void *link;
     unsigned int cpt;
 
     if (p_hierarchy == SURF_ROUTING_RECURSIVE && prev_dst_gw != NULL
     unsigned int cpt;
 
     if (p_hierarchy == SURF_ROUTING_RECURSIVE && prev_dst_gw != NULL
@@ -117,7 +117,7 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_push_as(res->link_list, sg_routing_link_t, link);
       if (lat)
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_push_as(res->link_list, sg_routing_link_t, link);
       if (lat)
-        *lat += link->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
 
     prev_dst_gw = e_route->gw_dst;
     }
 
     prev_dst_gw = e_route->gw_dst;
index 7e5f14d..a2435b5 100644 (file)
@@ -106,7 +106,7 @@ void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf
   size_t table_size = xbt_dynar_length(p_indexNetworkElm);
 
   sg_platf_route_cbarg_t e_route = NULL;
   size_t table_size = xbt_dynar_length(p_indexNetworkElm);
 
   sg_platf_route_cbarg_t e_route = NULL;
-  NetworkCm02LinkPtr link;
+  void *link;
   unsigned int cpt = 0;
 
   e_route = TO_ROUTE_FULL(src->m_id, dst->m_id);
   unsigned int cpt = 0;
 
   e_route = TO_ROUTE_FULL(src->m_id, dst->m_id);
@@ -117,7 +117,7 @@ void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf
     xbt_dynar_foreach(e_route->link_list, cpt, link) {
       xbt_dynar_push(res->link_list, &link);
       if (lat)
     xbt_dynar_foreach(e_route->link_list, cpt, link) {
       xbt_dynar_push(res->link_list, &link);
       if (lat)
-        *lat += link->getLatency();
+        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
   }
 }
     }
   }
 }
index 4fad8e3..3b705be 100644 (file)
@@ -43,7 +43,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       if(info.link_up) { // link up
         xbt_dynar_push_as(route->link_list, void*, info.link_up);
         if (lat)
       if(info.link_up) { // link up
         xbt_dynar_push_as(route->link_list, void*, info.link_up);
         if (lat)
-          *lat += static_cast<NetworkCm02LinkPtr>(info.link_up)->getLatency();
+          *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
       }
     }
     src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_src_name, COORD_HOST_LEVEL);
       }
     }
     src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_src_name, COORD_HOST_LEVEL);
@@ -65,7 +65,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       if(info.link_down) { // link down
         xbt_dynar_push_as(route->link_list,void*,info.link_down);
         if (lat)
       if(info.link_down) { // link down
         xbt_dynar_push_as(route->link_list,void*,info.link_down);
         if (lat)
-          *lat += static_cast<NetworkCm02LinkPtr>(info.link_down)->getLatency();
+          *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
       }
     }
     dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_dst_name, COORD_HOST_LEVEL);
       }
     }
     dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_dst_name, COORD_HOST_LEVEL);
index bfe7b5b..d62afc9 100644 (file)
@@ -17,14 +17,15 @@ lmm_system_t ptask_maxmin_system = NULL;
 WorkstationL07Model::WorkstationL07Model() : WorkstationModel("Workstation ptask_L07") {
   if (!ptask_maxmin_system)
        ptask_maxmin_system = lmm_system_new(1);
 WorkstationL07Model::WorkstationL07Model() : WorkstationModel("Workstation ptask_L07") {
   if (!ptask_maxmin_system)
        ptask_maxmin_system = lmm_system_new(1);
+  surf_network_model = new NetworkL07Model();
+  surf_cpu_model = new CpuL07Model();
   routing_model_create(p_networkModel->createResource("__loopback__",
                                                          498000000, NULL,
                                                          0.000015, NULL,
                                                          SURF_RESOURCE_ON, NULL,
                                                          SURF_LINK_FATPIPE, NULL));
 
   routing_model_create(p_networkModel->createResource("__loopback__",
                                                          498000000, NULL,
                                                          0.000015, NULL,
                                                          SURF_RESOURCE_ON, NULL,
                                                          SURF_LINK_FATPIPE, NULL));
 
-   surf_network_model = new NetworkL07Model();
-   surf_cpu_model = new CpuL07Model();
+
 }
 
 double WorkstationL07Model::shareResources(double now)
 }
 
 double WorkstationL07Model::shareResources(double now)
@@ -160,7 +161,7 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb,
         latency = MAX(latency, lat);
 
         xbt_dynar_foreach(route, cpt, _link) {
         latency = MAX(latency, lat);
 
         xbt_dynar_foreach(route, cpt, _link) {
-           link = dynamic_cast<LinkL07Ptr>(static_cast<NetworkCm02LinkPtr>(_link));
+           link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(_link));
            xbt_dict_set(ptask_parallel_task_link_set, link->m_name, link, NULL);
         }
       }
            xbt_dict_set(ptask_parallel_task_link_set, link->m_name, link, NULL);
         }
       }
@@ -204,6 +205,7 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb,
     for (j = 0; j < workstation_nb; j++) {
       void *_link;
       LinkL07Ptr link;
     for (j = 0; j < workstation_nb; j++) {
       void *_link;
       LinkL07Ptr link;
+
       xbt_dynar_t route=NULL;
       if (communication_amount[i * workstation_nb + j] == 0.0)
         continue;
       xbt_dynar_t route=NULL;
       if (communication_amount[i * workstation_nb + j] == 0.0)
         continue;
@@ -217,7 +219,7 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb,
                                            &route, NULL);
 
       xbt_dynar_foreach(route, cpt, _link) {
                                            &route, NULL);
 
       xbt_dynar_foreach(route, cpt, _link) {
-        link = static_cast<LinkL07Ptr>(static_cast<NetworkCm02LinkPtr>(_link));
+        link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(_link));
         lmm_expand_add(ptask_maxmin_system, link->p_constraint,
                        action->p_variable,
                        communication_amount[i * workstation_nb + j]);
         lmm_expand_add(ptask_maxmin_system, link->p_constraint,
                        action->p_variable,
                        communication_amount[i * workstation_nb + j]);
@@ -352,7 +354,7 @@ ResourcePtr NetworkL07Model::createResource(const char *name,
   if (policy == SURF_LINK_FATPIPE)
     lmm_constraint_shared(nw_link->p_constraint);
 
   if (policy == SURF_LINK_FATPIPE)
     lmm_constraint_shared(nw_link->p_constraint);
 
-  xbt_lib_set(link_lib, name, SURF_LINK_LEVEL, static_cast<NetworkCm02LinkPtr>(nw_link));
+  xbt_lib_set(link_lib, name, SURF_LINK_LEVEL, static_cast<ResourcePtr>(nw_link));
   return nw_link;
 }
 
   return nw_link;
 }
 
@@ -388,7 +390,7 @@ void WorkstationL07Model::addTraces()
   /* Connect traces relative to network */
   xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
   /* Connect traces relative to network */
   xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    LinkL07Ptr link = (LinkL07Ptr) xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL);
+    LinkL07Ptr link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -398,7 +400,7 @@ void WorkstationL07Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
 
   xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    LinkL07Ptr link = (LinkL07Ptr) xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL);
+    LinkL07Ptr link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -408,7 +410,7 @@ void WorkstationL07Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
 
   xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    LinkL07Ptr link = (LinkL07Ptr) xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL);
+    LinkL07Ptr link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);