[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