[mpich2-commits] r5447 - in mpich2/trunk/src/pm/hydra: include ui/mpiexec ui/utils
balaji at mcs.anl.gov
balaji at mcs.anl.gov
Mon Oct 12 13:43:14 CDT 2009
Author: balaji
Date: 2009-10-12 13:43:14 -0500 (Mon, 12 Oct 2009)
New Revision: 5447
Modified:
mpich2/trunk/src/pm/hydra/include/hydra.h
mpich2/trunk/src/pm/hydra/include/hydra_base.h
mpich2/trunk/src/pm/hydra/ui/mpiexec/mpiexec.c
mpich2/trunk/src/pm/hydra/ui/mpiexec/utils.c
mpich2/trunk/src/pm/hydra/ui/utils/uiu.c
Log:
Check the number of processes launched to see if a proxy is active,
instead of relying on whether it has an executable to launch or not.
Modified: mpich2/trunk/src/pm/hydra/include/hydra.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra.h 2009-10-11 23:33:52 UTC (rev 5446)
+++ mpich2/trunk/src/pm/hydra/include/hydra.h 2009-10-12 18:43:14 UTC (rev 5447)
@@ -50,10 +50,11 @@
HYD_Time start;
HYD_Time timeout;
+ struct HYD_Proxy *proxy_list;
int global_core_count;
struct HYD_Exec_info *exec_info_list;
- struct HYD_Proxy *proxy_list;
+ int global_process_count;
/* Random parameters used for internal code */
int func_depth;
Modified: mpich2/trunk/src/pm/hydra/include/hydra_base.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_base.h 2009-10-11 23:33:52 UTC (rev 5446)
+++ mpich2/trunk/src/pm/hydra/include/hydra_base.h 2009-10-12 18:43:14 UTC (rev 5447)
@@ -157,9 +157,11 @@
#endif
#endif
+#define PROXY_IS_ACTIVE(proxy, total_procs) \
+ ((proxy)->segment_list->start_pid <= (total_procs))
+
#define FORALL_ACTIVE_PROXIES(proxy, proxy_list) \
- for ((proxy) = (proxy_list); (proxy) && (proxy)->active; \
- (proxy) = (proxy)->next)
+ for ((proxy) = (proxy_list); (proxy) && (proxy)->active; (proxy) = (proxy)->next)
#define FORALL_PROXIES(proxy, proxy_list) \
for ((proxy) = (proxy_list); (proxy); (proxy) = (proxy)->next)
Modified: mpich2/trunk/src/pm/hydra/ui/mpiexec/mpiexec.c
===================================================================
--- mpich2/trunk/src/pm/hydra/ui/mpiexec/mpiexec.c 2009-10-11 23:33:52 UTC (rev 5446)
+++ mpich2/trunk/src/pm/hydra/ui/mpiexec/mpiexec.c 2009-10-12 18:43:14 UTC (rev 5447)
@@ -157,19 +157,14 @@
}
}
- status = HYD_UIU_merge_exec_info_to_proxy();
- HYDU_ERR_POP(status, "unable to merge exec info\n");
-
- if (HYD_handle.debug)
- HYD_UIU_print_params();
-
/* Figure out what the active proxys are: in RUNTIME and
* PERSISTENT modes, only proxys which have an executable are
* active. In BOOT, BOOT_FOREGROUND and SHUTDOWN modes, all
* proxys are active. */
if (HYD_handle.launch_mode == HYD_LAUNCH_RUNTIME ||
HYD_handle.launch_mode == HYD_LAUNCH_PERSISTENT) {
- for (proxy = HYD_handle.proxy_list; proxy && proxy->exec_list;
+ for (proxy = HYD_handle.proxy_list;
+ proxy && (proxy->segment_list->start_pid <= HYD_handle.global_process_count);
proxy = proxy->next)
proxy->active = 1;
}
@@ -178,6 +173,12 @@
proxy->active = 1;
}
+ status = HYD_UIU_merge_exec_info_to_proxy();
+ HYDU_ERR_POP(status, "unable to merge exec info\n");
+
+ if (HYD_handle.debug)
+ HYD_UIU_print_params();
+
HYDU_time_set(&HYD_handle.start, NULL); /* NULL implies right now */
if (getenv("MPIEXEC_TIMEOUT"))
timeout = atoi(getenv("MPIEXEC_TIMEOUT"));
Modified: mpich2/trunk/src/pm/hydra/ui/mpiexec/utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/ui/mpiexec/utils.c 2009-10-11 23:33:52 UTC (rev 5446)
+++ mpich2/trunk/src/pm/hydra/ui/mpiexec/utils.c 2009-10-12 18:43:14 UTC (rev 5447)
@@ -168,6 +168,7 @@
HYD_handle.proxy_list->segment_list->proc_count = num_procs;
HYD_handle.proxy_list->core_count += num_procs;
+ HYD_handle.global_core_count += num_procs;
fn_exit:
HYDU_FUNC_EXIT();
@@ -224,6 +225,7 @@
}
HYD_handle.proxy_list->core_count += num_procs;
+ HYD_handle.global_core_count += num_procs;
}
pid += num_procs;
@@ -449,6 +451,7 @@
HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate process count\n");
exec_info->process_count = atoi(**argv);
+ HYD_handle.global_process_count += exec_info->process_count;
(*argv)++;
fn_exit:
Modified: mpich2/trunk/src/pm/hydra/ui/utils/uiu.c
===================================================================
--- mpich2/trunk/src/pm/hydra/ui/utils/uiu.c 2009-10-11 23:33:52 UTC (rev 5446)
+++ mpich2/trunk/src/pm/hydra/ui/utils/uiu.c 2009-10-12 18:43:14 UTC (rev 5447)
@@ -46,9 +46,10 @@
/* FIXME: Should the timers be initialized? */
+ HYD_handle.proxy_list = NULL;
HYD_handle.global_core_count = 0;
HYD_handle.exec_info_list = NULL;
- HYD_handle.proxy_list = NULL;
+ HYD_handle.global_process_count = 0;
HYD_handle.func_depth = 0;
HYD_handle.stdin_buf_offset = 0;
@@ -192,9 +193,6 @@
HYDU_FUNC_ENTER();
- for (proxy = HYD_handle.proxy_list; proxy; proxy = proxy->next)
- HYD_handle.global_core_count += proxy->core_count;
-
proxy = HYD_handle.proxy_list;
exec_info = HYD_handle.exec_info_list;
proxy_rem_procs = proxy->core_count;
More information about the mpich2-commits
mailing list