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.
Этот коммит содержится в:
родитель
1c6b5a1358
Коммит
d30bbc2ef9
20
README
20
README
@ -894,12 +894,30 @@ MISCELLANEOUS SUPPORT LIBRARIES
|
|||||||
affinity information for NUMA platforms.
|
affinity information for NUMA platforms.
|
||||||
|
|
||||||
--with-hwloc-libdir=<directory>
|
--with-hwloc-libdir=<directory>
|
||||||
|
|
||||||
Look in directory for the hwloc libraries. This option is only
|
Look in directory for the hwloc libraries. This option is only
|
||||||
usable when building Open MPI against an external hwloc
|
usable when building Open MPI against an external hwloc
|
||||||
installation. Just like other --with-FOO-libdir configure options,
|
installation. Just like other --with-FOO-libdir configure options,
|
||||||
this option is only needed for special configurations.
|
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]
|
--with-libltdl[=VALUE]
|
||||||
This option specifies where to find the GNU Libtool libltdl support
|
This option specifies where to find the GNU Libtool libltdl support
|
||||||
library. The following VALUEs are permitted:
|
library. The following VALUEs are permitted:
|
||||||
|
@ -63,6 +63,42 @@ AC_DEFUN([MCA_opal_hwloc_CONFIG_REQUIRE],[
|
|||||||
AC_HELP_STRING([--with-hwloc(=DIR)],
|
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.]))
|
[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
|
# set defaults of not having any support
|
||||||
opal_hwloc_base_enable_xml=0
|
opal_hwloc_base_enable_xml=0
|
||||||
OPAL_HAVE_HWLOC=0
|
OPAL_HAVE_HWLOC=0
|
||||||
@ -74,6 +110,9 @@ AC_DEFUN([MCA_opal_hwloc_CONFIG_REQUIRE],[
|
|||||||
# REQUIRE.
|
# REQUIRE.
|
||||||
MCA_CONFIGURE_FRAMEWORK([opal], [hwloc], 1)
|
MCA_CONFIGURE_FRAMEWORK([opal], [hwloc], 1)
|
||||||
|
|
||||||
|
# Restore the --enable-pci flag
|
||||||
|
enable_pci=$opal_hwloc_hwloc132_save_enable_pci
|
||||||
|
|
||||||
# Strip any leading/trailing spaces
|
# Strip any leading/trailing spaces
|
||||||
opal_hwloc_winner=`echo $MCA_opal_hwloc_STATIC_COMPONENTS | sed -e 's/^[ ]+//' | sed -e 's/[ ]+$//'`
|
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_DEFUN([MCA_opal_hwloc_hwloc132_CONFIG],[
|
||||||
AC_CONFIG_FILES([opal/mca/hwloc/hwloc132/Makefile])
|
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
|
# default to this component not providing support
|
||||||
opal_hwloc_hwloc132_basedir=opal/mca/hwloc/hwloc132
|
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_LDFLAGS=$LDFLAGS
|
||||||
opal_hwloc_hwloc132_save_LIBS=$LIBS
|
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
|
# Run the hwloc configuration - set the prefix to minimize
|
||||||
# the chance that someone will use the internal symbols
|
# the chance that someone will use the internal symbols
|
||||||
HWLOC_SET_SYMBOL_PREFIX([opal_hwloc132_])
|
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"],
|
AS_IF([test -n "$opal_hwloc_hwloc132_save_xml"],
|
||||||
[enable_xml=$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
|
CPPFLAGS=$opal_hwloc_hwloc132_save_CPPFLAGS
|
||||||
LDFLAGS=$opal_hwloc_hwloc132_save_LDFLAGS
|
LDFLAGS=$opal_hwloc_hwloc132_save_LDFLAGS
|
||||||
LIBS=$opal_hwloc_hwloc132_save_LIBS
|
LIBS=$opal_hwloc_hwloc132_save_LIBS
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user