[mpich2-commits] r4004 - in mpich2/trunk/src/pm/hydra: include launcher/mpiexec pm/central utils/launch

balaji at mcs.anl.gov balaji at mcs.anl.gov
Wed Mar 11 01:36:06 CDT 2009


Author: balaji
Date: 2009-03-11 01:36:05 -0500 (Wed, 11 Mar 2009)
New Revision: 4004

Modified:
   mpich2/trunk/src/pm/hydra/include/hydra.h
   mpich2/trunk/src/pm/hydra/include/hydra_utils.h
   mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c
   mpich2/trunk/src/pm/hydra/pm/central/central_launch.c
   mpich2/trunk/src/pm/hydra/utils/launch/args.c
Log:
With this fix, the proxy does not have to be in the user's path.

Modified: mpich2/trunk/src/pm/hydra/include/hydra.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra.h	2009-03-10 22:51:05 UTC (rev 4003)
+++ mpich2/trunk/src/pm/hydra/include/hydra.h	2009-03-11 06:36:05 UTC (rev 4004)
@@ -16,6 +16,8 @@
     int enablex;
     char *wdir;
 
+    char *base_path;
+
     char *host_file;
 
     /* Global environment */

Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-03-10 22:51:05 UTC (rev 4003)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-03-11 06:36:05 UTC (rev 4004)
@@ -65,6 +65,7 @@
 HYD_Status HYDU_Allocate_Partition(struct HYD_Partition_list **partition);
 HYD_Status HYDU_Create_process(char **client_arg, int *in, int *out, int *err, int *pid);
 HYD_Status HYDU_Dump_args(char **args);
+HYD_Status HYDU_Get_base_path(char *execname, char **path);
 
 
 /* Memory utilities */
@@ -88,7 +89,7 @@
 #define HYDU_STRDUP(src, dest, type, status)                            \
     {                                                                   \
         (dest) = (type) MPIU_Strdup((src));                             \
-        if ((p) == NULL) {                                              \
+        if ((dest) == NULL) {                                           \
             HYDU_Error_printf("failed duping string %s\n", (src));      \
             (status) = HYD_INTERNAL_ERROR;                              \
             goto fn_fail;                                               \

Modified: mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c	2009-03-10 22:51:05 UTC (rev 4003)
+++ mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c	2009-03-11 06:36:05 UTC (rev 4004)
@@ -109,6 +109,12 @@
     handle.wdir = NULL;
     handle.host_file = NULL;
 
+    status = HYDU_Get_base_path(argv[0], &handle.base_path);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("unable to get base path\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Env_global_list(&handle.global_env);
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("unable to get the global env list\n");

Modified: mpich2/trunk/src/pm/hydra/pm/central/central_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/central_launch.c	2009-03-10 22:51:05 UTC (rev 4003)
+++ mpich2/trunk/src/pm/hydra/pm/central/central_launch.c	2009-03-11 06:36:05 UTC (rev 4004)
@@ -42,6 +42,7 @@
     int process_id, group_id;
     char hostname[MAX_HOSTNAME_LEN];
     HYD_Env_t *env;
+    char *path_str[HYDU_NUM_JOIN_STR];
     struct HYD_Proc_params *proc_params;
     struct HYD_Partition_list *partition;
     HYD_Status status = HYD_SUCCESS;
@@ -140,7 +141,12 @@
             HYDU_Append_wdir(partition->args, handle.wdir);
 
             for (arg = 0; partition->args[arg]; arg++);
-            partition->args[arg++] = MPIU_Strdup("proxy");
+            i = 0;
+            path_str[i++] = MPIU_Strdup(handle.base_path);
+            path_str[i++] = MPIU_Strdup("proxy");
+            path_str[i] = NULL;
+            HYDU_STR_ALLOC_AND_JOIN(path_str, partition->args[arg], status);
+            arg++;
 
             HYDU_Int_to_str(partition->proc_count, str, status);
             partition->args[arg++] = MPIU_Strdup("--proc-count");

Modified: mpich2/trunk/src/pm/hydra/utils/launch/args.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/args.c	2009-03-10 22:51:05 UTC (rev 4003)
+++ mpich2/trunk/src/pm/hydra/utils/launch/args.c	2009-03-11 06:36:05 UTC (rev 4004)
@@ -98,3 +98,30 @@
     HYDU_FUNC_EXIT();
     return status;
 }
+
+
+HYD_Status HYDU_Get_base_path(char * execname, char **path)
+{
+    char * str[HYDU_NUM_JOIN_STR];
+    int i;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    i = 0;
+    str[i++] = strtok(execname, "/");
+    do {
+        str[i++] = "/";
+        str[i++] = strtok(NULL, "/");
+    } while (str[i-1]);
+    str[i-3] = NULL;
+
+    HYDU_STR_ALLOC_AND_JOIN(str, *path, status);
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}



More information about the mpich2-commits mailing list