1
1

Revise the approach towards the FT options. Include them in a new opal_setup_ft.m4 file. Capture the ft-thread option there as well since it had slipped thru the cracks. Add a detailed comment to configure.ac that describes how to make those options visible, if desired.

This commit was SVN r27969.
Этот коммит содержится в:
Ralph Castain 2013-01-29 18:30:41 +00:00
родитель de5b7f5c6a
Коммит 4fdc6f1127
3 изменённых файлов: 190 добавлений и 52 удалений

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

@ -214,57 +214,5 @@ AC_DEFINE_UNQUOTED([OPAL_ENABLE_MULTI_THREADS], [$OPAL_ENABLE_MULTI_THREADS],
AC_MSG_RESULT([$enable_opal_multi_threads])
#
# Fault Tolerance Thread
#
# --enable-ft-thread
# #if OPAL_ENABLE_FT_THREAD == 0 /* Disabled */
# #if OPAL_ENABLE_FT_THREAD == 1 /* Enabled */
#
AC_MSG_CHECKING([if want fault tolerance thread])
AC_ARG_ENABLE([ft_thread],
[AC_HELP_STRING([--disable-ft-thread],
[Disable fault tolerance thread running inside all processes. Requires OPAL thread support (default: enabled)])],
[enable_ft_thread="$enableval"],
[enable_ft_thread="undef"])
# if they do not want FT support, then they do not want this thread either
if test "$opal_want_ft" = "0"; then
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled (fault tolerance disabled --without-ft)])
# if --disable-ft-thread
elif test "$enable_ft_thread" = "no"; then
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled])
# if default, and no progress or MPI threads
elif test "$enable_ft_thread" = "undef" -a "$enable_opal_multi_threads" = "no" ; then
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled (OPAL Thread Support Disabled)])
# if default, and MPI threads enabled for C/R only
elif test "$opal_want_ft_cr" = 1; then
# Default: Enable
# Make sure we have OPAL Threads enabled
if test "$enable_opal_multi_threads" = "no"; then
AC_MSG_RESULT([Must enable OPAL basic thread support to use this option])
AC_MSG_ERROR([Cannot continue])
else
AC_MSG_RESULT([yes])
opal_want_ft_thread=1
AC_MSG_WARN([**************************************************])
AC_MSG_WARN([*** Fault Tolerance with a thread in Open MPI *])
AC_MSG_WARN([*** is an experimental, research quality option. *])
AC_MSG_WARN([*** It requires OPAL thread support and care *])
AC_MSG_WARN([*** should be used when enabling these options. *])
AC_MSG_WARN([**************************************************])
fi
# Otherwise disabled
else
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled (Non-C/R Fault Tolerance enabled)])
fi
AC_DEFINE_UNQUOTED([OPAL_ENABLE_FT_THREAD], [$opal_want_ft_thread],
[Enable fault tolerance thread in Open PAL])
AM_CONDITIONAL(WANT_FT_THREAD, test "$opal_want_ft_thread" = "1")
])dnl

167
config/opal_setup_ft.m4 Обычный файл
Просмотреть файл

@ -0,0 +1,167 @@
#
# --with-ft=TYPE
# TYPE:
# - LAM (synonym for 'cr' currently)
# - cr
# /* General FT sections */
# #if OPAL_ENABLE_FT == 0 /* FT Disabled globaly */
# #if OPAL_ENABLE_FT == 1 /* FT Enabled globaly */
# /* CR Specific sections */
# #if OPAL_ENABLE_FT_CR == 0 /* FT Ckpt/Restart Disabled */
# #if OPAL_ENABLE_FT_CR == 1 /* FT Ckpt/Restart Enabled */
#
# This macro is necessary to get the title to be displayed first. :-)
AC_DEFUN([OPAL_SETUP_FT_BANNER],[
ompi_show_subtitle "Fault tolerance"
])
AC_DEFUN([OPAL_SETUP_FT_OPTIONS],[
AC_REQUIRE([OPAL_SETUP_FT_BANNER])
# define a variable that tells us that these options were enabled
opal_setup_ft_options="yes"
AC_ARG_WITH(ft,
[AC_HELP_STRING([--with-ft=TYPE],
[Specify the type of fault tolerance to enable. Options: LAM (LAM/MPI-like), cr (Checkpoint/Restart), (default: disabled)])],
[opal_want_ft=1],
[opal_want_ft=0])
#
# Checkpoint/restart enabled debugging
#
AC_ARG_ENABLE([crdebug],
[AC_HELP_STRING([--enable-crdebug],
[enable checkpoint/restart debugging functionality (default: disabled)])])
#
# Fault Tolerance Thread
#
# --enable-ft-thread
# #if OPAL_ENABLE_FT_THREAD == 0 /* Disabled */
# #if OPAL_ENABLE_FT_THREAD == 1 /* Enabled */
#
AC_ARG_ENABLE([ft_thread],
[AC_HELP_STRING([--disable-ft-thread],
[Disable fault tolerance thread running inside all processes. Requires OPAL thread support (default: enabled)])],
[enable_ft_thread="$enableval"],
[enable_ft_thread="undef"])
])
AC_DEFUN([OPAL_SETUP_FT],[
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_CHECKING([if want fault tolerance])
fi
if test "x$with_ft" != "x" -o "$opal_want_ft" = "1"; then
opal_want_ft=1
opal_want_ft_cr=0
opal_want_ft_type=none
as_save_IFS=$IFS
IFS=","
for opt in $with_ft; do
IFS=$as_save_IFS
# Default value
if test "$opt" = "" -o "$opt" = "yes"; then
opal_want_ft_cr=1
elif test "$opt" = "LAM"; then
opal_want_ft_cr=1
elif test "$opt" = "lam"; then
opal_want_ft_cr=1
elif test "$opt" = "CR"; then
opal_want_ft_cr=1
elif test "$opt" = "cr"; then
opal_want_ft_cr=1
else
AC_MSG_RESULT([Unrecognized FT TYPE: $opt])
AC_MSG_ERROR([Cannot continue])
fi
done
if test "$opal_want_ft_cr" = 1; then
opal_want_ft_type="cr"
fi
AC_MSG_RESULT([Enabled $opal_want_ft_type (Specified $with_ft)])
AC_MSG_WARN([**************************************************])
AC_MSG_WARN([*** Fault Tolerance Integration into Open MPI is *])
AC_MSG_WARN([*** a research quality implementation, and care *])
AC_MSG_WARN([*** should be used when choosing to enable it. *])
AC_MSG_WARN([**************************************************])
else
opal_want_ft=0
opal_want_ft_cr=0
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_RESULT([Disabled fault tolerance])
fi
fi
AC_DEFINE_UNQUOTED([OPAL_ENABLE_FT], [$opal_want_ft],
[Enable fault tolerance general components and logic])
AC_DEFINE_UNQUOTED([OPAL_ENABLE_FT_CR], [$opal_want_ft_cr],
[Enable fault tolerance checkpoint/restart components and logic])
AM_CONDITIONAL(WANT_FT, test "$opal_want_ft" = "1")
AM_CONDITIONAL(WANT_FT_CR, test "$opal_want_ft_cr" = "1")
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_CHECKING([if want checkpoint/restart enabled debugging option])
fi
if test "$ompi_want_ft" = "0"; then
ompi_want_prd=0
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_RESULT([Disabled (fault tolerance disabled --without-ft)])
fi
elif test "$enable_crdebug" = "yes"; then
ompi_want_prd=1
AC_MSG_RESULT([Enabled])
else
ompi_want_prd=0
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_RESULT([Disabled])
fi
fi
AC_DEFINE_UNQUOTED([OPAL_ENABLE_CRDEBUG], [$ompi_want_prd],
[Whether we want checkpoint/restart enabled debugging functionality or not])
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_CHECKING([if want fault tolerance thread])
fi
# if they do not want FT support, then they do not want this thread either
if test "$opal_want_ft" = "0"; then
opal_want_ft_thread=0
if test "$opal_setup_ft_options" = "yes"; then
AC_MSG_RESULT([Disabled (fault tolerance disabled --without-ft)])
fi
# if --disable-ft-thread
elif test "$enable_ft_thread" = "no"; then
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled])
# if default, and no progress or MPI threads
elif test "$enable_ft_thread" = "undef" -a "$enable_opal_multi_threads" = "no" ; then
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled (OPAL Thread Support Disabled)])
# if default, and MPI threads enabled for C/R only
elif test "$opal_want_ft_cr" = 1; then
# Default: Enable
# Make sure we have OPAL Threads enabled
if test "$enable_opal_multi_threads" = "no"; then
AC_MSG_RESULT([Must enable OPAL basic thread support to use this option])
AC_MSG_ERROR([Cannot continue])
else
AC_MSG_RESULT([yes])
opal_want_ft_thread=1
AC_MSG_WARN([**************************************************])
AC_MSG_WARN([*** Fault Tolerance with a thread in Open MPI *])
AC_MSG_WARN([*** is an experimental, research quality option. *])
AC_MSG_WARN([*** It requires OPAL thread support and care *])
AC_MSG_WARN([*** should be used when enabling these options. *])
AC_MSG_WARN([**************************************************])
fi
# Otherwise disabled
else
opal_want_ft_thread=0
AC_MSG_RESULT([Disabled (Non-C/R Fault Tolerance enabled)])
fi
AC_DEFINE_UNQUOTED([OPAL_ENABLE_FT_THREAD], [$opal_want_ft_thread],
[Enable fault tolerance thread in Open PAL])
AM_CONDITIONAL(WANT_FT_THREAD, test "$opal_want_ft_thread" = "1")
])

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

@ -1007,6 +1007,29 @@ AC_INCLUDES_DEFAULT
# checkpoint results
AC_CACHE_SAVE
###########################################################
# Fault Tolerance
#
# The FT code in the OMPI trunk is currently broken. We don't
# have an active maintainer for it at this time, and it isn't
# clear if/when we will return to it. We have therefore removed
# the configure options supporting it until such time as it
# can be fixed.
#
# However, we recognize that there are researchers who use this
# option on their independent branches. In such cases, simply
# uncomment the line below to render the FT configure options
# visible again
#
###########################################################
#OPAL_SETUP_FT_OPTIONS
###########################################################
# The following line is always required as it contains the
# AC_DEFINE and AM_CONDITIONAL calls that set variables used
# throughout the build system. If the above line is commented
# out, then those variables will be set to "off". Otherwise,
# they are controlled by the options
OPAL_SETUP_FT
##################################
# MCA