Pārlūkot izejas kodu

Use more S4U functions

Samuel Thibault 5 gadi atpakaļ
vecāks
revīzija
48c537a3fd
3 mainītis faili ar 29 papildinājumiem un 1 dzēšanām
  1. 1 1
      configure.ac
  2. 4 0
      src/common/thread.c
  3. 24 0
      src/core/simgrid.c

+ 1 - 1
configure.ac

@@ -185,7 +185,7 @@ if test x$enable_simgrid = xyes ; then
 	AC_CHECK_FUNCS([MSG_process_attach MSG_zone_get_hosts MSG_process_self_name MSG_process_userdata_init])
 	AC_CHECK_FUNCS([xbt_mutex_try_acquire smpi_process_set_user_data sg_zone_get_by_name sg_link_name sg_host_route sg_host_self sg_host_speed simcall_process_create sg_config_continue_after_help])
 	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_FUNCS([sg_actor_sleep_for sg_actor_self])
+	AC_CHECK_FUNCS([sg_actor_sleep_for sg_actor_self sg_host_get_properties])
 	AC_CHECK_DECLS([smpi_process_set_user_data], [], [], [[#include <smpi/smpi.h>]])
 
 	# Oldies for compatibility with older simgrid

+ 4 - 0
src/common/thread.c

@@ -76,7 +76,11 @@ int starpu_pthread_create_on(char *name, starpu_pthread_t *thread, const starpu_
 	asprintf(&_args[1], "%p", arg);
 	_args[2] = NULL;
 	if (!host)
+#ifdef STARPU_HAVE_SIMGRID_HOST_H
+		host = sg_host_by_name("MAIN");
+#else
 		host = MSG_get_host_by_name("MAIN");
+#endif
 	void *tsd;
 	_STARPU_CALLOC(tsd, MAX_TSD+1, sizeof(void*));
 	*thread = MSG_process_create_with_arguments(name, _starpu_simgrid_thread_start, tsd, host, 2, _args);

+ 24 - 0
src/core/simgrid.c

@@ -151,14 +151,22 @@ int _starpu_simgrid_get_nbhosts(const char *prefix)
 #endif /* HAVE_STARPU_SIMGRID_GET_AS_BY_NAME */
 	}
 	else
+#ifdef STARPU_HAVE_SIMGRID_HOST_H
+		hosts = sg_hosts_as_dynar();
+#else
 		hosts = MSG_hosts_as_dynar();
+#endif
 	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, msg_host_t));
+#else
 		name = MSG_host_get_name(xbt_dynar_get_as(hosts, i, msg_host_t));
+#endif
 		if (!strncmp(name, prefix, len))
 			ret++;
 	}
@@ -178,10 +186,18 @@ unsigned long long _starpu_simgrid_get_memsize(const char *prefix, unsigned devi
 	if (!host)
 		return 0;
 
+#ifdef HAVE_SG_HOST_GET_PROPERTIES
+	if (!sg_host_get_properties(host))
+#else
 	if (!MSG_host_get_properties(host))
+#endif
 		return 0;
 
+#ifdef HAVE_SG_HOST_GET_PROPERTIES
+	memsize = sg_host_get_property_value(host, "memsize");
+#else
 	memsize = MSG_host_get_property_value(host, "memsize");
+#endif
 	if (!memsize)
 		return 0;
 
@@ -195,10 +211,18 @@ msg_host_t _starpu_simgrid_get_host_by_name(const char *name)
 		char mpiname[32];
 		STARPU_ASSERT(starpu_mpi_world_rank);
 		snprintf(mpiname, sizeof(mpiname), STARPU_MPI_AS_PREFIX"%d-%s", starpu_mpi_world_rank(), name);
+#ifdef STARPU_HAVE_SIMGRID_HOST_H
+		return sg_host_by_name(mpiname);
+#else
 		return MSG_get_host_by_name(mpiname);
+#endif
 	}
 	else
+#ifdef STARPU_HAVE_SIMGRID_HOST_H
+		return sg_host_by_name(name);
+#else
 		return MSG_get_host_by_name(name);
+#endif
 }
 
 msg_host_t _starpu_simgrid_get_host_by_worker(struct _starpu_worker *worker)