[mpich2-commits] r5641 - mpich2/trunk/src/pm/hydra/pm/pmiserv

balaji at mcs.anl.gov balaji at mcs.anl.gov
Fri Oct 30 19:01:13 CDT 2009


Author: balaji
Date: 2009-10-30 19:01:13 -0500 (Fri, 30 Oct 2009)
New Revision: 5641

Modified:
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy.h
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c
Log:
Fix for the MPICH_INTERFACE_HOSTNAME issue (ticket #903). Now Hydra
will automatically pick the hostname specified by the user in the
hostfile as the preferred communication interface. With this, Hydra
should work more correctly as described in
http://wiki.mcs.anl.gov/mpich2/index.php/Using_the_Hydra_Process_Manager#Hydra_with_Non-Ethernet_Networks

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy.h
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy.h	2009-10-30 23:03:34 UTC (rev 5640)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy.h	2009-10-31 00:01:13 UTC (rev 5641)
@@ -46,6 +46,8 @@
     /* Proxy details */
     struct {
         int id;
+        char *hostname;
+
         int proxy_core_count;
         int proxy_process_count;
 

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c	2009-10-30 23:03:34 UTC (rev 5640)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c	2009-10-31 00:01:13 UTC (rev 5641)
@@ -35,6 +35,7 @@
     HYD_pmcd_pmip.downstream.exit_status = NULL;
 
     HYD_pmcd_pmip.local.id = -1;
+    HYD_pmcd_pmip.local.hostname = NULL;
     HYD_pmcd_pmip.local.proxy_core_count = 0;
     HYD_pmcd_pmip.local.proxy_process_count = 0;
     HYD_pmcd_pmip.local.procs_are_launched = 0;
@@ -172,6 +173,13 @@
             continue;
         }
 
+        /* Hostname (as specified by the user) */
+        if (!strcmp(*argv, "--hostname")) {
+            argv++;
+            HYD_pmcd_pmip.local.hostname = HYDU_strdup(*argv);
+            continue;
+        }
+
         /* Process count */
         if (!strcmp(*argv, "--proxy-core-count")) {
             argv++;
@@ -413,6 +421,9 @@
     if (HYD_pmcd_pmip.downstream.exit_status)
         HYDU_FREE(HYD_pmcd_pmip.downstream.exit_status);
 
+    if (HYD_pmcd_pmip.local.hostname)
+        HYDU_FREE(HYD_pmcd_pmip.local.hostname);
+
     HYDT_bind_finalize();
 
     /* Reinitialize all params to set everything to "NULL" or
@@ -606,6 +617,16 @@
             HYDU_ERR_POP(status, "unable to add env to list\n");
         }
 
+        /* Set the MPICH_INTERFACE_HOSTNAME based on what the user provided */
+        if (HYD_pmcd_pmip.local.hostname) {
+            status = HYDU_env_create(&env, "MPICH_INTERFACE_HOSTNAME",
+                                     HYD_pmcd_pmip.local.hostname);
+            HYDU_ERR_POP(status, "unable to create env\n");
+
+            status = HYDU_append_env_to_list(*env, &prop_env);
+            HYDU_ERR_POP(status, "unable to add env to list\n");
+        }
+
         for (i = 0; i < exec->proc_count; i++) {
             pmi_id = HYDU_local_to_global_id(process_id,
                                              HYD_pmcd_pmip.start_pid,

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c	2009-10-30 23:03:34 UTC (rev 5640)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c	2009-10-31 00:01:13 UTC (rev 5641)
@@ -229,6 +229,9 @@
         HYDU_MALLOC(proxy->exec_launch_info, char **, total_args * sizeof(char *), status);
 
         arg = 0;
+        proxy->exec_launch_info[arg++] = HYDU_strdup("--hostname");
+        proxy->exec_launch_info[arg++] = HYDU_strdup(proxy->hostname);
+
         proxy->exec_launch_info[arg++] = HYDU_strdup("--global-core-count");
         proxy->exec_launch_info[arg++] = HYDU_int_to_str(HYD_handle.global_core_count);
 



More information about the mpich2-commits mailing list