[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