[mpich2-commits] r7759 - in mpich2/trunk/src/pm/hydra: pm/pmiserv tools/bootstrap/external tools/bootstrap/include tools/bootstrap/src tools/bootstrap/utils

balaji at mcs.anl.gov balaji at mcs.anl.gov
Wed Jan 19 16:50:20 CST 2011


Author: balaji
Date: 2011-01-19 16:50:20 -0600 (Wed, 19 Jan 2011)
New Revision: 7759

Added:
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_job_id.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_job_id.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_query_job_id.c
Modified:
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.h
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_cb.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h
   mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
   mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h
Log:
Initial code for allowing Hydra to query for the job ID information
(required for FTB support). Only implemented for PBS for now.

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -21,6 +21,7 @@
 
     HYD_pmcd_pmip.system_global.global_core_count = -1;
     HYD_pmcd_pmip.system_global.global_process_count = -1;
+    HYD_pmcd_pmip.system_global.job_id = NULL;
     HYD_pmcd_pmip.system_global.pmi_port = NULL;
     HYD_pmcd_pmip.system_global.pmi_fd = NULL;
     HYD_pmcd_pmip.system_global.pmi_rank = -1;
@@ -62,6 +63,9 @@
     HYDU_finalize_user_global(&HYD_pmcd_pmip.user_global);
 
     /* System global */
+    if (HYD_pmcd_pmip.system_global.job_id)
+        HYDU_FREE(HYD_pmcd_pmip.system_global.job_id);
+
     if (HYD_pmcd_pmip.system_global.pmi_fd)
         HYDU_FREE(HYD_pmcd_pmip.system_global.pmi_fd);
 

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.h
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.h	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.h	2011-01-19 22:50:20 UTC (rev 7759)
@@ -16,6 +16,7 @@
     struct {
         int global_core_count;
         int global_process_count;
+        char *job_id;
 
         /* PMI */
         char *pmi_fd;

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_cb.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_cb.c	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_cb.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -603,6 +603,13 @@
             HYDU_ERR_POP(status, "unable to add env to list\n");
         }
 
+        /* Job ID information */
+        if (HYD_pmcd_pmip.system_global.job_id) {
+            status = HYDU_append_env_to_list("HYDRA_JOBID", HYD_pmcd_pmip.system_global.job_id,
+                                             &force_env);
+            HYDU_ERR_POP(status, "unable to add env to list\n");
+        }
+
         /* Set the interface hostname based on what the user provided */
         if (HYD_pmcd_pmip.local.interface_env_name) {
             if (HYD_pmcd_pmip.user_global.iface) {

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -468,6 +468,11 @@
         HYDU_ERR_POP(status, "unable to query launcher for proxy ID\n");
     }
 
+    if (HYD_pmcd_pmip.system_global.job_id == NULL) {
+        status = HYDT_bsci_query_job_id(&HYD_pmcd_pmip.system_global.job_id);
+        HYDU_ERR_POP(status, "unable to query launcher for job ID\n");
+    }
+
     if (HYD_pmcd_pmip.local.id == -1)
         HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "proxy ID not available\n");
 

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk	2011-01-19 22:50:20 UTC (rev 7759)
@@ -18,4 +18,5 @@
 	$(top_srcdir)/tools/bootstrap/external/ll_query_proxy_id.c \
 	$(top_srcdir)/tools/bootstrap/external/lsf_query_node_list.c \
 	$(top_srcdir)/tools/bootstrap/external/sge_query_node_list.c \
-	$(top_srcdir)/tools/bootstrap/external/pbs_query_node_list.c
+	$(top_srcdir)/tools/bootstrap/external/pbs_query_node_list.c \
+	$(top_srcdir)/tools/bootstrap/external/pbs_query_job_id.c

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -26,8 +26,10 @@
     if (!strcmp(HYDT_bsci_info.rmk, "sge"))
         HYDT_bsci_fns.query_node_list = HYDT_bscd_sge_query_node_list;
 
-    if (!strcmp(HYDT_bsci_info.rmk, "pbs"))
+    if (!strcmp(HYDT_bsci_info.rmk, "pbs")) {
         HYDT_bsci_fns.query_node_list = HYDT_bscd_pbs_query_node_list;
+        HYDT_bsci_fns.query_job_id = HYDT_bscd_pbs_query_job_id;
+    }
 
     /* for everything else, set default values */
     if (HYDT_bsci_fns.query_native_int == NULL)

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h	2011-01-19 22:50:20 UTC (rev 7759)
@@ -10,5 +10,6 @@
 #include "hydra.h"
 
 HYD_status HYDT_bscd_pbs_query_node_list(struct HYD_node **node_list);
+HYD_status HYDT_bscd_pbs_query_job_id(char **job_id);
 
 #endif /* PBS_H_INCLUDED */

Added: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_job_id.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_job_id.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_job_id.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -0,0 +1,25 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra.h"
+#include "bsci.h"
+#include "pbs.h"
+
+HYD_status HYDT_bscd_pbs_query_job_id(char **job_id)
+{
+    HYD_status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    MPL_env2str("PBS_JOBID", (const char **) job_id);
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in	2011-01-19 22:50:20 UTC (rev 7759)
@@ -45,6 +45,9 @@
     /** \brief Query for node list information */
     HYD_status(*query_node_list) (struct HYD_node **node_list);
 
+    /** \brief Query for job ID information */
+    HYD_status(*query_job_id) (char **job_id);
+
     /** \brief Finalize the RMK */
     HYD_status(*rmk_finalize) (void);
 
@@ -151,6 +154,16 @@
 
 
 /**
+ * \brief HYDT_bsci_query_job_id - Query for Job ID information
+ *
+ * \param[out] job_id       Job ID
+ *
+ * This function allows the upper layers to query the job ID.
+ */
+HYD_status HYDT_bsci_query_job_id(char **job_id);
+
+
+/**
  * \brief HYDT_bsci_query_usize - Query for the universe size
  *
  * \param[out]  size       Maximum number of processes that can be launched

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/Makefile.mk	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/Makefile.mk	2011-01-19 22:50:20 UTC (rev 7759)
@@ -8,6 +8,7 @@
 	$(top_srcdir)/tools/bootstrap/src/bsci_finalize.c \
 	$(top_srcdir)/tools/bootstrap/src/bsci_launch.c \
 	$(top_srcdir)/tools/bootstrap/src/bsci_query_node_list.c \
+	$(top_srcdir)/tools/bootstrap/src/bsci_query_job_id.c \
 	$(top_srcdir)/tools/bootstrap/src/bsci_query_proxy_id.c \
 	$(top_srcdir)/tools/bootstrap/src/bsci_query_native_int.c \
 	$(top_srcdir)/tools/bootstrap/src/bsci_usize.c \

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in	2011-01-19 22:50:20 UTC (rev 7759)
@@ -20,6 +20,7 @@
 {
     HYDT_bsci_fns.query_native_int = NULL;
     HYDT_bsci_fns.query_node_list = NULL;
+    HYDT_bsci_fns.query_job_id = NULL;
     HYDT_bsci_fns.rmk_finalize = NULL;
 }
 
@@ -39,6 +40,8 @@
         HYDT_bsci_fns.query_native_int = HYDT_bscu_query_native_int;
     if (HYDT_bsci_fns.query_node_list == NULL)
         HYDT_bsci_fns.query_node_list = HYDT_bscu_query_node_list;
+    if (HYDT_bsci_fns.query_job_id == NULL)
+        HYDT_bsci_fns.query_job_id = HYDT_bscu_query_job_id;
     if (HYDT_bsci_fns.rmk_finalize == NULL)
         HYDT_bsci_fns.rmk_finalize = HYDT_bscu_rmk_finalize;
 }

Added: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_job_id.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_job_id.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_job_id.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -0,0 +1,26 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra.h"
+#include "bsci.h"
+#include "bscu.h"
+
+HYD_status HYDT_bsci_query_job_id(char **job_id)
+{
+    HYD_status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    status = HYDT_bsci_fns.query_job_id(job_id);
+    HYDU_ERR_POP(status, "RMK returned error while querying job ID\n");
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/Makefile.mk	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/Makefile.mk	2011-01-19 22:50:20 UTC (rev 7759)
@@ -8,6 +8,7 @@
 
 libhydra_la_SOURCES += $(top_srcdir)/tools/bootstrap/utils/bscu_finalize.c \
 	$(top_srcdir)/tools/bootstrap/utils/bscu_query_node_list.c \
+	$(top_srcdir)/tools/bootstrap/utils/bscu_query_job_id.c \
 	$(top_srcdir)/tools/bootstrap/utils/bscu_query_proxy_id.c \
 	$(top_srcdir)/tools/bootstrap/utils/bscu_query_native_int.c \
 	$(top_srcdir)/tools/bootstrap/utils/bscu_usize.c \

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h	2011-01-19 22:50:18 UTC (rev 7758)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h	2011-01-19 22:50:20 UTC (rev 7759)
@@ -18,6 +18,7 @@
 HYD_status HYDT_bscu_rmk_finalize(void);
 HYD_status HYDT_bscu_launcher_finalize(void);
 HYD_status HYDT_bscu_query_node_list(struct HYD_node **node_list);
+HYD_status HYDT_bscu_query_job_id(char **job_id);
 HYD_status HYDT_bscu_query_usize(int *size);
 HYD_status HYDT_bscu_query_proxy_id(int *proxy_id);
 HYD_status HYDT_bscu_wait_for_completion(int timeout);

Added: mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_query_job_id.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_query_job_id.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_query_job_id.c	2011-01-19 22:50:20 UTC (rev 7759)
@@ -0,0 +1,22 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra.h"
+#include "bscu.h"
+
+HYD_status HYDT_bscu_query_job_id(char **job_id)
+{
+    HYD_status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    /* We don't know anything about job ID */
+    *job_id = NULL;
+
+    HYDU_FUNC_EXIT();
+
+    return status;
+}



More information about the mpich2-commits mailing list