1
1

Fix an old issue: enable hwloc PCI detection except on SuSE 10 64 bit.

Worked with Oracle to verify that hwloc PCI detection is correctly
disabled on the Suse 10/64 bit platform and is enabled by default on
all other platforms.  The --[en|dis]able-hwloc-pci switch is also
available for manual override of the configure decision about hwloc
PCI support.

This commit was SVN r26175.
Этот коммит содержится в:
Jeff Squyres 2012-03-22 11:30:57 +00:00
родитель 1c6b5a1358
Коммит d30bbc2ef9
3 изменённых файлов: 59 добавлений и 10 удалений

20
README
Просмотреть файл

@ -894,12 +894,30 @@ MISCELLANEOUS SUPPORT LIBRARIES
affinity information for NUMA platforms.
--with-hwloc-libdir=<directory>
Look in directory for the hwloc libraries. This option is only
usable when building Open MPI against an external hwloc
installation. Just like other --with-FOO-libdir configure options,
this option is only needed for special configurations.
--disable-hwloc-pci
Disable building hwloc's PCI device-sensing capabilities. On some
platforms (e.g., SusE 10 SP1, x86-64), the libpci support library is
broken. Open MPI's configure script should usually detect when
libpci is not usable due to such brokenness and turn off PCI
support, but there may be cases when configure mistakenly enables
PCI support in the presence of a broken libpci. These cases may
result in "make" failing with warnings about relocation symbols in
libpci. The --disable-hwloc-pci switch can be used to force Open
MPI to not build hwloc's PCI device-sensing capabilities in these
cases.
Similarly, if Open MPI incorrectly decides that libpci is broken,
you can force Open MPI to build hwloc's PCI device-sensing
capabilities by using --enable-hwloc-pci.
hwloc can discover PCI devices and locality, which can be useful for
Open MPI in assigning message passing resources to MPI processes.
--with-libltdl[=VALUE]
This option specifies where to find the GNU Libtool libltdl support
library. The following VALUEs are permitted:

Просмотреть файл

@ -63,6 +63,42 @@ AC_DEFUN([MCA_opal_hwloc_CONFIG_REQUIRE],[
AC_HELP_STRING([--with-hwloc(=DIR)],
[Build hwloc support. DIR can take one of three values: "internal", "external", or a valid directory name. "internal" (or no DIR value) forces Open MPI to use its internal copy of hwloc. "external" forces Open MPI to use an external installation of hwloc. Supplying a valid directory name also forces Open MPI to use an external installation of hwloc, and adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries.]))
# Whether to enable or disable PCI support in embedded hwloc
# support.
AC_ARG_ENABLE([hwloc-pci],
AC_HELP_STRING([When building the embedded hwloc, whether to enable or disable PCI device support. Some operating system distros (e.g., SuSE 10) have a broken libpci.a that will cause Open MPI to fail to build due to relocation errors. Normally, Open MPI's configure script will automatically choose whether to enable or disable PCI device support in hwloc, but this option can be used to override Open MPI's default decision.]))
# This is terrible. :-( Suse 10.1 has only libpci.a (no
# libpci.so) for 64 bit, and it apparently isn't compiled with
# -fPIC (their 32 bit version is fine). Hence, if we try to build
# mca_hwloc_hwloc132.so and link against -lpci, the suse linker
# will choke because libpci wasn't built with -fPIC. But it gets
# worse: we can't reliably test for linking against libpci here
# because only libtool knows how to build DSOs, and we haven't
# setup libtool yet. So we can't actually test for this bad
# behavior. :-(
#
# As a terrible, terrible workaround, we're just going to test for
# Suse 10. If you're on suse 10, we're going to assume libpci is
# broken, and will disable it by default. I hate making tests
# based on specific version numbers, but I'm out of ideas here.
# :-(
AC_MSG_CHECKING([whether to enable hwloc PCI device support])
AS_IF([test "$enable_hwloc_pci" = "yes"],
[AC_MSG_RESULT([yes (--enable-hwloc-pci specified)])
enable_pci=yes],
[AS_IF([test "$enable_hwloc_pci" = "no"],
[AC_MSG_RESULT([no (--disable-hwloc-pci specified)])
enable_pci=no],
[hwloc_base_pci=`grep "SUSE Linux Enterprise Server 10 SP1" /etc/issue`
AS_IF([test "$hwloc_base_pci" != "" -a "$ac_cv_sizeof_void_p" = "8"],
[AC_MSG_RESULT([no (SuSE 10/64 bit)])
enable_pci=no],
[AC_MSG_RESULT([yes (default)])
enable_pci=yes])
])
])
# set defaults of not having any support
opal_hwloc_base_enable_xml=0
OPAL_HAVE_HWLOC=0
@ -74,6 +110,9 @@ AC_DEFUN([MCA_opal_hwloc_CONFIG_REQUIRE],[
# REQUIRE.
MCA_CONFIGURE_FRAMEWORK([opal], [hwloc], 1)
# Restore the --enable-pci flag
enable_pci=$opal_hwloc_hwloc132_save_enable_pci
# Strip any leading/trailing spaces
opal_hwloc_winner=`echo $MCA_opal_hwloc_STATIC_COMPONENTS | sed -e 's/^[ ]+//' | sed -e 's/[ ]+$//'`

Просмотреть файл

@ -42,7 +42,7 @@ AC_DEFUN([MCA_opal_hwloc_hwloc132_POST_CONFIG],[
AC_DEFUN([MCA_opal_hwloc_hwloc132_CONFIG],[
AC_CONFIG_FILES([opal/mca/hwloc/hwloc132/Makefile])
OPAL_VAR_SCOPE_PUSH([HWLOC_VERSION opal_hwloc_hwloc132_save_CPPFLAGS opal_hwloc_hwloc132_save_LDFLAGS opal_hwloc_hwloc132_save_LIBS opal_hwloc_hwloc132_save_cairo opal_hwloc_hwloc132_save_xml opal_hwloc_hwloc132_basedir opal_hwloc_hwloc132_file opal_hwloc_hwloc132_save_enable_pci opal_hwloc_hwloc132_save_cflags])
OPAL_VAR_SCOPE_PUSH([HWLOC_VERSION opal_hwloc_hwloc132_save_CPPFLAGS opal_hwloc_hwloc132_save_LDFLAGS opal_hwloc_hwloc132_save_LIBS opal_hwloc_hwloc132_save_cairo opal_hwloc_hwloc132_save_xml opal_hwloc_hwloc132_basedir opal_hwloc_hwloc132_file opal_hwloc_hwloc132_save_cflags])
# default to this component not providing support
opal_hwloc_hwloc132_basedir=opal/mca/hwloc/hwloc132
@ -53,13 +53,6 @@ AC_DEFUN([MCA_opal_hwloc_hwloc132_CONFIG],[
opal_hwloc_hwloc132_save_LDFLAGS=$LDFLAGS
opal_hwloc_hwloc132_save_LIBS=$LIBS
# Disable PCI support for now, until we can get a proper fix
# for Oralce's builds on older SuSE machines that only have
# libpci.a (and support Oracle's weird dual-bitness build
# mojo).
opal_hwloc_hwloc132_save_enable_pci=$enable_pci
enable_pci=no
# Run the hwloc configuration - set the prefix to minimize
# the chance that someone will use the internal symbols
HWLOC_SET_SYMBOL_PREFIX([opal_hwloc132_])
@ -100,7 +93,6 @@ AC_DEFUN([MCA_opal_hwloc_hwloc132_CONFIG],[
AS_IF([test -n "$opal_hwloc_hwloc132_save_xml"],
[enable_xml=$opal_hwloc_hwloc132_save_xml])
enable_pci=$opal_hwloc_hwloc132_save_enable_pci
CPPFLAGS=$opal_hwloc_hwloc132_save_CPPFLAGS
LDFLAGS=$opal_hwloc_hwloc132_save_LDFLAGS
LIBS=$opal_hwloc_hwloc132_save_LIBS