[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