[mpich2-commits] r5457 - in mpich2/trunk/src/pm/hydra/utils: . alloc launch others
balaji at mcs.anl.gov
balaji at mcs.anl.gov
Wed Oct 14 06:35:56 CDT 2009
Author: balaji
Date: 2009-10-14 06:35:56 -0500 (Wed, 14 Oct 2009)
New Revision: 5457
Added:
mpich2/trunk/src/pm/hydra/utils/alloc/
mpich2/trunk/src/pm/hydra/utils/alloc/Makefile.mk
mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c
mpich2/trunk/src/pm/hydra/utils/others/
mpich2/trunk/src/pm/hydra/utils/others/Makefile.mk
mpich2/trunk/src/pm/hydra/utils/others/others.c
Removed:
mpich2/trunk/src/pm/hydra/utils/launch/allocate.c
Modified:
mpich2/trunk/src/pm/hydra/utils/Makefile.mk
mpich2/trunk/src/pm/hydra/utils/launch/Makefile.mk
mpich2/trunk/src/pm/hydra/utils/launch/launch.c
Log:
Rearrange functionality into more appropriate files.
Modified: mpich2/trunk/src/pm/hydra/utils/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/Makefile.mk 2009-10-14 11:35:53 UTC (rev 5456)
+++ mpich2/trunk/src/pm/hydra/utils/Makefile.mk 2009-10-14 11:35:56 UTC (rev 5457)
@@ -4,10 +4,12 @@
# See COPYRIGHT in top-level directory.
#
+include utils/alloc/Makefile.mk
include utils/args/Makefile.mk
include utils/dbg/Makefile.mk
include utils/env/Makefile.mk
include utils/launch/Makefile.mk
+include utils/others/Makefile.mk
include utils/signals/Makefile.mk
include utils/sock/Makefile.mk
include utils/string/Makefile.mk
Copied: mpich2/trunk/src/pm/hydra/utils/alloc/Makefile.mk (from rev 5456, mpich2/trunk/src/pm/hydra/utils/launch/Makefile.mk)
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/alloc/Makefile.mk (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/alloc/Makefile.mk 2009-10-14 11:35:56 UTC (rev 5457)
@@ -0,0 +1,7 @@
+# -*- Mode: Makefile; -*-
+#
+# (C) 2008 by Argonne National Laboratory.
+# See COPYRIGHT in top-level directory.
+#
+
+libhydra_a_SOURCES += $(top_srcdir)/utils/alloc/alloc.c
Copied: mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c (from rev 5456, mpich2/trunk/src/pm/hydra/utils/launch/allocate.c)
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c 2009-10-14 11:35:56 UTC (rev 5457)
@@ -0,0 +1,182 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ * (C) 2008 by Argonne National Laboratory.
+ * See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra_utils.h"
+
+HYD_Status HYDU_alloc_proxy(struct HYD_Proxy **proxy)
+{
+ static int proxy_id = 0;
+ HYD_Status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ HYDU_MALLOC(*proxy, struct HYD_Proxy *, sizeof(struct HYD_Proxy), status);
+
+ (*proxy)->hostname = NULL;
+ (*proxy)->pid = -1;
+ (*proxy)->in = -1;
+ (*proxy)->out = -1;
+ (*proxy)->err = -1;
+
+ (*proxy)->proxy_id = proxy_id++;
+ (*proxy)->active = 0;
+ (*proxy)->exec_args = NULL;
+
+ (*proxy)->segment_list = NULL;
+ (*proxy)->proxy_core_count = 0;
+
+ (*proxy)->exit_status = NULL;
+ (*proxy)->control_fd = -1;
+
+ (*proxy)->exec_list = NULL;
+ (*proxy)->next = NULL;
+
+ fn_exit:
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
+
+
+HYD_Status HYDU_alloc_exec_info(struct HYD_Exec_info **exec_info)
+{
+ HYD_Status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ HYDU_MALLOC(*exec_info, struct HYD_Exec_info *, sizeof(struct HYD_Exec_info), status);
+ (*exec_info)->process_count = 0;
+ (*exec_info)->exec[0] = NULL;
+ (*exec_info)->user_env = NULL;
+ (*exec_info)->env_prop = NULL;
+ (*exec_info)->next = NULL;
+
+ fn_exit:
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
+
+
+void HYDU_free_exec_info_list(struct HYD_Exec_info *exec_info_list)
+{
+ struct HYD_Exec_info *exec_info, *run;
+
+ HYDU_FUNC_ENTER();
+
+ exec_info = exec_info_list;
+ while (exec_info) {
+ run = exec_info->next;
+ HYDU_free_strlist(exec_info->exec);
+
+ if (exec_info->env_prop)
+ HYDU_FREE(exec_info->env_prop);
+
+ HYDU_env_free_list(exec_info->user_env);
+ exec_info->user_env = NULL;
+
+ HYDU_FREE(exec_info);
+ exec_info = run;
+ }
+
+ HYDU_FUNC_EXIT();
+}
+
+
+void HYDU_free_proxy_list(struct HYD_Proxy *proxy_list)
+{
+ struct HYD_Proxy *proxy, *tproxy;
+ struct HYD_Proxy_segment *segment, *tsegment;
+ struct HYD_Proxy_exec *exec, *texec;
+
+ HYDU_FUNC_ENTER();
+
+ proxy = proxy_list;
+ while (proxy) {
+ tproxy = proxy->next;
+
+ if (proxy->hostname)
+ HYDU_FREE(proxy->hostname);
+ if (proxy->exec_args) {
+ HYDU_free_strlist(proxy->exec_args);
+ HYDU_FREE(proxy->exec_args);
+ }
+
+ segment = proxy->segment_list;
+ while (segment) {
+ tsegment = segment->next;
+ HYDU_FREE(segment);
+ segment = tsegment;
+ }
+
+ if (proxy->exit_status)
+ HYDU_FREE(proxy->exit_status);
+
+ exec = proxy->exec_list;
+ while (exec) {
+ texec = exec->next;
+ HYDU_free_strlist(exec->exec);
+ if (exec->user_env)
+ HYDU_env_free(exec->user_env);
+ if (exec->env_prop)
+ HYDU_FREE(exec->env_prop);
+ HYDU_FREE(exec);
+ exec = texec;
+ }
+
+ HYDU_FREE(proxy);
+ proxy = tproxy;
+ }
+
+ HYDU_FUNC_EXIT();
+}
+
+
+HYD_Status HYDU_alloc_proxy_segment(struct HYD_Proxy_segment **segment)
+{
+ HYD_Status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ HYDU_MALLOC(*segment, struct HYD_Proxy_segment *,
+ sizeof(struct HYD_Proxy_segment), status);
+ (*segment)->start_pid = -1;
+ (*segment)->proc_count = 0;
+ (*segment)->next = NULL;
+
+ fn_exit:
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
+
+
+HYD_Status HYDU_alloc_proxy_exec(struct HYD_Proxy_exec **exec)
+{
+ HYD_Status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ HYDU_MALLOC(*exec, struct HYD_Proxy_exec *, sizeof(struct HYD_Proxy_exec), status);
+ (*exec)->exec[0] = NULL;
+ (*exec)->proc_count = 0;
+ (*exec)->env_prop = NULL;
+ (*exec)->user_env = NULL;
+ (*exec)->next = NULL;
+
+ fn_exit:
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
Modified: mpich2/trunk/src/pm/hydra/utils/launch/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/Makefile.mk 2009-10-14 11:35:53 UTC (rev 5456)
+++ mpich2/trunk/src/pm/hydra/utils/launch/Makefile.mk 2009-10-14 11:35:56 UTC (rev 5457)
@@ -4,5 +4,4 @@
# See COPYRIGHT in top-level directory.
#
-libhydra_a_SOURCES += $(top_srcdir)/utils/launch/allocate.c \
- $(top_srcdir)/utils/launch/launch.c
+libhydra_a_SOURCES += $(top_srcdir)/utils/launch/launch.c
Deleted: mpich2/trunk/src/pm/hydra/utils/launch/allocate.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/allocate.c 2009-10-14 11:35:53 UTC (rev 5456)
+++ mpich2/trunk/src/pm/hydra/utils/launch/allocate.c 2009-10-14 11:35:56 UTC (rev 5457)
@@ -1,235 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- * (C) 2008 by Argonne National Laboratory.
- * See COPYRIGHT in top-level directory.
- */
-
-#include "hydra_utils.h"
-
-HYD_Status HYDU_alloc_proxy(struct HYD_Proxy **proxy)
-{
- static int proxy_id = 0;
- HYD_Status status = HYD_SUCCESS;
-
- HYDU_FUNC_ENTER();
-
- HYDU_MALLOC(*proxy, struct HYD_Proxy *, sizeof(struct HYD_Proxy), status);
-
- (*proxy)->hostname = NULL;
- (*proxy)->pid = -1;
- (*proxy)->in = -1;
- (*proxy)->out = -1;
- (*proxy)->err = -1;
-
- (*proxy)->proxy_id = proxy_id++;
- (*proxy)->active = 0;
- (*proxy)->exec_args = NULL;
-
- (*proxy)->segment_list = NULL;
- (*proxy)->proxy_core_count = 0;
-
- (*proxy)->exit_status = NULL;
- (*proxy)->control_fd = -1;
-
- (*proxy)->exec_list = NULL;
- (*proxy)->next = NULL;
-
- fn_exit:
- HYDU_FUNC_EXIT();
- return status;
-
- fn_fail:
- goto fn_exit;
-}
-
-
-HYD_Status HYDU_alloc_exec_info(struct HYD_Exec_info **exec_info)
-{
- HYD_Status status = HYD_SUCCESS;
-
- HYDU_FUNC_ENTER();
-
- HYDU_MALLOC(*exec_info, struct HYD_Exec_info *, sizeof(struct HYD_Exec_info), status);
- (*exec_info)->process_count = 0;
- (*exec_info)->exec[0] = NULL;
- (*exec_info)->user_env = NULL;
- (*exec_info)->env_prop = NULL;
- (*exec_info)->next = NULL;
-
- fn_exit:
- HYDU_FUNC_EXIT();
- return status;
-
- fn_fail:
- goto fn_exit;
-}
-
-
-void HYDU_free_exec_info_list(struct HYD_Exec_info *exec_info_list)
-{
- struct HYD_Exec_info *exec_info, *run;
-
- HYDU_FUNC_ENTER();
-
- exec_info = exec_info_list;
- while (exec_info) {
- run = exec_info->next;
- HYDU_free_strlist(exec_info->exec);
-
- if (exec_info->env_prop)
- HYDU_FREE(exec_info->env_prop);
-
- HYDU_env_free_list(exec_info->user_env);
- exec_info->user_env = NULL;
-
- HYDU_FREE(exec_info);
- exec_info = run;
- }
-
- HYDU_FUNC_EXIT();
-}
-
-
-void HYDU_free_proxy_list(struct HYD_Proxy *proxy_list)
-{
- struct HYD_Proxy *proxy, *tproxy;
- struct HYD_Proxy_segment *segment, *tsegment;
- struct HYD_Proxy_exec *exec, *texec;
-
- HYDU_FUNC_ENTER();
-
- proxy = proxy_list;
- while (proxy) {
- tproxy = proxy->next;
-
- if (proxy->hostname)
- HYDU_FREE(proxy->hostname);
- if (proxy->exec_args) {
- HYDU_free_strlist(proxy->exec_args);
- HYDU_FREE(proxy->exec_args);
- }
-
- segment = proxy->segment_list;
- while (segment) {
- tsegment = segment->next;
- HYDU_FREE(segment);
- segment = tsegment;
- }
-
- if (proxy->exit_status)
- HYDU_FREE(proxy->exit_status);
-
- exec = proxy->exec_list;
- while (exec) {
- texec = exec->next;
- HYDU_free_strlist(exec->exec);
- if (exec->user_env)
- HYDU_env_free(exec->user_env);
- if (exec->env_prop)
- HYDU_FREE(exec->env_prop);
- HYDU_FREE(exec);
- exec = texec;
- }
-
- HYDU_FREE(proxy);
- proxy = tproxy;
- }
-
- HYDU_FUNC_EXIT();
-}
-
-
-HYD_Status HYDU_alloc_proxy_segment(struct HYD_Proxy_segment **segment)
-{
- HYD_Status status = HYD_SUCCESS;
-
- HYDU_FUNC_ENTER();
-
- HYDU_MALLOC(*segment, struct HYD_Proxy_segment *,
- sizeof(struct HYD_Proxy_segment), status);
- (*segment)->start_pid = -1;
- (*segment)->proc_count = 0;
- (*segment)->next = NULL;
-
- fn_exit:
- HYDU_FUNC_EXIT();
- return status;
-
- fn_fail:
- goto fn_exit;
-}
-
-
-HYD_Status HYDU_merge_proxy_segment(char *hostname, struct HYD_Proxy_segment *segment,
- struct HYD_Proxy **proxy_list)
-{
- struct HYD_Proxy *proxy;
- struct HYD_Proxy_segment *s;
- HYD_Status status = HYD_SUCCESS;
-
- HYDU_FUNC_ENTER();
-
- if (*proxy_list == NULL) {
- status = HYDU_alloc_proxy(proxy_list);
- HYDU_ERR_POP(status, "Unable to alloc proxy\n");
- (*proxy_list)->segment_list = segment;
- (*proxy_list)->hostname = HYDU_strdup(hostname);
- (*proxy_list)->proxy_core_count += segment->proc_count;
- }
- else {
- proxy = *proxy_list;
- while (proxy) {
- if (strcmp(proxy->hostname, hostname) == 0) {
- if (proxy->segment_list == NULL)
- proxy->segment_list = segment;
- else {
- s = proxy->segment_list;
- while (s->next)
- s = s->next;
- s->next = segment;
- }
- proxy->proxy_core_count += segment->proc_count;
- break;
- }
- else if (proxy->next == NULL) {
- status = HYDU_alloc_proxy(&proxy->next);
- HYDU_ERR_POP(status, "Unable to alloc proxy\n");
- proxy->next->segment_list = segment;
- proxy->next->hostname = HYDU_strdup(hostname);
- proxy->next->proxy_core_count += segment->proc_count;
- break;
- }
- else {
- proxy = proxy->next;
- }
- }
- }
-
- fn_exit:
- HYDU_FUNC_EXIT();
- return status;
- fn_fail:
- goto fn_exit;
-}
-
-
-HYD_Status HYDU_alloc_proxy_exec(struct HYD_Proxy_exec **exec)
-{
- HYD_Status status = HYD_SUCCESS;
-
- HYDU_FUNC_ENTER();
-
- HYDU_MALLOC(*exec, struct HYD_Proxy_exec *, sizeof(struct HYD_Proxy_exec), status);
- (*exec)->exec[0] = NULL;
- (*exec)->proc_count = 0;
- (*exec)->env_prop = NULL;
- (*exec)->user_env = NULL;
- (*exec)->next = NULL;
-
- fn_exit:
- HYDU_FUNC_EXIT();
- return status;
-
- fn_fail:
- goto fn_exit;
-}
Modified: mpich2/trunk/src/pm/hydra/utils/launch/launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/launch.c 2009-10-14 11:35:53 UTC (rev 5456)
+++ mpich2/trunk/src/pm/hydra/utils/launch/launch.c 2009-10-14 11:35:56 UTC (rev 5457)
@@ -172,24 +172,3 @@
goto fn_exit;
}
#endif /* HAVE_THREAD_SUPPORT */
-
-int HYDU_local_to_global_id(int local_id, int core_count,
- struct HYD_Proxy_segment *segment_list, int global_core_count)
-{
- int global_id, rem;
- struct HYD_Proxy_segment *segment;
-
- global_id = ((local_id / core_count) * global_core_count);
- rem = (local_id % core_count);
-
- for (segment = segment_list; segment; segment = segment->next) {
- if (rem >= segment->proc_count)
- rem -= segment->proc_count;
- else {
- global_id += segment->start_pid + rem;
- break;
- }
- }
-
- return global_id;
-}
Copied: mpich2/trunk/src/pm/hydra/utils/others/Makefile.mk (from rev 5456, mpich2/trunk/src/pm/hydra/utils/launch/Makefile.mk)
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/others/Makefile.mk (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/others/Makefile.mk 2009-10-14 11:35:56 UTC (rev 5457)
@@ -0,0 +1,7 @@
+# -*- Mode: Makefile; -*-
+#
+# (C) 2008 by Argonne National Laboratory.
+# See COPYRIGHT in top-level directory.
+#
+
+libhydra_a_SOURCES += $(top_srcdir)/utils/others/others.c
Added: mpich2/trunk/src/pm/hydra/utils/others/others.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/others/others.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/others/others.c 2009-10-14 11:35:56 UTC (rev 5457)
@@ -0,0 +1,80 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ * (C) 2008 by Argonne National Laboratory.
+ * See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra_utils.h"
+
+HYD_Status HYDU_merge_proxy_segment(char *hostname, struct HYD_Proxy_segment *segment,
+ struct HYD_Proxy **proxy_list)
+{
+ struct HYD_Proxy *proxy;
+ struct HYD_Proxy_segment *s;
+ HYD_Status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ if (*proxy_list == NULL) {
+ status = HYDU_alloc_proxy(proxy_list);
+ HYDU_ERR_POP(status, "Unable to alloc proxy\n");
+ (*proxy_list)->segment_list = segment;
+ (*proxy_list)->hostname = HYDU_strdup(hostname);
+ (*proxy_list)->proxy_core_count += segment->proc_count;
+ }
+ else {
+ proxy = *proxy_list;
+ while (proxy) {
+ if (strcmp(proxy->hostname, hostname) == 0) {
+ if (proxy->segment_list == NULL)
+ proxy->segment_list = segment;
+ else {
+ s = proxy->segment_list;
+ while (s->next)
+ s = s->next;
+ s->next = segment;
+ }
+ proxy->proxy_core_count += segment->proc_count;
+ break;
+ }
+ else if (proxy->next == NULL) {
+ status = HYDU_alloc_proxy(&proxy->next);
+ HYDU_ERR_POP(status, "Unable to alloc proxy\n");
+ proxy->next->segment_list = segment;
+ proxy->next->hostname = HYDU_strdup(hostname);
+ proxy->next->proxy_core_count += segment->proc_count;
+ break;
+ }
+ else {
+ proxy = proxy->next;
+ }
+ }
+ }
+
+ fn_exit:
+ HYDU_FUNC_EXIT();
+ return status;
+ fn_fail:
+ goto fn_exit;
+}
+
+int HYDU_local_to_global_id(int local_id, int core_count,
+ struct HYD_Proxy_segment *segment_list, int global_core_count)
+{
+ int global_id, rem;
+ struct HYD_Proxy_segment *segment;
+
+ global_id = ((local_id / core_count) * global_core_count);
+ rem = (local_id % core_count);
+
+ for (segment = segment_list; segment; segment = segment->next) {
+ if (rem >= segment->proc_count)
+ rem -= segment->proc_count;
+ else {
+ global_id += segment->start_pid + rem;
+ break;
+ }
+ }
+
+ return global_id;
+}
More information about the mpich2-commits
mailing list