Browse Source

Fix build with upcoming simgrid release

Samuel Thibault 8 years ago
parent
commit
cd847ea3d3
2 changed files with 28 additions and 2 deletions
  1. 1 1
      configure.ac
  2. 27 1
      src/core/simgrid.c

+ 1 - 1
configure.ac

@@ -163,7 +163,7 @@ if test x$enable_simgrid = xyes ; then
 	AC_CHECK_HEADERS([simgrid/msg.h], [AC_DEFINE([STARPU_HAVE_SIMGRID_MSG_H], [1], [Define to 1 if you have msg.h in simgrid/.])])
 	AC_CHECK_HEADERS([xbt/synchro.h], [AC_DEFINE([STARPU_HAVE_XBT_SYNCHRO_H], [1], [Define to 1 if you have synchro.h in xbt/.])])
 	AC_CHECK_TYPES([smx_actor_t], [AC_DEFINE([STARPU_HAVE_SMX_ACTOR_T], [1], [Define to 1 if you have the smx_actor_t type.])], [], [[#include <simgrid/simix.h>]])
-   	AC_CHECK_FUNCS([MSG_process_join MSG_process_attach MSG_get_as_by_name MSG_environment_get_routing_root MSG_host_get_speed xbt_mutex_try_acquire smpi_process_set_user_data sg_link_name])
+   	AC_CHECK_FUNCS([MSG_process_join MSG_process_attach MSG_get_as_by_name MSG_environment_get_routing_root MSG_host_get_speed xbt_mutex_try_acquire smpi_process_set_user_data sg_link_name sg_host_route])
 	AC_CHECK_FUNCS([xbt_barrier_init], [AC_DEFINE([STARPU_SIMGRID_HAVE_XBT_BARRIER_INIT], [1], [Define to 1 if you have the `xbt_barrier_init' function.])])
 	AC_CHECK_DECLS([smpi_process_set_user_data], [], [], [[#include <smpi/smpi.h>]])
 	AC_CHECK_FUNCS([SIMIX_process_get_code], [AC_DEFINE([STARPU_SIMGRID_HAVE_SIMIX_PROCESS_GET_CODE], [1], [Define to 1 if you have the `SIMIX_process_get_code' function.])])

+ 27 - 1
src/core/simgrid.c

@@ -878,7 +878,12 @@ void _starpu_simgrid_count_ngpus(void)
 		{
 			int busid;
 			msg_host_t srchost, dsthost;
+#ifdef HAVE_SG_HOST_ROUTE
+			xbt_dynar_t route_dynar = xbt_dynar_new(sizeof(SD_link_t), NULL);
+			SD_link_t *route;
+#else
 			const SD_link_t *route;
+#endif
 			int i, routesize;
 			int through;
 			unsigned src2;
@@ -893,8 +898,14 @@ void _starpu_simgrid_count_ngpus(void)
 
 			srchost = _starpu_simgrid_get_memnode_host(src);
 			dsthost = _starpu_simgrid_get_memnode_host(dst);
+#ifdef HAVE_SG_HOST_ROUTE
+			sg_host_route(srchost, dsthost, route_dynar);
+			routesize = xbt_dynar_length(route_dynar);
+			route = xbt_dynar_to_array(route_dynar);
+#else
 			routesize = SD_route_get_size(srchost, dsthost);
 			route = SD_route_get_list(srchost, dsthost);
+#endif
 
 			/* If it goes through "Host", do not care, there is no
 			 * direct transfer support */
@@ -933,8 +944,17 @@ void _starpu_simgrid_count_ngpus(void)
 				if (starpu_bus_get_id(src2, STARPU_MAIN_RAM) == -1)
 					continue;
 				msg_host_t srchost2 = _starpu_simgrid_get_memnode_host(src2);
-				int routesize2 = SD_route_get_size(srchost2, ramhost);
+				int routesize2;
+#ifdef HAVE_SG_HOST_ROUTE
+				xbt_dynar_t route_dynar2 = xbt_dynar_new(sizeof(SD_link_t), NULL);
+				SD_link_t *route2;
+				sg_host_route(srchost2, ramhost, route_dynar2);
+				routesize2 = xbt_dynar_length(route_dynar2);
+				route2 = xbt_dynar_to_array(route_dynar2);
+#else
 				const SD_link_t *route2 = SD_route_get_list(srchost2, ramhost);
+				routesize2 = SD_route_get_size(srchost2, ramhost);
+#endif
 
 				for (i = 0; i < routesize2; i++)
 					if (!strcmp(name, sg_link_name(route2[i])))
@@ -943,9 +963,15 @@ void _starpu_simgrid_count_ngpus(void)
 						ngpus++;
 						break;
 					}
+#ifdef HAVE_SG_HOST_ROUTE
+				free(route2);
+#endif
 			}
 			_STARPU_DEBUG("%d->%d through %s, %u GPUs\n", src, dst, name, ngpus);
 			starpu_bus_set_ngpus(busid, ngpus);
+#ifdef HAVE_SG_HOST_ROUTE
+			free(route);
+#endif
 		}
 #endif
 }