1
1
openmpi/config/ompi_setup_prrte.m4
Ralph Castain 95dacd2086
Fix singletons and ensure adequate PMIx version
OMPI can only support PMIx v3 and above. PRRTE requires at least PMIx
v4, so protect against the case where OMPI is built against an external
PMIx v3.

Fix check of PMIx_Init return code for singleton operations.

Ensure that the PMIx framework gets properly opened.

Signed-off-by: Ralph Castain <rhc@pmix.org>
2020-03-23 10:29:42 -07:00

134 строки
6.4 KiB
Bash

# -*- shell-script -*-
#
# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved.
# Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights
# reserved.
# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
# Copyright (c) 2019-2020 Intel, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
AC_DEFUN([OMPI_SETUP_PRRTE],[
OPAL_VAR_SCOPE_PUSH([opal_prrte_save_CPPFLAGS opal_prrte_save_CFLAGS opal_prrte_save_LDFLAGS opal_prrte_save_LIBS opal_prrte_args opal_prrte_save_enable_dlopen opal_prrte_save_enable_mca_dso opal_prrte_save_enable_mca_static])
opal_prrte_save_CFLAGS=$CFLAGS
opal_prrte_save_CPPFLAGS=$CPPFLAGS
opal_prrte_save_LDFLAGS=$LDFLAGS
opal_prrte_save_LIBS=$LIBS
opal_prrte_save_enable_dlopen=enable_dlopen
opal_prrte_save_enable_mca_dso=enable_mca_dso
opal_prrte_save_enable_mca_static=enable_mca_static
AC_ARG_ENABLE([internal-rte],
[AC_HELP_STRING([--enable-internal-rte],
[Enable internal runtime support and provide mpiexec/mpirun (default: enabled)])])
AC_ARG_WITH([prrte-platform],
[AC_HELP_STRING([--with-prrte-platform],
[Platform file to use when building the internal PRRTE runtime support])])
AC_ARG_ENABLE([prte-prefix-by-default],
[AC_HELP_STRING([--enable-prte-prefix-by-default],
[Make "mpirun ..." behave exactly the same as "mpirun --prefix \$prefix" (where \$prefix is the value given to --prefix in configure) (default:enabled)])])
AS_IF([test "$opal_external_pmix_happy" = "yes" && test $opal_numerical_pmix_version -lt 4 && test "$enable_internal_rte" != "no"],
[AC_MSG_WARN([OMPI's internal runtime environment "PRRTE" does not support])
AC_MSG_WARN([PMIx versions less than v4.x as they lack adequate tool])
AC_MSG_WARN([support. You can, if desired, build OMPI against an earlier])
AC_MSG_WARN([version of PMIx for strictly direct-launch purposes - e.g., using)])
AC_MSG_WARN([Slurm's srun to launch the job - by configuring with the])
AC_MSG_WARN([--disable-internal-rte option.])
AC_MSG_ERROR([Cannot continue])])
AC_MSG_CHECKING([if RTE support is enabled])
if test "$enable_internal_rte" != "no"; then
AC_MSG_RESULT([yes])
ompi_want_prrte=yes
if test -z $with_libevent || test "$with_libevent" = "internal" || test "$with_libevent" = "yes"; then
opal_prrte_libevent_arg="--with-libevent-header=$OMPI_TOP_SRCDIR/opal/mca/event/event.h"
elif test "$with_libevent" = "external"; then
opal_prrte_libevent_arg=""
else
opal_prrte_libevent_arg="--with-libevent=$with_libevent"
fi
if test -z $with_hwloc || test "$with_hwloc" = "internal" || test "$with_hwloc" = "yes"; then
opal_prrte_hwloc_arg="--with-hwloc-header=$OMPI_TOP_SRCDIR/opal/mca/hwloc/hwloc-internal.h"
elif test "$with_hwloc" = "external"; then
opal_prrte_hwloc_arg=""
else
opal_prrte_hwloc_arg="--with-hwloc=$with_hwloc"
fi
if test -z $with_pmix || test "$with_pmix" = "internal" || test "$with_pmix" = "yes"; then
opal_prrte_pmix_arg="--with-pmix-header=$OMPI_TOP_SRCDIR/opal/mca/pmix/pmix-internal.h"
elif test "$with_pmix" = "external"; then
opal_prrte_pmix_arg=""
else
opal_prrte_pmix_arg="--with-pmix=$with_pmix"
fi
if test -z $enable_prte_prefix_by_default || test "$enable_prte_prefix_by_default" = "yes" ||
test "$enable_orterun_prefix_given" = "yes"; then
opal_prrte_prefix_arg="--enable-prte-prefix-by-default"
else
opal_prrte_prefix_arg=
fi
opal_prrte_args="--prefix=$prefix $opal_prrte_prefix_arg $opal_prrte_libevent_arg $opal_prrte_hwloc_arg $opal_prrte_pmix_arg"
AS_IF([test "$enable_debug" = "yes"],
[opal_prrte_args="--enable-debug $opal_prrte_args"
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS -g"],
[opal_prrte_args="--disable-debug $opal_prrte_args"
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS"])
AS_IF([test "$with_devel_headers" = "yes"],
[opal_prrte_args="--with-devel-headers $opal_prrte_args"])
if test ! -z $with_prrte_platform && test "$with_prrte_platform" != "yes"; then
opal_prrte_args="$opal_prrte_args --with-platform=$with_prrte_platform"
fi
# add the extra libs
opal_prrte_args="$opal_prrte_args --with-prrte-extra-lib=$OMPI_TOP_BUILDDIR/opal/libopen-pal.la --with-prrte-extra-ltlib=$OMPI_TOP_BUILDDIR/opal/libopen-pal.la"
AC_MSG_CHECKING([final prrte configure args])
AC_MSG_RESULT([$opal_prrte_args])
CPPFLAGS="-I$OPAL_TOP_SRCDIR -I$OPAL_TOP_BUILDDIR -I$OPAL_TOP_SRCDIR/opal/include -I$OPAL_TOP_BUILDDIR/opal/include $CPPFLAGS"
OPAL_CONFIG_SUBDIR([prrte],
[$opal_prrte_args $opal_subdir_args 'CFLAGS=$CFLAGS' 'CPPFLAGS=$CPPFLAGS'],
[opal_prrte_happy=1], [opal_prrte_happy=0])
OPAL_SUMMARY_ADD([[Miscellaneous]],[[PRRTE]],[prrte],[yes])
else
OPAL_SUMMARY_ADD([[Miscellaneous]],[[PRRTE]],[prrte],[no (disabled)])
AC_MSG_RESULT([no (disabled)])
ompi_want_prrte=no
fi
CFLAGS=$opal_prrte_save_CFLAGS
CPPFLAGS=$opal_prrte_save_CPPFLAGS
LDFLAGS=$opal_prrte_save_LDFLAGS
LIBS=$opal_prrte_save_LIBS
enable_dlopen=$opal_prrte_save_enable_dlopen
enable_mca_dso=$opal_prrte_save_enable_mca_dso
enable_mca_static=$opal_prrte_save_enable_mca_static
OPAL_VAR_SCOPE_POP
])