Browse Source

Fix build with SimGrid 3.26

Samuel Thibault 5 years ago
parent
commit
8ed80d73aa
1 changed files with 23 additions and 8 deletions
  1. 23 8
      src/core/simgrid.c

+ 23 - 8
src/core/simgrid.c

@@ -144,8 +144,11 @@ msg_as_t _starpu_simgrid_get_as_by_name(const char *name)
 int _starpu_simgrid_get_nbhosts(const char *prefix)
 {
 	int ret;
-	xbt_dynar_t hosts;
-	unsigned i, nb;
+#ifdef HAVE_SG_HOST_LIST
+	sg_host_t *hosts_list = NULL;
+#endif
+	xbt_dynar_t hosts = NULL;
+	unsigned i, nb = 0;
 	unsigned len = strlen(prefix);
 
 	if (_starpu_simgrid_running_smpi())
@@ -173,26 +176,38 @@ int _starpu_simgrid_get_nbhosts(const char *prefix)
 #endif /* HAVE_STARPU_SIMGRID_GET_AS_BY_NAME */
 	}
 	else
-#ifdef STARPU_HAVE_SIMGRID_HOST_H
+	{
+#ifdef HAVE_SG_HOST_LIST
+		hosts_list = sg_host_list();
+		nb = sg_host_count();
+#elif defined(STARPU_HAVE_SIMGRID_HOST_H)
 		hosts = sg_hosts_as_dynar();
 #else
 		hosts = MSG_hosts_as_dynar();
 #endif
-	nb = xbt_dynar_length(hosts);
+	}
+	if (hosts)
+		nb = xbt_dynar_length(hosts);
 
 	ret = 0;
 	for (i = 0; i < nb; i++)
 	{
 		const char *name;
-#ifdef STARPU_HAVE_SIMGRID_HOST_H
-		name = sg_host_get_name(xbt_dynar_get_as(hosts, i, sg_host_t));
+#ifdef HAVE_SG_HOST_LIST
+		if (hosts_list)
+			name = sg_host_get_name(hosts_list[i]);
+		else
+#endif
+#if defined(STARPU_HAVE_SIMGRID_HOST_H)
+			name = sg_host_get_name(xbt_dynar_get_as(hosts, i, sg_host_t));
 #else
-		name = MSG_host_get_name(xbt_dynar_get_as(hosts, i, msg_host_t));
+			name = MSG_host_get_name(xbt_dynar_get_as(hosts, i, msg_host_t));
 #endif
 		if (!strncmp(name, prefix, len))
 			ret++;
 	}
-	xbt_dynar_free(&hosts);
+	if (hosts)
+		xbt_dynar_free(&hosts);
 	return ret;
 }