From 1aa1c2e9b45f7e092cfbb2061a13dab1dbda6378 Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Mon, 10 Oct 2011 21:39:10 +0000 Subject: [PATCH] Get the slurm pmi support working. Cannot use infiniband, of course, as the oob can't make the connection - may try other existing methods. Modex may not quite be working right yet as odin was having trouble making TCP connections, but at least the configure now works so things build, so save that for now This commit was SVN r25247. --- orte/config/orte_check_slurm.m4 | 39 +++++++++++++++++++++++++++++-- orte/mca/grpcomm/pmi/Makefile.am | 6 +++-- orte/mca/grpcomm/pmi/configure.m4 | 13 +++++++++-- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/orte/config/orte_check_slurm.m4 b/orte/config/orte_check_slurm.m4 index 12df36e429..69d1177ec9 100644 --- a/orte/config/orte_check_slurm.m4 +++ b/orte/config/orte_check_slurm.m4 @@ -27,6 +27,22 @@ AC_DEFUN([ORTE_CHECK_SLURM],[ AC_ARG_WITH([slurm-pmi], [AC_HELP_STRING([--with-slurm-pmi], [Build SLURM PMI support (default: no)])]) + AC_ARG_WITH([slurm-pmi-libdir], + [AC_HELP_STRING([--with-slurm-pmi-libdir=DIR], + [Search for SLURM PMI libraries in DIR ])]) + + # Defaults + orte_check_slurm_dir= + orte_check_slurm_libdir= + orte_check_slurm_dir_msg="compiler default" + orte_check_slurm_libdir_msg="linker default" + # Save directory names if supplied + AS_IF([test ! -z "$with_slurm" -a "$with_slurm" != "yes"], + [orte_check_slurm_dir="$with_slurm" + orte_check_slurm_dir_msg="$orte_check_slurm_dir (from --with-slurm)"]) + AS_IF([test ! -z "$with_slurm_pmi_libdir" -a "$with_slurm_pmi_libdir" != "yes"], + [orte_check_slurm_libdir="$with_slurm_pmi_libdir" + orte_check_slurm_libdir_msg="$orte_check_slurm_pmi_libdir (from --with-slurm-pmi-libdir)"]) if test "$with_slurm" = "no" ; then orte_check_slurm_happy="no" @@ -68,13 +84,25 @@ AC_DEFUN([ORTE_CHECK_SLURM],[ [orte_check_slurm_happy="yes"], [orte_check_slurm_happy="no"])]) + orte_check_slurm_$1_save_CPPFLAGS="$CPPFLAGS" + orte_check_slurm_$1_save_LDFLAGS="$LDFLAGS" + orte_check_slurm_$1_save_LIBS="$LIBS" + AC_MSG_CHECKING([if user requested PMI support]) orte_enable_slurm_pmi=0 AS_IF([test "$with_slurm_pmi" = "yes"], [AC_MSG_RESULT([yes]) orte_want_pmi_support=yes AC_MSG_CHECKING([if SLURM PMI support installed]) - AC_CHECK_HEADER([slurm/pmi.h], [orte_have_pmi_support=yes], [orte_have_pmi_support=no])] + OMPI_CHECK_PACKAGE([$1], + [slurm/pmi.h], + [pmi], + [PMI_Init], + [-lpmi], + [$orte_check_slurm_dir], + [$orte_check_slurm_libdir], + [orte_have_pmi_support="yes"], + [orte_have_pmi_support="no"]) AS_IF([test "$orte_have_pmi_support" = "yes"], [AC_MSG_RESULT([yes]) AC_MSG_WARN([SLURM PMI SUPPORT HAS BEEN INCLUDED - RESULTING]) @@ -83,13 +111,20 @@ AC_DEFUN([ORTE_CHECK_SLURM],[ orte_enable_slurm_pmi=1], [AC_MSG_RESULT([no]) AC_MSG_WARN([SLURM PMI support requested (via --with-slurm-pmi) but not found.]) - AC_MSG_ERROR([Aborting.])]), + AC_MSG_ERROR([Aborting.])])], [AC_MSG_RESULT([no]) orte_want_pmi_support=no]) AC_DEFINE_UNQUOTED([WANT_SLURM_PMI_SUPPORT], [$orte_enable_slurm_pmi], [Whether we want SLURM PMI support]) + CPPFLAGS="$orte_check_slurm_$1_save_CPPFLAGS" + LDFLAGS="$orte_check_slurm_$1_save_LDFLAGS" + LIBS="$orte_check_slurm_$1_save_LIBS" + + # Reset for the next time we're called + orte_check_slurm_dir= + AS_IF([test "$orte_check_slurm_happy" = "yes"], [$2], [$3]) diff --git a/orte/mca/grpcomm/pmi/Makefile.am b/orte/mca/grpcomm/pmi/Makefile.am index 6a5f5ad18e..b424d04e44 100644 --- a/orte/mca/grpcomm/pmi/Makefile.am +++ b/orte/mca/grpcomm/pmi/Makefile.am @@ -27,8 +27,10 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_grpcomm_pmi_la_SOURCES = $(sources) -mca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version +mca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version $(grpcomm_pmi_LDFLAGS) +mca_grpcomm_pmi_la_LIBADD = $(grpcomm_pmi_LIBS) noinst_LTLIBRARIES = $(component_noinst) libmca_grpcomm_pmi_la_SOURCES =$(sources) -libmca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version +libmca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version $(grpcomm_pmi_LDFLAGS) +libmca_grpcomm_pmi_la_LIBADD = $(grpcomm_pmi_LIBS) diff --git a/orte/mca/grpcomm/pmi/configure.m4 b/orte/mca/grpcomm/pmi/configure.m4 index 11ec7050bd..cac7544ea5 100644 --- a/orte/mca/grpcomm/pmi/configure.m4 +++ b/orte/mca/grpcomm/pmi/configure.m4 @@ -14,10 +14,19 @@ AC_DEFUN([MCA_orte_grpcomm_pmi_PRIORITY], [10]) AC_DEFUN([MCA_orte_grpcomm_pmi_CONFIG], [ AC_CONFIG_FILES([orte/mca/grpcomm/pmi/Makefile]) + ORTE_CHECK_SLURM([grpcomm_pmi], [grpcomm_pmi_good=1], [grpcomm_pmi_good=0]) + + # if check worked, set wrapper flags if so. # Evaluate succeed / fail - AS_IF([test "$orte_enable_slurm_pmi" = "1"], - [$1], + AS_IF([test "$grpcomm_pmi_good" = "1"], + [grpcomm_pmi_WRAPPER_EXTRA_LDFLAGS="$grpcomm_pmi_LDFLAGS" + grpcomm_pmiWRAPPER_EXTRA_LIBS="$grpcomm_pmi_LIBS" + $1], [$2]) + # set build flags to use in makefile + AC_SUBST([grpcomm_pmi_CPPFLAGS]) + AC_SUBST([grpcomm_pmi_LDFLAGS]) + AC_SUBST([grpcomm_pmi_LIBS]) ])