From 5163f2b2968e9b00735ef791f884c7f1e2864f12 Mon Sep 17 00:00:00 2001 From: Brian Barrett Date: Thu, 1 Jun 2006 01:30:16 +0000 Subject: [PATCH] Fix for bug #36. The MX, MVAPI, and OpenIB components don't have support for progress threads, so we shouldn't build them or try to use them when support for progress threads has been requested. The TCP, GM, SELF, and SM BTLs should have progress thread support, so they aren't disabled. The Portals BTL isn't compiled on platforms with threads, so it doens't need to be updated. This commit was SVN r10156. --- config/ompi_check_mvapi.m4 | 4 ++++ config/ompi_check_mx.m4 | 4 ++++ config/ompi_check_openib.m4 | 4 ++++ ompi/mca/btl/mvapi/btl_mvapi_component.c | 9 +++++++++ ompi/mca/btl/mx/btl_mx_component.c | 5 +++++ ompi/mca/btl/openib/btl_openib_component.c | 9 +++++++++ 6 files changed, 35 insertions(+) diff --git a/config/ompi_check_mvapi.m4 b/config/ompi_check_mvapi.m4 index d89494f7cc..e140149674 100644 --- a/config/ompi_check_mvapi.m4 +++ b/config/ompi_check_mvapi.m4 @@ -74,6 +74,10 @@ AC_DEFUN([OMPI_CHECK_MVAPI],[ [ompi_check_mvapi_happy="yes"], [ompi_check_mvapi_happy="no"])]) + AS_IF([test "$ompi_check_mvapi_happy" = "yes" -a "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([MVAPI driver does not currently support progress threads. Disabling BTL.]) + ompi_check_mvapi_happy="no"]) + CPPFLAGS="$ompi_check_mvapi$1_save_CPPFLAGS"], [ompi_check_mvapi_happy="no"]) diff --git a/config/ompi_check_mx.m4 b/config/ompi_check_mx.m4 index de723c4215..477f2b3ce5 100644 --- a/config/ompi_check_mx.m4 +++ b/config/ompi_check_mx.m4 @@ -114,6 +114,10 @@ AC_DEFUN([OMPI_CHECK_MX],[ LDFLAGS="$ompi_check_mx_$1_save_LDFLAGS" LIBS="$ompi_check_mx_$1_save_LIBS" + AS_IF([test "$ompi_check_mx_happy" = "yes" -a "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([MX driver does not currently support progress threads. Disabling BTL.]) + ompi_check_mx_happy="no"]) + AS_IF([test "$ompi_check_mx_happy" = "yes"], [$2], [AS_IF([test ! -z "$with_mx" -a "$with_mx" != "no"], diff --git a/config/ompi_check_openib.m4 b/config/ompi_check_openib.m4 index 6335154bd9..0398ecd4e1 100644 --- a/config/ompi_check_openib.m4 +++ b/config/ompi_check_openib.m4 @@ -131,6 +131,10 @@ AC_DEFUN([OMPI_CHECK_OPENIB],[ LIBS="$ompi_check_openib_$1_save_LIBS"], [ompi_check_openib_happy="no"]) + AS_IF([test "$ompi_check_openib_happy" = "yes" -a "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([OpenIB driver does not currently support progress threads. Disabling BTL.]) + ompi_check_openib_happy="no"]) + AS_IF([test "$ompi_check_openib_happy" = "yes"], [$2], [AS_IF([test ! -z "$with_openib" -a "$with_openib" != "no"], diff --git a/ompi/mca/btl/mvapi/btl_mvapi_component.c b/ompi/mca/btl/mvapi/btl_mvapi_component.c index dc33f318bf..d40047e98d 100644 --- a/ompi/mca/btl/mvapi/btl_mvapi_component.c +++ b/ompi/mca/btl/mvapi/btl_mvapi_component.c @@ -353,6 +353,15 @@ mca_btl_base_module_t** mca_btl_mvapi_component_init(int *num_btl_modules, /* initialization */ *num_btl_modules = 0; + /* mvapi BTL does not currently support progress threads, so + disable the component if they were requested */ + if (enable_progress_threads) { + mca_btl_base_error_no_nics("MVAPI", "HCA"); + mca_btl_mvapi_component.ib_num_btls = 0; + mca_btl_mvapi_modex_send(); + return NULL; + } + /* Determine the number of hca's available on the host */ vapi_ret=EVAPI_list_hcas(0, &num_hcas, NULL); if( VAPI_EAGAIN != vapi_ret || 0 == num_hcas ) { diff --git a/ompi/mca/btl/mx/btl_mx_component.c b/ompi/mca/btl/mx/btl_mx_component.c index 262ff3dd28..e0ab22c390 100644 --- a/ompi/mca/btl/mx/btl_mx_component.c +++ b/ompi/mca/btl/mx/btl_mx_component.c @@ -230,6 +230,11 @@ mca_btl_base_module_t** mca_btl_mx_component_init(int *num_btl_modules, *num_btl_modules = 0; + if (enable_progress_threads) { + opal_output( 0, "mca_btl_mx_component_init: progress threads requested but not supported"); + return NULL; + } + /* set the MX error handle to always return. This function is the only MX function * allowed to be called before mx_init in order to make sure that if the MX is not * up and running the MX library does not exit the application. diff --git a/ompi/mca/btl/openib/btl_openib_component.c b/ompi/mca/btl/openib/btl_openib_component.c index 25a78bd32b..afef8ae65e 100644 --- a/ompi/mca/btl/openib/btl_openib_component.c +++ b/ompi/mca/btl/openib/btl_openib_component.c @@ -339,6 +339,15 @@ mca_btl_base_module_t** mca_btl_openib_component_init(int *num_btl_modules, *num_btl_modules = 0; num_devs = 0; + /* openib BTL does not currently support progress threads, so + disable the component if they were requested */ + if (enable_progress_threads) { + mca_btl_base_error_no_nics("OpenIB", "HCA"); + mca_btl_openib_component.ib_num_btls = 0; + mca_btl_openib_modex_send(); + return NULL; + } + seedv[0] = orte_process_info.my_name->vpid; seedv[1] = opal_sys_timer_get_cycles(); seedv[2] = opal_sys_timer_get_cycles();